gpml2pvjson
Version:
convert GPML (XML) to pvjson (json)
72 lines • 5.12 kB
JavaScript
import { isArray, } from "lodash";
import { curry, sortBy } from "lodash/fp";
import { intersectsLSV } from "./spinoffs/jsonld-utils";
export * from "./geom-utils";
export * from "./spinoffs/jsonld-utils";
/*
* This is needed because PublicationXref rdf:id values and
* GPML GraphId values are not necessarily mutually exclusive
* and unique within a given pathway.
* For example, WP306, version 80308, has rdf:id="d8a" and
* a DataNode with GraphId="d8a".
*/
export function generatePublicationXrefId(originalId) {
return "publicationXref" + originalId;
}
export const insertIfNotExists = curry(function (item, list) {
if (list.indexOf(item) === -1) {
list.push(item);
}
return list;
});
export function isAttachablePoint(pvjsonPoint) {
return pvjsonPoint.hasOwnProperty("attachmentDisplay");
}
export function isDefinedCXML(x) {
// NOTE: we need the array checks to handle cases like this:
// [ XmlType { _exists: false, _extended: true } ]
return (typeof x !== "undefined" &&
x._exists !== false &&
(!isArray(x) || (x.length > 0 && x[0]._exists !== false)));
}
export function isPvjsonBurr(entity) {
return intersectsLSV(entity.type, "Burr");
}
export function isPvjsonGroup(entity) {
return (entity.hasOwnProperty("contains") && intersectsLSV(entity.type, "Group"));
}
export function isPvjsonSingleFreeNode(entity) {
return entity.kaavioType === "SingleFreeNode";
}
export function isPvjsonNode(entity) {
return ["SingleFreeNode", "Burr", "Group"].indexOf(entity.kaavioType) > -1;
/*
return (
entity.hasOwnProperty("x") &&
entity.hasOwnProperty("y") &&
entity.hasOwnProperty("width") &&
entity.hasOwnProperty("height")
);
//*/
}
export function isPvjsonEdge(entity) {
return entity.hasOwnProperty("points");
}
export function isPvjsonEdgeOrBurr(entity) {
return isPvjsonEdge(entity) || isPvjsonBurr(entity);
}
export function isGPMLAnchor(entity) {
return entity.gpmlElementName === "Anchor";
}
export const sortByMap = curry(function (mapToSortBy, listToSort) {
return sortBy(function (listItem) {
return mapToSortBy[listItem];
}, listToSort);
});
export const supportedNamespaces = [
"http://pathvisio.org/GPML/2013a",
"http://genmapp.org/GPML/2010a",
"http://genmapp.org/GPML/2008a",
"http://genmapp.org/GPML/2007",
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3BtbC11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ3BtbC11dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLE9BQU8sR0FNUixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFheEQsY0FBYyxjQUFjLENBQUM7QUFFN0IsY0FBYyx5QkFBeUIsQ0FBQztBQUV4Qzs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQUMsVUFBa0I7SUFDMUQsT0FBTyxpQkFBaUIsR0FBRyxVQUFVLENBQUM7QUFDeEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxVQUFhLElBQU8sRUFBRSxJQUFTO0lBQ3BFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2pCO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsV0FBb0M7SUFFcEMsT0FBTyxXQUFXLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDekQsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsQ0FBTTtJQUNsQyw0REFBNEQ7SUFDNUQsa0RBQWtEO0lBQ2xELE9BQU8sQ0FDTCxPQUFPLENBQUMsS0FBSyxXQUFXO1FBQ3hCLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSztRQUNuQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUMxRCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBb0I7SUFDL0MsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUFvQjtJQUNoRCxPQUFPLENBQ0wsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FDekUsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLE1BQW9CO0lBRXBCLE9BQU8sTUFBTSxDQUFDLFVBQVUsS0FBSyxnQkFBZ0IsQ0FBQztBQUNoRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUFvQjtJQUMvQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0U7Ozs7Ozs7VUFPRztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQW9CO0lBQy9DLE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxNQUFvQjtJQUVwQixPQUFPLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBb0I7SUFDL0MsT0FBTyxNQUFNLENBQUMsZUFBZSxLQUFLLFFBQVEsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxVQUM3QixXQUFtQyxFQUNuQyxVQUFvQjtJQUVwQixPQUFPLE1BQU0sQ0FBQyxVQUFVLFFBQVE7UUFDOUIsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0IsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsaUNBQWlDO0lBQ2pDLCtCQUErQjtJQUMvQiwrQkFBK0I7SUFDL0IsOEJBQThCO0NBQy9CLENBQUMifQ==