@graphty/graph-io 0.3.24 → 0.3.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -414
- package/dist/chunks/children-CL3Cy0ez.js.map +1 -1
- package/dist/chunks/choose-BbJI55dx.js +56 -0
- package/dist/chunks/choose-BbJI55dx.js.map +1 -0
- package/dist/chunks/constants-BCsFsMj4.js +231 -0
- package/dist/chunks/constants-BCsFsMj4.js.map +1 -0
- package/dist/chunks/{escape-B-tkk_Cl.js → escape-D0g6NNUy.js} +382 -92
- package/dist/chunks/escape-D0g6NNUy.js.map +1 -0
- package/dist/chunks/export-BTI4yQgy.js +4333 -0
- package/dist/chunks/export-BTI4yQgy.js.map +1 -0
- package/dist/chunks/exporter-BMqk5oxW.js +3465 -0
- package/dist/chunks/exporter-BMqk5oxW.js.map +1 -0
- package/dist/chunks/{importer-eUREhBGj.js → exporter-Cra2GYcN.js} +4969 -3201
- package/dist/chunks/exporter-Cra2GYcN.js.map +1 -0
- package/dist/chunks/{exporter-BGrsWamJ.js → exporter-Dxh231ZF.js} +38 -229
- package/dist/chunks/exporter-Dxh231ZF.js.map +1 -0
- package/dist/chunks/{exporter-DIeGJXAZ.js → exporter-tne475KK.js} +22 -20
- package/dist/chunks/exporter-tne475KK.js.map +1 -0
- package/dist/chunks/importer-90YWhJoF.js +2811 -0
- package/dist/chunks/importer-90YWhJoF.js.map +1 -0
- package/dist/chunks/{importer-D_e7e7LX.js → importer-Bcl1d4xH.js} +398 -145
- package/dist/chunks/importer-Bcl1d4xH.js.map +1 -0
- package/dist/chunks/{importer-BWY2FFc5.js → importer-BfIsp1f9.js} +255 -77
- package/dist/chunks/importer-BfIsp1f9.js.map +1 -0
- package/dist/chunks/{importer-zGLo8Dg_.js → importer-C_TEA1zJ.js} +484 -157
- package/dist/chunks/importer-C_TEA1zJ.js.map +1 -0
- package/dist/chunks/{importer-DET1tg6s.js → importer-DCjOvO7U.js} +1687 -310
- package/dist/chunks/importer-DCjOvO7U.js.map +1 -0
- package/dist/chunks/{importer-vi3bSdtw.js → importer-DfVu6j59.js} +509 -76
- package/dist/chunks/importer-DfVu6j59.js.map +1 -0
- package/dist/chunks/{importer-DIrbbnAf.js → importer-Dku_VAIY.js} +585 -226
- package/dist/chunks/importer-Dku_VAIY.js.map +1 -0
- package/dist/chunks/json-elements-3tnyt5uZ.js +1225 -0
- package/dist/chunks/json-elements-3tnyt5uZ.js.map +1 -0
- package/dist/chunks/ontology-export-B9Tcf37D.js +357 -0
- package/dist/chunks/ontology-export-B9Tcf37D.js.map +1 -0
- package/dist/chunks/{records-dbRkxwaq.js → records-CQXT__mY.js} +298 -114
- package/dist/chunks/records-CQXT__mY.js.map +1 -0
- package/dist/chunks/{text-Dr0Ifpag.js → text-DmcUs5_Q.js} +29 -11
- package/dist/chunks/text-DmcUs5_Q.js.map +1 -0
- package/dist/chunks/{writer-C7flM-Ih.js → writer-DxjgHwSe.js} +19 -1
- package/dist/chunks/writer-DxjgHwSe.js.map +1 -0
- package/dist/csv.js +951 -261
- package/dist/csv.js.map +1 -1
- package/dist/cx.js +6 -3
- package/dist/cx2.js +2 -2
- package/dist/cys.js +6 -3
- package/dist/dot.js +1 -1
- package/dist/gexf.js +554 -122
- package/dist/gexf.js.map +1 -1
- package/dist/gml.js +342 -85
- package/dist/gml.js.map +1 -1
- package/dist/graph-io.js +1105 -213
- package/dist/graph-io.js.map +1 -1
- package/dist/graphml.js +3 -2
- package/dist/graphml.js.map +1 -1
- package/dist/json.js +3 -2
- package/dist/neo4j.js +564 -157
- package/dist/neo4j.js.map +1 -1
- package/dist/obo.js +6 -3
- package/dist/pajek.js +1 -1
- package/dist/src/children.d.ts +18 -6
- package/dist/src/children.d.ts.map +1 -1
- package/dist/src/children.js +6 -3
- package/dist/src/children.js.map +1 -1
- package/dist/src/common/attributes.d.ts +29 -11
- package/dist/src/common/attributes.d.ts.map +1 -1
- package/dist/src/common/attributes.js +25 -7
- package/dist/src/common/attributes.js.map +1 -1
- package/dist/src/common/cell-budget.d.ts +9 -2
- package/dist/src/common/cell-budget.d.ts.map +1 -1
- package/dist/src/common/cell-budget.js +11 -3
- package/dist/src/common/cell-budget.js.map +1 -1
- package/dist/src/common/choose.d.ts +19 -0
- package/dist/src/common/choose.d.ts.map +1 -0
- package/dist/src/common/choose.js +72 -0
- package/dist/src/common/choose.js.map +1 -0
- package/dist/src/common/codes.d.ts +456 -66
- package/dist/src/common/codes.d.ts.map +1 -1
- package/dist/src/common/codes.js +458 -66
- package/dist/src/common/codes.js.map +1 -1
- package/dist/src/common/compare.d.ts +81 -0
- package/dist/src/common/compare.d.ts.map +1 -0
- package/dist/src/common/compare.js +394 -0
- package/dist/src/common/compare.js.map +1 -0
- package/dist/src/common/cx-export.d.ts +123 -0
- package/dist/src/common/cx-export.d.ts.map +1 -0
- package/dist/src/common/cx-export.js +334 -0
- package/dist/src/common/cx-export.js.map +1 -0
- package/dist/src/common/declared-types.d.ts +22 -2
- package/dist/src/common/declared-types.d.ts.map +1 -1
- package/dist/src/common/declared-types.js +19 -1
- package/dist/src/common/declared-types.js.map +1 -1
- package/dist/src/common/direction.d.ts +74 -50
- package/dist/src/common/direction.d.ts.map +1 -1
- package/dist/src/common/direction.js +47 -27
- package/dist/src/common/direction.js.map +1 -1
- package/dist/src/common/escape.d.ts +21 -9
- package/dist/src/common/escape.d.ts.map +1 -1
- package/dist/src/common/escape.js +33 -17
- package/dist/src/common/escape.js.map +1 -1
- package/dist/src/common/export.d.ts +144 -32
- package/dist/src/common/export.d.ts.map +1 -1
- package/dist/src/common/export.js +216 -42
- package/dist/src/common/export.js.map +1 -1
- package/dist/src/common/format.d.ts +23 -1
- package/dist/src/common/format.d.ts.map +1 -1
- package/dist/src/common/format.js +26 -1
- package/dist/src/common/format.js.map +1 -1
- package/dist/src/common/ids.d.ts +9 -2
- package/dist/src/common/ids.d.ts.map +1 -1
- package/dist/src/common/ids.js +6 -2
- package/dist/src/common/ids.js.map +1 -1
- package/dist/src/common/input.d.ts +122 -28
- package/dist/src/common/input.d.ts.map +1 -1
- package/dist/src/common/input.js +890 -124
- package/dist/src/common/input.js.map +1 -1
- package/dist/src/common/json-elements.d.ts +144 -20
- package/dist/src/common/json-elements.d.ts.map +1 -1
- package/dist/src/common/json-elements.js +868 -188
- package/dist/src/common/json-elements.js.map +1 -1
- package/dist/src/common/line-format.d.ts +90 -0
- package/dist/src/common/line-format.d.ts.map +1 -0
- package/dist/src/common/line-format.js +185 -0
- package/dist/src/common/line-format.js.map +1 -0
- package/dist/src/common/lists.d.ts +6 -1
- package/dist/src/common/lists.d.ts.map +1 -1
- package/dist/src/common/lists.js +2 -0
- package/dist/src/common/lists.js.map +1 -1
- package/dist/src/common/ontology-export.d.ts +167 -0
- package/dist/src/common/ontology-export.d.ts.map +1 -0
- package/dist/src/common/ontology-export.js +359 -0
- package/dist/src/common/ontology-export.js.map +1 -0
- package/dist/src/common/ontology.d.ts +25 -3
- package/dist/src/common/ontology.d.ts.map +1 -1
- package/dist/src/common/ontology.js +30 -9
- package/dist/src/common/ontology.js.map +1 -1
- package/dist/src/common/options.d.ts +62 -12
- package/dist/src/common/options.d.ts.map +1 -1
- package/dist/src/common/options.js +89 -11
- package/dist/src/common/options.js.map +1 -1
- package/dist/src/common/plural.d.ts +31 -0
- package/dist/src/common/plural.d.ts.map +1 -0
- package/dist/src/common/plural.js +46 -0
- package/dist/src/common/plural.js.map +1 -0
- package/dist/src/common/report.d.ts +72 -14
- package/dist/src/common/report.d.ts.map +1 -1
- package/dist/src/common/report.js +146 -22
- package/dist/src/common/report.js.map +1 -1
- package/dist/src/common/temporal.d.ts +22 -5
- package/dist/src/common/temporal.d.ts.map +1 -1
- package/dist/src/common/temporal.js +13 -2
- package/dist/src/common/temporal.js.map +1 -1
- package/dist/src/common/text.d.ts +39 -23
- package/dist/src/common/text.d.ts.map +1 -1
- package/dist/src/common/text.js +51 -21
- package/dist/src/common/text.js.map +1 -1
- package/dist/src/common/weights.d.ts +37 -4
- package/dist/src/common/weights.d.ts.map +1 -1
- package/dist/src/common/weights.js +61 -2
- package/dist/src/common/weights.js.map +1 -1
- package/dist/src/common/writer.d.ts +19 -3
- package/dist/src/common/writer.d.ts.map +1 -1
- package/dist/src/common/writer.js +30 -2
- package/dist/src/common/writer.js.map +1 -1
- package/dist/src/common/xml.d.ts +125 -9
- package/dist/src/common/xml.d.ts.map +1 -1
- package/dist/src/common/xml.js +400 -83
- package/dist/src/common/xml.js.map +1 -1
- package/dist/src/common/zip.d.ts +44 -4
- package/dist/src/common/zip.d.ts.map +1 -1
- package/dist/src/common/zip.js +134 -5
- package/dist/src/common/zip.js.map +1 -1
- package/dist/src/formats/csv/exporter.d.ts +80 -24
- package/dist/src/formats/csv/exporter.d.ts.map +1 -1
- package/dist/src/formats/csv/exporter.js +145 -32
- package/dist/src/formats/csv/exporter.js.map +1 -1
- package/dist/src/formats/csv/header.d.ts +38 -9
- package/dist/src/formats/csv/header.d.ts.map +1 -1
- package/dist/src/formats/csv/header.js +46 -10
- package/dist/src/formats/csv/header.js.map +1 -1
- package/dist/src/formats/csv/importer.d.ts +187 -37
- package/dist/src/formats/csv/importer.d.ts.map +1 -1
- package/dist/src/formats/csv/importer.js +835 -204
- package/dist/src/formats/csv/importer.js.map +1 -1
- package/dist/src/formats/csv/index.d.ts +100 -19
- package/dist/src/formats/csv/index.d.ts.map +1 -1
- package/dist/src/formats/csv/index.js +94 -21
- package/dist/src/formats/csv/index.js.map +1 -1
- package/dist/src/formats/csv/records.d.ts +95 -10
- package/dist/src/formats/csv/records.d.ts.map +1 -1
- package/dist/src/formats/csv/records.js +333 -122
- package/dist/src/formats/csv/records.js.map +1 -1
- package/dist/src/formats/csv/values.d.ts +1 -0
- package/dist/src/formats/csv/values.d.ts.map +1 -1
- package/dist/src/formats/csv/values.js +1 -0
- package/dist/src/formats/csv/values.js.map +1 -1
- package/dist/src/formats/cx/exporter.d.ts +102 -0
- package/dist/src/formats/cx/exporter.d.ts.map +1 -0
- package/dist/src/formats/cx/exporter.js +1217 -0
- package/dist/src/formats/cx/exporter.js.map +1 -0
- package/dist/src/formats/cx/importer.d.ts +79 -32
- package/dist/src/formats/cx/importer.d.ts.map +1 -1
- package/dist/src/formats/cx/importer.js +680 -285
- package/dist/src/formats/cx/importer.js.map +1 -1
- package/dist/src/formats/cx/index.d.ts +4 -3
- package/dist/src/formats/cx/index.d.ts.map +1 -1
- package/dist/src/formats/cx/index.js +4 -3
- package/dist/src/formats/cx/index.js.map +1 -1
- package/dist/src/formats/cx2/exporter.d.ts +29 -11
- package/dist/src/formats/cx2/exporter.d.ts.map +1 -1
- package/dist/src/formats/cx2/exporter.js +39 -268
- package/dist/src/formats/cx2/exporter.js.map +1 -1
- package/dist/src/formats/cx2/importer.d.ts +78 -28
- package/dist/src/formats/cx2/importer.d.ts.map +1 -1
- package/dist/src/formats/cx2/importer.js +226 -79
- package/dist/src/formats/cx2/importer.js.map +1 -1
- package/dist/src/formats/cx2/index.d.ts +2 -1
- package/dist/src/formats/cx2/index.d.ts.map +1 -1
- package/dist/src/formats/cx2/index.js +2 -1
- package/dist/src/formats/cx2/index.js.map +1 -1
- package/dist/src/formats/cys/constants.d.ts +66 -17
- package/dist/src/formats/cys/constants.d.ts.map +1 -1
- package/dist/src/formats/cys/constants.js +59 -18
- package/dist/src/formats/cys/constants.js.map +1 -1
- package/dist/src/formats/cys/exporter.d.ts +118 -0
- package/dist/src/formats/cys/exporter.d.ts.map +1 -0
- package/dist/src/formats/cys/exporter.js +1072 -0
- package/dist/src/formats/cys/exporter.js.map +1 -0
- package/dist/src/formats/cys/importer.d.ts +22 -8
- package/dist/src/formats/cys/importer.d.ts.map +1 -1
- package/dist/src/formats/cys/importer.js +510 -149
- package/dist/src/formats/cys/importer.js.map +1 -1
- package/dist/src/formats/cys/index.d.ts +4 -2
- package/dist/src/formats/cys/index.d.ts.map +1 -1
- package/dist/src/formats/cys/index.js +4 -2
- package/dist/src/formats/cys/index.js.map +1 -1
- package/dist/src/formats/cys/session.d.ts +46 -7
- package/dist/src/formats/cys/session.d.ts.map +1 -1
- package/dist/src/formats/cys/session.js +98 -24
- package/dist/src/formats/cys/session.js.map +1 -1
- package/dist/src/formats/cys/tables.d.ts +9 -2
- package/dist/src/formats/cys/tables.d.ts.map +1 -1
- package/dist/src/formats/cys/tables.js +29 -7
- package/dist/src/formats/cys/tables.js.map +1 -1
- package/dist/src/formats/dot/exporter.d.ts +42 -14
- package/dist/src/formats/dot/exporter.d.ts.map +1 -1
- package/dist/src/formats/dot/exporter.js +56 -29
- package/dist/src/formats/dot/exporter.js.map +1 -1
- package/dist/src/formats/dot/importer.d.ts +91 -29
- package/dist/src/formats/dot/importer.d.ts.map +1 -1
- package/dist/src/formats/dot/importer.js +190 -39
- package/dist/src/formats/dot/importer.js.map +1 -1
- package/dist/src/formats/dot/index.d.ts +2 -1
- package/dist/src/formats/dot/index.d.ts.map +1 -1
- package/dist/src/formats/dot/index.js +2 -1
- package/dist/src/formats/dot/index.js.map +1 -1
- package/dist/src/formats/dot/names.d.ts +44 -11
- package/dist/src/formats/dot/names.d.ts.map +1 -1
- package/dist/src/formats/dot/names.js +44 -11
- package/dist/src/formats/dot/names.js.map +1 -1
- package/dist/src/formats/dot/tokenizer.d.ts +9 -2
- package/dist/src/formats/dot/tokenizer.d.ts.map +1 -1
- package/dist/src/formats/dot/tokenizer.js +20 -5
- package/dist/src/formats/dot/tokenizer.js.map +1 -1
- package/dist/src/formats/gexf/exporter.d.ts +46 -15
- package/dist/src/formats/gexf/exporter.d.ts.map +1 -1
- package/dist/src/formats/gexf/exporter.js +45 -15
- package/dist/src/formats/gexf/exporter.js.map +1 -1
- package/dist/src/formats/gexf/importer.d.ts +87 -23
- package/dist/src/formats/gexf/importer.d.ts.map +1 -1
- package/dist/src/formats/gexf/importer.js +471 -90
- package/dist/src/formats/gexf/importer.js.map +1 -1
- package/dist/src/formats/gexf/index.d.ts +84 -21
- package/dist/src/formats/gexf/index.d.ts.map +1 -1
- package/dist/src/formats/gexf/index.js +80 -23
- package/dist/src/formats/gexf/index.js.map +1 -1
- package/dist/src/formats/gexf/schema.d.ts +67 -15
- package/dist/src/formats/gexf/schema.d.ts.map +1 -1
- package/dist/src/formats/gexf/schema.js +59 -13
- package/dist/src/formats/gexf/schema.js.map +1 -1
- package/dist/src/formats/gml/exporter.d.ts +69 -21
- package/dist/src/formats/gml/exporter.d.ts.map +1 -1
- package/dist/src/formats/gml/exporter.js +74 -29
- package/dist/src/formats/gml/exporter.js.map +1 -1
- package/dist/src/formats/gml/importer.d.ts +116 -25
- package/dist/src/formats/gml/importer.d.ts.map +1 -1
- package/dist/src/formats/gml/importer.js +290 -61
- package/dist/src/formats/gml/importer.js.map +1 -1
- package/dist/src/formats/gml/index.d.ts +87 -24
- package/dist/src/formats/gml/index.d.ts.map +1 -1
- package/dist/src/formats/gml/index.js +79 -26
- package/dist/src/formats/gml/index.js.map +1 -1
- package/dist/src/formats/gml/syntax.d.ts +67 -18
- package/dist/src/formats/gml/syntax.d.ts.map +1 -1
- package/dist/src/formats/gml/syntax.js +108 -26
- package/dist/src/formats/gml/syntax.js.map +1 -1
- package/dist/src/formats/graphml/constants.d.ts +174 -44
- package/dist/src/formats/graphml/constants.d.ts.map +1 -1
- package/dist/src/formats/graphml/constants.js +165 -44
- package/dist/src/formats/graphml/constants.js.map +1 -1
- package/dist/src/formats/graphml/exporter.d.ts +17 -9
- package/dist/src/formats/graphml/exporter.d.ts.map +1 -1
- package/dist/src/formats/graphml/exporter.js +33 -12
- package/dist/src/formats/graphml/exporter.js.map +1 -1
- package/dist/src/formats/graphml/importer.d.ts +19 -7
- package/dist/src/formats/graphml/importer.d.ts.map +1 -1
- package/dist/src/formats/graphml/importer.js +466 -39
- package/dist/src/formats/graphml/importer.js.map +1 -1
- package/dist/src/formats/graphml/index.d.ts +2 -1
- package/dist/src/formats/graphml/index.d.ts.map +1 -1
- package/dist/src/formats/graphml/index.js +2 -1
- package/dist/src/formats/graphml/index.js.map +1 -1
- package/dist/src/formats/graphml/tree.d.ts +6 -2
- package/dist/src/formats/graphml/tree.d.ts.map +1 -1
- package/dist/src/formats/graphml/tree.js +6 -2
- package/dist/src/formats/graphml/tree.js.map +1 -1
- package/dist/src/formats/graphml/yfiles.d.ts +8 -3
- package/dist/src/formats/graphml/yfiles.d.ts.map +1 -1
- package/dist/src/formats/graphml/yfiles.js +36 -15
- package/dist/src/formats/graphml/yfiles.js.map +1 -1
- package/dist/src/formats/json/dialect.d.ts +88 -24
- package/dist/src/formats/json/dialect.d.ts.map +1 -1
- package/dist/src/formats/json/dialect.js +109 -19
- package/dist/src/formats/json/dialect.js.map +1 -1
- package/dist/src/formats/json/exporter.d.ts +134 -22
- package/dist/src/formats/json/exporter.d.ts.map +1 -1
- package/dist/src/formats/json/exporter.js +135 -54
- package/dist/src/formats/json/exporter.js.map +1 -1
- package/dist/src/formats/json/importer.d.ts +173 -52
- package/dist/src/formats/json/importer.d.ts.map +1 -1
- package/dist/src/formats/json/importer.js +899 -220
- package/dist/src/formats/json/importer.js.map +1 -1
- package/dist/src/formats/json/index.d.ts +3 -2
- package/dist/src/formats/json/index.d.ts.map +1 -1
- package/dist/src/formats/json/index.js +3 -2
- package/dist/src/formats/json/index.js.map +1 -1
- package/dist/src/formats/json/obographs-export.d.ts +68 -0
- package/dist/src/formats/json/obographs-export.d.ts.map +1 -0
- package/dist/src/formats/json/obographs-export.js +941 -0
- package/dist/src/formats/json/obographs-export.js.map +1 -0
- package/dist/src/formats/json/obographs.d.ts +26 -0
- package/dist/src/formats/json/obographs.d.ts.map +1 -1
- package/dist/src/formats/json/obographs.js +297 -80
- package/dist/src/formats/json/obographs.js.map +1 -1
- package/dist/src/formats/neo4j/exporter.d.ts +109 -21
- package/dist/src/formats/neo4j/exporter.d.ts.map +1 -1
- package/dist/src/formats/neo4j/exporter.js +238 -85
- package/dist/src/formats/neo4j/exporter.js.map +1 -1
- package/dist/src/formats/neo4j/header.d.ts +17 -4
- package/dist/src/formats/neo4j/header.d.ts.map +1 -1
- package/dist/src/formats/neo4j/header.js +36 -4
- package/dist/src/formats/neo4j/header.js.map +1 -1
- package/dist/src/formats/neo4j/importer.d.ts +107 -27
- package/dist/src/formats/neo4j/importer.d.ts.map +1 -1
- package/dist/src/formats/neo4j/importer.js +415 -63
- package/dist/src/formats/neo4j/importer.js.map +1 -1
- package/dist/src/formats/neo4j/index.d.ts +73 -23
- package/dist/src/formats/neo4j/index.d.ts.map +1 -1
- package/dist/src/formats/neo4j/index.js +65 -25
- package/dist/src/formats/neo4j/index.js.map +1 -1
- package/dist/src/formats/obo/exporter.d.ts +150 -0
- package/dist/src/formats/obo/exporter.d.ts.map +1 -0
- package/dist/src/formats/obo/exporter.js +1736 -0
- package/dist/src/formats/obo/exporter.js.map +1 -0
- package/dist/src/formats/obo/importer.d.ts +95 -19
- package/dist/src/formats/obo/importer.d.ts.map +1 -1
- package/dist/src/formats/obo/importer.js +475 -104
- package/dist/src/formats/obo/importer.js.map +1 -1
- package/dist/src/formats/obo/index.d.ts +6 -3
- package/dist/src/formats/obo/index.d.ts.map +1 -1
- package/dist/src/formats/obo/index.js +6 -3
- package/dist/src/formats/obo/index.js.map +1 -1
- package/dist/src/formats/obo/syntax.d.ts +108 -4
- package/dist/src/formats/obo/syntax.d.ts.map +1 -1
- package/dist/src/formats/obo/syntax.js +211 -34
- package/dist/src/formats/obo/syntax.js.map +1 -1
- package/dist/src/formats/pajek/exporter.d.ts +54 -16
- package/dist/src/formats/pajek/exporter.d.ts.map +1 -1
- package/dist/src/formats/pajek/exporter.js +66 -34
- package/dist/src/formats/pajek/exporter.js.map +1 -1
- package/dist/src/formats/pajek/importer.d.ts +84 -22
- package/dist/src/formats/pajek/importer.d.ts.map +1 -1
- package/dist/src/formats/pajek/importer.js +303 -83
- package/dist/src/formats/pajek/importer.js.map +1 -1
- package/dist/src/formats/pajek/index.d.ts +2 -1
- package/dist/src/formats/pajek/index.d.ts.map +1 -1
- package/dist/src/formats/pajek/index.js +2 -1
- package/dist/src/formats/pajek/index.js.map +1 -1
- package/dist/src/formats/pajek/syntax.d.ts +77 -14
- package/dist/src/formats/pajek/syntax.d.ts.map +1 -1
- package/dist/src/formats/pajek/syntax.js +183 -51
- package/dist/src/formats/pajek/syntax.js.map +1 -1
- package/dist/src/formats/xgmml/columns.d.ts +1 -0
- package/dist/src/formats/xgmml/columns.d.ts.map +1 -1
- package/dist/src/formats/xgmml/columns.js +4 -0
- package/dist/src/formats/xgmml/columns.js.map +1 -1
- package/dist/src/formats/xgmml/constants.d.ts +186 -56
- package/dist/src/formats/xgmml/constants.d.ts.map +1 -1
- package/dist/src/formats/xgmml/constants.js +181 -57
- package/dist/src/formats/xgmml/constants.js.map +1 -1
- package/dist/src/formats/xgmml/document.d.ts +65 -11
- package/dist/src/formats/xgmml/document.d.ts.map +1 -1
- package/dist/src/formats/xgmml/document.js +157 -28
- package/dist/src/formats/xgmml/document.js.map +1 -1
- package/dist/src/formats/xgmml/emit.d.ts +61 -3
- package/dist/src/formats/xgmml/emit.d.ts.map +1 -1
- package/dist/src/formats/xgmml/emit.js +129 -26
- package/dist/src/formats/xgmml/emit.js.map +1 -1
- package/dist/src/formats/xgmml/exporter.d.ts +13 -6
- package/dist/src/formats/xgmml/exporter.d.ts.map +1 -1
- package/dist/src/formats/xgmml/exporter.js +20 -21
- package/dist/src/formats/xgmml/exporter.js.map +1 -1
- package/dist/src/formats/xgmml/importer.d.ts +33 -12
- package/dist/src/formats/xgmml/importer.d.ts.map +1 -1
- package/dist/src/formats/xgmml/importer.js +35 -72
- package/dist/src/formats/xgmml/importer.js.map +1 -1
- package/dist/src/formats/xgmml/index.d.ts +1 -0
- package/dist/src/formats/xgmml/index.d.ts.map +1 -1
- package/dist/src/formats/xgmml/index.js +1 -0
- package/dist/src/formats/xgmml/index.js.map +1 -1
- package/dist/src/formats/xgmml/values.d.ts +8 -1
- package/dist/src/formats/xgmml/values.d.ts.map +1 -1
- package/dist/src/formats/xgmml/values.js +7 -2
- package/dist/src/formats/xgmml/values.js.map +1 -1
- package/dist/src/index.d.ts +23 -18
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +28 -16
- package/dist/src/index.js.map +1 -1
- package/dist/src/registry.d.ts +478 -92
- package/dist/src/registry.d.ts.map +1 -1
- package/dist/src/registry.js +807 -88
- package/dist/src/registry.js.map +1 -1
- package/dist/src/sniff.d.ts +61 -19
- package/dist/src/sniff.d.ts.map +1 -1
- package/dist/src/sniff.js +121 -29
- package/dist/src/sniff.js.map +1 -1
- package/dist/src/types.d.ts +362 -112
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +28 -7
- package/dist/src/types.js.map +1 -1
- package/dist/xgmml.js +2 -2
- package/docs/samples/README.md +25 -0
- package/docs/samples/got-edges.csv +353 -0
- package/docs/samples/got-network.graphml +1384 -0
- package/docs/samples/got-nodes.csv +108 -0
- package/docs/samples/got.cx +930 -0
- package/docs/samples/got.cx2 +465 -0
- package/docs/samples/got.gexf +471 -0
- package/docs/samples/got.gml +2650 -0
- package/docs/samples/got.json +2546 -0
- package/docs/samples/got.net +461 -0
- package/docs/samples/movies-nodes.csv +9 -0
- package/docs/samples/movies-rels.csv +8 -0
- package/docs/samples/networks.cys +0 -0
- package/docs/samples/proteins.xgmml +9 -0
- package/docs/samples/teams.gv +24 -0
- package/docs/samples/vehicles.obo +25 -0
- package/package.json +9 -4
- package/src/children.ts +18 -6
- package/src/common/attributes.ts +29 -11
- package/src/common/cell-budget.ts +11 -3
- package/src/common/choose.ts +89 -0
- package/src/common/codes.ts +490 -66
- package/src/common/compare.ts +472 -0
- package/src/common/cx-export.ts +432 -0
- package/src/common/declared-types.ts +38 -4
- package/src/common/direction.ts +78 -51
- package/src/common/escape.ts +33 -17
- package/src/common/export.ts +284 -47
- package/src/common/format.ts +30 -1
- package/src/common/ids.ts +14 -3
- package/src/common/input.ts +1057 -134
- package/src/common/json-elements.ts +1034 -198
- package/src/common/line-format.ts +249 -0
- package/src/common/lists.ts +6 -1
- package/src/common/ontology-export.ts +461 -0
- package/src/common/ontology.ts +31 -9
- package/src/common/options.ts +110 -15
- package/src/common/plural.ts +49 -0
- package/src/common/report.ts +168 -25
- package/src/common/temporal.ts +22 -5
- package/src/common/text.ts +62 -23
- package/src/common/weights.ts +74 -4
- package/src/common/writer.ts +37 -3
- package/src/common/xml.ts +477 -88
- package/src/common/zip.ts +169 -7
- package/src/formats/csv/exporter.ts +201 -46
- package/src/formats/csv/header.ts +50 -11
- package/src/formats/csv/importer.ts +1133 -245
- package/src/formats/csv/index.ts +106 -19
- package/src/formats/csv/records.ts +396 -122
- package/src/formats/csv/values.ts +1 -0
- package/src/formats/cx/exporter.ts +1483 -0
- package/src/formats/cx/importer.ts +888 -300
- package/src/formats/cx/index.ts +4 -3
- package/src/formats/cx2/exporter.ts +61 -338
- package/src/formats/cx2/importer.ts +317 -86
- package/src/formats/cx2/index.ts +2 -1
- package/src/formats/cys/constants.ts +62 -17
- package/src/formats/cys/exporter.ts +1368 -0
- package/src/formats/cys/importer.ts +659 -157
- package/src/formats/cys/index.ts +4 -2
- package/src/formats/cys/session.ts +139 -31
- package/src/formats/cys/tables.ts +47 -9
- package/src/formats/dot/exporter.ts +83 -37
- package/src/formats/dot/importer.ts +248 -54
- package/src/formats/dot/index.ts +2 -1
- package/src/formats/dot/names.ts +44 -11
- package/src/formats/dot/tokenizer.ts +25 -6
- package/src/formats/gexf/exporter.ts +57 -18
- package/src/formats/gexf/importer.ts +636 -105
- package/src/formats/gexf/index.ts +90 -21
- package/src/formats/gexf/schema.ts +67 -15
- package/src/formats/gml/exporter.ts +90 -36
- package/src/formats/gml/importer.ts +388 -67
- package/src/formats/gml/index.ts +85 -24
- package/src/formats/gml/syntax.ts +111 -26
- package/src/formats/graphml/constants.ts +178 -44
- package/src/formats/graphml/exporter.ts +52 -18
- package/src/formats/graphml/importer.ts +640 -60
- package/src/formats/graphml/index.ts +2 -1
- package/src/formats/graphml/tree.ts +6 -2
- package/src/formats/graphml/yfiles.ts +37 -15
- package/src/formats/json/dialect.ts +128 -29
- package/src/formats/json/exporter.ts +205 -68
- package/src/formats/json/importer.ts +1163 -253
- package/src/formats/json/index.ts +3 -1
- package/src/formats/json/obographs-export.ts +1197 -0
- package/src/formats/json/obographs.ts +353 -92
- package/src/formats/neo4j/exporter.ts +320 -101
- package/src/formats/neo4j/header.ts +44 -6
- package/src/formats/neo4j/importer.ts +512 -73
- package/src/formats/neo4j/index.ts +75 -23
- package/src/formats/obo/exporter.ts +2210 -0
- package/src/formats/obo/importer.ts +622 -109
- package/src/formats/obo/index.ts +6 -3
- package/src/formats/obo/syntax.ts +232 -37
- package/src/formats/pajek/exporter.ts +89 -41
- package/src/formats/pajek/importer.ts +407 -93
- package/src/formats/pajek/index.ts +2 -1
- package/src/formats/pajek/syntax.ts +213 -52
- package/src/formats/xgmml/columns.ts +10 -0
- package/src/formats/xgmml/constants.ts +183 -56
- package/src/formats/xgmml/document.ts +212 -34
- package/src/formats/xgmml/emit.ts +175 -34
- package/src/formats/xgmml/exporter.ts +35 -27
- package/src/formats/xgmml/importer.ts +64 -86
- package/src/formats/xgmml/index.ts +1 -0
- package/src/formats/xgmml/values.ts +11 -3
- package/src/index.ts +81 -11
- package/src/registry.ts +1121 -135
- package/src/sniff.ts +163 -32
- package/src/types.ts +385 -114
- package/dist/chunks/escape-B-tkk_Cl.js.map +0 -1
- package/dist/chunks/export-Bh60Dv-n.js +0 -582
- package/dist/chunks/export-Bh60Dv-n.js.map +0 -1
- package/dist/chunks/exporter-BGrsWamJ.js.map +0 -1
- package/dist/chunks/exporter-DIeGJXAZ.js.map +0 -1
- package/dist/chunks/importer-BWY2FFc5.js.map +0 -1
- package/dist/chunks/importer-DD-xv9_Y.js +0 -1471
- package/dist/chunks/importer-DD-xv9_Y.js.map +0 -1
- package/dist/chunks/importer-DET1tg6s.js.map +0 -1
- package/dist/chunks/importer-DEcKhsmQ.js +0 -1614
- package/dist/chunks/importer-DEcKhsmQ.js.map +0 -1
- package/dist/chunks/importer-DIrbbnAf.js.map +0 -1
- package/dist/chunks/importer-D_e7e7LX.js.map +0 -1
- package/dist/chunks/importer-eUREhBGj.js.map +0 -1
- package/dist/chunks/importer-vi3bSdtw.js.map +0 -1
- package/dist/chunks/importer-zGLo8Dg_.js.map +0 -1
- package/dist/chunks/json-elements-DDS8N2Dd.js +0 -779
- package/dist/chunks/json-elements-DDS8N2Dd.js.map +0 -1
- package/dist/chunks/ontology-BnrJ4I98.js +0 -113
- package/dist/chunks/ontology-BnrJ4I98.js.map +0 -1
- package/dist/chunks/records-dbRkxwaq.js.map +0 -1
- package/dist/chunks/report-B1z4WT9e.js +0 -2372
- package/dist/chunks/report-B1z4WT9e.js.map +0 -1
- package/dist/chunks/text-Dr0Ifpag.js.map +0 -1
- package/dist/chunks/weights-Dzba96G3.js +0 -176
- package/dist/chunks/weights-Dzba96G3.js.map +0 -1
- package/dist/chunks/writer-C7flM-Ih.js.map +0 -1
|
@@ -12,14 +12,15 @@
|
|
|
12
12
|
* weight is written for edges whose weight was explicit (the role-weight column's validity).
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import { type Column, GraphFormatError, type GraphSnapshot
|
|
15
|
+
import { type Column, GraphFormatError, type GraphSnapshot } from "@graphty/graph-format";
|
|
16
16
|
|
|
17
17
|
import { pairFolding } from "../../common/direction.js";
|
|
18
18
|
import { isPajekLabel, quotePajekLabel } from "../../common/escape.js";
|
|
19
19
|
import { capabilities, checkCapabilities, LOSS, type SanitizedIds, sanitizeIds } from "../../common/export.js";
|
|
20
|
-
import { formatDecimal, formatF32,
|
|
20
|
+
import { formatDecimal, formatF32, formatInteger, idText } from "../../common/format.js";
|
|
21
21
|
import { canonicalId } from "../../common/ids.js";
|
|
22
22
|
import { resolveExportOptions } from "../../common/options.js";
|
|
23
|
+
import { agree, plural } from "../../common/plural.js";
|
|
23
24
|
import { inferTextDtype } from "../../common/text.js";
|
|
24
25
|
import { explicitWeights } from "../../common/weights.js";
|
|
25
26
|
import { encodeChunks, joinText } from "../../common/writer.js";
|
|
@@ -36,48 +37,83 @@ import {
|
|
|
36
37
|
SHAPES,
|
|
37
38
|
} from "./syntax.js";
|
|
38
39
|
|
|
39
|
-
/**
|
|
40
|
-
|
|
40
|
+
/**
|
|
41
|
+
* The format-specific options of the Pajek exporter.
|
|
42
|
+
* @category Built-in formats
|
|
43
|
+
*/
|
|
44
|
+
export interface PajekExportOptions extends CommonExportOptions {
|
|
41
45
|
/**
|
|
42
|
-
* Write a `*Network <name>`
|
|
43
|
-
*
|
|
46
|
+
* Write a `*Network <name>` line first, as Pajek project files (.paj) have. The name is the `name`
|
|
47
|
+
* option, else the graph's name (`snapshot.meta.name`); a graph with neither gets a bare
|
|
48
|
+
* `*Network` line. Plain .net readers do not expect the line. An explicit `false` wins over
|
|
49
|
+
* `name`: `{ networkHeader: false, name: "x" }` writes no line.
|
|
50
|
+
* @defaultValue false, or true when `name` is given
|
|
44
51
|
*/
|
|
45
52
|
networkHeader?: boolean | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* The network name written on the `*Network` line. Giving one writes the line, unless
|
|
55
|
+
* `networkHeader` is `false`. The default is the graph's name (`snapshot.meta.name`), which a
|
|
56
|
+
* Pajek, DOT, GML or GEXF import keeps; a graph read from CSV has none.
|
|
57
|
+
* @defaultValue the graph's name
|
|
58
|
+
*/
|
|
59
|
+
name?: string | undefined;
|
|
46
60
|
}
|
|
47
61
|
|
|
48
62
|
/**
|
|
49
63
|
* The LossNote codes of the Pajek exporter's check(): the Pajek-specific ones and, aliased, the
|
|
50
64
|
* shared ones it records itself (`LOSS` holds the rest of the generic pre-flight's codes). A key
|
|
51
65
|
* is the code without its severity and format prefixes.
|
|
66
|
+
* @category Built-in formats
|
|
52
67
|
*/
|
|
53
68
|
export const PAJEK_LOSS = Object.freeze({
|
|
54
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* A label or text value holds a double quote or a line break, which Pajek cannot write; the save fails with
|
|
71
|
+
* E_UNSUPPORTED.
|
|
72
|
+
*/
|
|
55
73
|
TEXT: "E_PAJEK_TEXT",
|
|
56
74
|
/** A column whose name cannot be a parameter key (whitespace, a quote, numeric, a shape keyword); skipped. */
|
|
57
75
|
KEY_DROPPED: "W_PAJEK_KEY_DROPPED",
|
|
58
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* The node label attribute holds numbers or other values that are not text; they are written as text and read back
|
|
78
|
+
* as text.
|
|
79
|
+
*/
|
|
59
80
|
LABEL_AS_TEXT: "W_PAJEK_LABEL_AS_TEXT",
|
|
60
|
-
/**
|
|
81
|
+
/** NaN or an infinity is written as the text Infinity or NaN, which reads back as text. */
|
|
61
82
|
NONFINITE_AS_TEXT: "W_PAJEK_NONFINITE_AS_TEXT",
|
|
62
83
|
/** A mutual pair; written as one undirected edge, the mark lost. */
|
|
63
84
|
MUTUAL_AS_UNDIRECTED: LOSS.MUTUAL_AS_UNDIRECTED,
|
|
64
85
|
/** A start / end / timestamp role column; Pajek intervals are written from the spells role only. */
|
|
65
86
|
TEMPORAL_DROPPED: LOSS.TEMPORAL,
|
|
66
|
-
/** A position
|
|
87
|
+
/** A position with other than 2 or 3 coordinates is not written. */
|
|
67
88
|
POSITION_STRIDE: "W_PAJEK_POSITION_STRIDE",
|
|
68
|
-
/**
|
|
89
|
+
/**
|
|
90
|
+
* The graph's two-mode vertex count (`meta.extra.pajek.firstMode`) is not between 0 and the number of nodes, so
|
|
91
|
+
* the file is written as a one-mode network.
|
|
92
|
+
*/
|
|
69
93
|
FIRST_MODE_DROPPED: "W_PAJEK_FIRST_MODE_DROPPED",
|
|
70
|
-
/**
|
|
94
|
+
/** An attribute with a role the format has no place for is written as a plain attribute; the role is lost. */
|
|
71
95
|
ROLE_DROPPED: LOSS.ROLE,
|
|
72
|
-
/**
|
|
96
|
+
/**
|
|
97
|
+
* A `shape` attribute whose value is not one of Pajek's shape names is written as a parameter, and reads back as a
|
|
98
|
+
* plain text attribute.
|
|
99
|
+
*/
|
|
73
100
|
SHAPE_AS_PARAMETER: "W_PAJEK_SHAPE_AS_PARAMETER",
|
|
74
101
|
/** A vertex line with coordinates, a shape or parameters needs a label: the id text is written and reads back as a label. */
|
|
75
102
|
LABEL_GAINED: "W_PAJEK_LABEL_GAINED",
|
|
76
|
-
/**
|
|
103
|
+
/**
|
|
104
|
+
* An attribute without a role is written where the format keeps a role (for example, a `name` column as the label), and
|
|
105
|
+
* reads back with that role.
|
|
106
|
+
*/
|
|
77
107
|
ROLE_ASSUMED: LOSS.ROLE_ASSUMED,
|
|
78
|
-
/**
|
|
108
|
+
/**
|
|
109
|
+
* With `sanitizeIds: "mangle"`: an original id that reads back as a different type, such as the text "7" as the
|
|
110
|
+
* number 7.
|
|
111
|
+
*/
|
|
79
112
|
ID_TEXT_TYPE: LOSS.ID_TEXT_TYPE,
|
|
80
|
-
/**
|
|
113
|
+
/**
|
|
114
|
+
* A text value that reads back as a number or a boolean, because the format does not record that it was text (the
|
|
115
|
+
* text "42" reads back as the number 42).
|
|
116
|
+
*/
|
|
81
117
|
TEXT_INFERRED: LOSS.TEXT_INFERRED,
|
|
82
118
|
});
|
|
83
119
|
|
|
@@ -307,7 +343,7 @@ function labelNotes(snapshot: GraphSnapshot, nodePlan: readonly PlannedColumn[],
|
|
|
307
343
|
notes.push(
|
|
308
344
|
note(
|
|
309
345
|
PAJEK_LOSS.LABEL_GAINED,
|
|
310
|
-
`${gained} vertex line(
|
|
346
|
+
`${gained} vertex line${plural(gained)} ${agree(gained, "carries", "carry")} coordinates, a shape or parameters and need a label; the id text is written there and reads back as a label`,
|
|
311
347
|
labels === null ? LABEL_COLUMN : labels.meta.name,
|
|
312
348
|
gained,
|
|
313
349
|
),
|
|
@@ -446,7 +482,7 @@ function checkCells(planned: readonly PlannedColumn[], domain: "node" | "edge",
|
|
|
446
482
|
notes.push(
|
|
447
483
|
note(
|
|
448
484
|
PAJEK_LOSS.TEXT,
|
|
449
|
-
`${badText} value(
|
|
485
|
+
`${badText} value${plural(badText)} of ${domain} column "${name}" hold a double quote or a line break; Pajek cannot write them`,
|
|
450
486
|
name,
|
|
451
487
|
badText,
|
|
452
488
|
),
|
|
@@ -456,7 +492,7 @@ function checkCells(planned: readonly PlannedColumn[], domain: "node" | "edge",
|
|
|
456
492
|
notes.push(
|
|
457
493
|
note(
|
|
458
494
|
PAJEK_LOSS.TEXT_INFERRED,
|
|
459
|
-
`${typed} value(
|
|
495
|
+
`${typed} value${plural(typed)} of ${domain} column "${name}" look like numbers or booleans; Pajek parameters are untyped and they read back as such`,
|
|
460
496
|
name,
|
|
461
497
|
typed,
|
|
462
498
|
),
|
|
@@ -466,7 +502,7 @@ function checkCells(planned: readonly PlannedColumn[], domain: "node" | "edge",
|
|
|
466
502
|
notes.push(
|
|
467
503
|
note(
|
|
468
504
|
PAJEK_LOSS.NONFINITE_AS_TEXT,
|
|
469
|
-
`${nonFinite} non-finite value(
|
|
505
|
+
`${nonFinite} non-finite value${plural(nonFinite)} of ${domain} column "${name}" ${agree(nonFinite, "is", "are")} written as text`,
|
|
470
506
|
name,
|
|
471
507
|
nonFinite,
|
|
472
508
|
),
|
|
@@ -515,15 +551,6 @@ function labelOf(labels: Column | null, ids: SanitizedIds, i: number, needed: bo
|
|
|
515
551
|
return null;
|
|
516
552
|
}
|
|
517
553
|
|
|
518
|
-
/**
|
|
519
|
-
* The text of an id.
|
|
520
|
-
* @param id - the id
|
|
521
|
-
* @returns String(id)
|
|
522
|
-
*/
|
|
523
|
-
function idText(id: NodeId): string {
|
|
524
|
-
return typeof id === "number" ? formatF64(id) : id;
|
|
525
|
-
}
|
|
526
|
-
|
|
527
554
|
/**
|
|
528
555
|
* The spells text of a row, or null when unset or empty.
|
|
529
556
|
* @param column - the spells list column
|
|
@@ -596,13 +623,14 @@ function needsZ(column: Column): boolean {
|
|
|
596
623
|
* @param snapshot - the snapshot
|
|
597
624
|
* @param options - the resolved format options
|
|
598
625
|
* @param options.networkHeader - whether the `*Network` line is written
|
|
626
|
+
* @param options.name - the name on that line, or null for a bare line
|
|
599
627
|
* @param options.mangle - whether the original ids are written as `graphty_originalId` parameters
|
|
600
628
|
* @yields lines with their terminator
|
|
601
629
|
* @returns nothing
|
|
602
630
|
*/
|
|
603
631
|
function* writeParts(
|
|
604
632
|
snapshot: GraphSnapshot,
|
|
605
|
-
options: { networkHeader: boolean; mangle: boolean },
|
|
633
|
+
options: { networkHeader: boolean; name: string | null; mangle: boolean },
|
|
606
634
|
): Generator<string, void, undefined> {
|
|
607
635
|
const ids = sanitizeIds(snapshot, CAPABILITIES.idCharset, options.mangle ? "mangle" : "error");
|
|
608
636
|
const nodePlan = withoutReservedKey(plan(snapshot.nodes, "node", null), options.mangle);
|
|
@@ -622,8 +650,8 @@ function* writeParts(
|
|
|
622
650
|
}
|
|
623
651
|
}
|
|
624
652
|
|
|
625
|
-
if (options.networkHeader
|
|
626
|
-
yield `*Network ${
|
|
653
|
+
if (options.networkHeader) {
|
|
654
|
+
yield options.name === null ? "*Network\n" : `*Network ${options.name}\n`;
|
|
627
655
|
}
|
|
628
656
|
const firstMode = firstModeOf(snapshot);
|
|
629
657
|
yield firstMode !== null && !Number.isNaN(firstMode)
|
|
@@ -676,7 +704,7 @@ function checkIdTexts(nodeCount: number, ids: SanitizedIds, mangle: boolean, not
|
|
|
676
704
|
notes.push(
|
|
677
705
|
note(
|
|
678
706
|
PAJEK_LOSS.TEXT,
|
|
679
|
-
`${badText} node id(
|
|
707
|
+
`${badText} node id${plural(badText)} ${agree(badText, "holds", "hold")} a double quote or a line break; Pajek cannot write them as labels or parameters`,
|
|
680
708
|
null,
|
|
681
709
|
badText,
|
|
682
710
|
),
|
|
@@ -686,7 +714,7 @@ function checkIdTexts(nodeCount: number, ids: SanitizedIds, mangle: boolean, not
|
|
|
686
714
|
notes.push(
|
|
687
715
|
note(
|
|
688
716
|
PAJEK_LOSS.ID_TEXT_TYPE,
|
|
689
|
-
`${typeChanged} original id(
|
|
717
|
+
`${typeChanged} original id${plural(typeChanged)} ${agree(typeChanged, "reads", "read")} back from ${ORIGINAL_ID_KEY} as the other type under ids: "canonical" (a string "1" becomes 1, a number 1.5 becomes "1.5")`,
|
|
690
718
|
null,
|
|
691
719
|
typeChanged,
|
|
692
720
|
),
|
|
@@ -874,11 +902,16 @@ function* writeLines(snapshot: GraphSnapshot, edgePlan: readonly PlannedColumn[]
|
|
|
874
902
|
|
|
875
903
|
/**
|
|
876
904
|
* Resolve the Pajek export options.
|
|
905
|
+
* @param snapshot - the graph, whose name is the default network name
|
|
877
906
|
* @param options - the caller's options
|
|
878
907
|
* @returns the resolved format options; the common options are checked by resolveExportOptions
|
|
879
908
|
*/
|
|
880
|
-
function resolvePajekOptions(
|
|
909
|
+
function resolvePajekOptions(
|
|
910
|
+
snapshot: GraphSnapshot,
|
|
911
|
+
options: (PajekExportOptions & CommonExportOptions) | undefined,
|
|
912
|
+
): {
|
|
881
913
|
networkHeader: boolean;
|
|
914
|
+
name: string | null;
|
|
882
915
|
mangle: boolean;
|
|
883
916
|
} {
|
|
884
917
|
const common = resolveExportOptions(options);
|
|
@@ -889,12 +922,27 @@ function resolvePajekOptions(options: (PajekExportOptions & CommonExportOptions)
|
|
|
889
922
|
found: typeof value,
|
|
890
923
|
});
|
|
891
924
|
}
|
|
892
|
-
|
|
925
|
+
const name = options?.name;
|
|
926
|
+
if (name !== undefined && (typeof name !== "string" || /[\r\n]/.test(name))) {
|
|
927
|
+
throw new GraphFormatError("E_UNSUPPORTED", "option name: not a one-line string", {
|
|
928
|
+
option: "name",
|
|
929
|
+
found: typeof name,
|
|
930
|
+
});
|
|
931
|
+
}
|
|
932
|
+
return {
|
|
933
|
+
networkHeader: value ?? name !== undefined,
|
|
934
|
+
name: name ?? snapshot.meta.name,
|
|
935
|
+
mangle: common.sanitizeIds === "mangle",
|
|
936
|
+
};
|
|
893
937
|
}
|
|
894
938
|
|
|
895
|
-
/**
|
|
939
|
+
/**
|
|
940
|
+
* The Pajek NET exporter.
|
|
941
|
+
* @category Built-in formats
|
|
942
|
+
*/
|
|
896
943
|
export const pajekExporter: GraphExporter<PajekExportOptions> = Object.freeze({
|
|
897
944
|
format: "pajek",
|
|
945
|
+
options: Object.freeze(["name", "networkHeader"]),
|
|
898
946
|
capabilities: CAPABILITIES,
|
|
899
947
|
|
|
900
948
|
/**
|
|
@@ -905,7 +953,7 @@ export const pajekExporter: GraphExporter<PajekExportOptions> = Object.freeze({
|
|
|
905
953
|
*/
|
|
906
954
|
check(snapshot: GraphSnapshot, options?: PajekExportOptions & CommonExportOptions): readonly LossNote[] {
|
|
907
955
|
const resolved = resolveExportOptions(options);
|
|
908
|
-
const { mangle } = resolvePajekOptions(options);
|
|
956
|
+
const { mangle } = resolvePajekOptions(snapshot, options);
|
|
909
957
|
const notes: LossNote[] = [];
|
|
910
958
|
const planned = plan(snapshot.nodes, "node", notes);
|
|
911
959
|
const nodePlan = withoutReservedKey(planned, mangle);
|
|
@@ -980,7 +1028,7 @@ export const pajekExporter: GraphExporter<PajekExportOptions> = Object.freeze({
|
|
|
980
1028
|
notes.push(
|
|
981
1029
|
note(
|
|
982
1030
|
PAJEK_LOSS.MUTUAL_AS_UNDIRECTED,
|
|
983
|
-
`${folding.mutualCount} mutual pair(
|
|
1031
|
+
`${folding.mutualCount} mutual pair${plural(folding.mutualCount)} ${agree(folding.mutualCount, "is", "are")} written as undirected edges; the mutual mark is lost`,
|
|
984
1032
|
snapshot.edges.byRole("mutual")?.meta.name ?? null,
|
|
985
1033
|
folding.mutualCount,
|
|
986
1034
|
),
|
|
@@ -1004,7 +1052,7 @@ export const pajekExporter: GraphExporter<PajekExportOptions> = Object.freeze({
|
|
|
1004
1052
|
* @returns the chunks
|
|
1005
1053
|
*/
|
|
1006
1054
|
export(snapshot: GraphSnapshot, options?: PajekExportOptions & CommonExportOptions): AsyncIterable<Uint8Array> {
|
|
1007
|
-
const resolved = resolvePajekOptions(options);
|
|
1055
|
+
const resolved = resolvePajekOptions(snapshot, options);
|
|
1008
1056
|
return encodeChunks(writeParts(snapshot, resolved));
|
|
1009
1057
|
},
|
|
1010
1058
|
|
|
@@ -1015,7 +1063,7 @@ export const pajekExporter: GraphExporter<PajekExportOptions> = Object.freeze({
|
|
|
1015
1063
|
* @returns the document
|
|
1016
1064
|
*/
|
|
1017
1065
|
exportToString(snapshot: GraphSnapshot, options?: PajekExportOptions & CommonExportOptions): Promise<string> {
|
|
1018
|
-
const resolved = resolvePajekOptions(options);
|
|
1066
|
+
const resolved = resolvePajekOptions(snapshot, options);
|
|
1019
1067
|
return joinText(writeParts(snapshot, resolved));
|
|
1020
1068
|
},
|
|
1021
1069
|
});
|