Spaces:
Build error
Build error
| import * as _ from 'lodash-es'; | |
| import { Graph } from './graph.js'; | |
| export { write, read }; | |
| function write(g) { | |
| var json = { | |
| options: { | |
| directed: g.isDirected(), | |
| multigraph: g.isMultigraph(), | |
| compound: g.isCompound(), | |
| }, | |
| nodes: writeNodes(g), | |
| edges: writeEdges(g), | |
| }; | |
| if (!_.isUndefined(g.graph())) { | |
| json.value = _.clone(g.graph()); | |
| } | |
| return json; | |
| } | |
| function writeNodes(g) { | |
| return _.map(g.nodes(), function (v) { | |
| var nodeValue = g.node(v); | |
| var parent = g.parent(v); | |
| var node = { v: v }; | |
| if (!_.isUndefined(nodeValue)) { | |
| node.value = nodeValue; | |
| } | |
| if (!_.isUndefined(parent)) { | |
| node.parent = parent; | |
| } | |
| return node; | |
| }); | |
| } | |
| function writeEdges(g) { | |
| return _.map(g.edges(), function (e) { | |
| var edgeValue = g.edge(e); | |
| var edge = { v: e.v, w: e.w }; | |
| if (!_.isUndefined(e.name)) { | |
| edge.name = e.name; | |
| } | |
| if (!_.isUndefined(edgeValue)) { | |
| edge.value = edgeValue; | |
| } | |
| return edge; | |
| }); | |
| } | |
| function read(json) { | |
| var g = new Graph(json.options).setGraph(json.value); | |
| _.each(json.nodes, function (entry) { | |
| g.setNode(entry.v, entry.value); | |
| if (entry.parent) { | |
| g.setParent(entry.v, entry.parent); | |
| } | |
| }); | |
| _.each(json.edges, function (entry) { | |
| g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value); | |
| }); | |
| return g; | |
| } | |