diff --git a/build/d3-dot-graph.js b/build/d3-dot-graph.js new file mode 100644 index 0000000..8323e49 --- /dev/null +++ b/build/d3-dot-graph.js @@ -0,0 +1,2491 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory() : + typeof define === 'function' && define.amd ? define(factory) : + (factory()); +}(this, (function () { 'use strict'; + +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ +(function(root) { + "use strict"; + + function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + } + + function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } + } + + peg$subclass(peg$SyntaxError, Error); + + peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + return s + .replace(/\\/g, '\\\\') + .replace(/"/g, '\\"') + .replace(/\0/g, '\\0') + .replace(/\t/g, '\\t') + .replace(/\n/g, '\\n') + .replace(/\r/g, '\\r') + .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + return s + .replace(/\\/g, '\\\\') + .replace(/\]/g, '\\]') + .replace(/\^/g, '\\^') + .replace(/-/g, '\\-') + .replace(/\0/g, '\\0') + .replace(/\t/g, '\\t') + .replace(/\n/g, '\\n') + .replace(/\r/g, '\\r') + .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + descriptions.sort(); + + if (descriptions.length > 0) { + for (i = 1, j = 1; i < descriptions.length; i++) { + if (descriptions[i - 1] !== descriptions[i]) { + descriptions[j] = descriptions[i]; + j++; + } + } + descriptions.length = j; + } + + switch (descriptions.length) { + case 1: + return descriptions[0]; + + case 2: + return descriptions[0] + " or " + descriptions[1]; + + default: + return descriptions.slice(0, -1).join(", ") + + ", or " + + descriptions[descriptions.length - 1]; + } + } + + function describeFound(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; + }; + + function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = "{", + peg$c1 = peg$literalExpectation("{", false), + peg$c2 = "}", + peg$c3 = peg$literalExpectation("}", false), + peg$c4 = function(strict, type, id, stmts) { + return {type: type, id: id, strict: strict !== null, stmts: stmts}; + }, + peg$c5 = ";", + peg$c6 = peg$literalExpectation(";", false), + peg$c7 = function(first, rest) { + var result = [first]; + for (var i = 0; i < rest.length; ++i) { + result.push(rest[i][1]); + } + return result; + }, + peg$c8 = function(type, attrs) { + return { type: "attr", attrType: type, attrs: attrs || {}}; + }, + peg$c9 = "=", + peg$c10 = peg$literalExpectation("=", false), + peg$c11 = function(k, v) { + var attrs = {}; + attrs[k] = v; + return { type: "inlineAttr", attrs: attrs }; + }, + peg$c12 = function(id, attrs) { return {type: "node", id: id, attrs: attrs || {}}; }, + peg$c13 = function(lhs, rhs, attrs) { + var elems = [lhs]; + for (var i = 0; i < rhs.length; ++i) { + elems.push(rhs[i]); + } + return { type: "edge", elems: elems, attrs: attrs || {} }; + }, + peg$c14 = function(id, stmts) { + id = (id && id[2]) || []; + return { type: "subgraph", id: id[0], stmts: stmts }; + }, + peg$c15 = function(first, rest) { + var result = first; + for (var i = 0; i < rest.length; ++i) { + merge(result, rest[i][1]); + } + return result; + }, + peg$c16 = "[", + peg$c17 = peg$literalExpectation("[", false), + peg$c18 = "]", + peg$c19 = peg$literalExpectation("]", false), + peg$c20 = function(aList) { return aList; }, + peg$c21 = ",", + peg$c22 = peg$literalExpectation(",", false), + peg$c23 = function(first, rest) { + var result = first; + for (var i = 0; i < rest.length; ++i) { + _.merge(result, rest[i][3]); + } + return result; + }, + peg$c24 = "--", + peg$c25 = peg$literalExpectation("--", false), + peg$c26 = function() { return directed; }, + peg$c27 = "->", + peg$c28 = peg$literalExpectation("->", false), + peg$c29 = function(rhs, rest) { + var result = [rhs]; + if (rest) { + for (var i = 0; i < rest.length; ++i) { + result.push(rest[i]); + } + } + return result; + }, + peg$c30 = function(k, v) { + var result = {}; + result[k] = v[3]; + return result; + }, + peg$c31 = function(id) { return { type: "node", id: id, attrs: {} }; }, + peg$c32 = function(id) { return id; }, + peg$c33 = ":", + peg$c34 = peg$literalExpectation(":", false), + peg$c35 = "ne", + peg$c36 = peg$literalExpectation("ne", false), + peg$c37 = "se", + peg$c38 = peg$literalExpectation("se", false), + peg$c39 = "sw", + peg$c40 = peg$literalExpectation("sw", false), + peg$c41 = "nw", + peg$c42 = peg$literalExpectation("nw", false), + peg$c43 = "n", + peg$c44 = peg$literalExpectation("n", false), + peg$c45 = "e", + peg$c46 = peg$literalExpectation("e", false), + peg$c47 = "s", + peg$c48 = peg$literalExpectation("s", false), + peg$c49 = "w", + peg$c50 = peg$literalExpectation("w", false), + peg$c51 = "c", + peg$c52 = peg$literalExpectation("c", false), + peg$c53 = "_", + peg$c54 = peg$literalExpectation("_", false), + peg$c55 = peg$otherExpectation("identifier"), + peg$c56 = /^[a-zA-Z\u0200-\u0377_]/, + peg$c57 = peg$classExpectation([["a", "z"], ["A", "Z"], ["\u0200", "\u0377"], "_"], false, false), + peg$c58 = /^[a-zA-Z\u0200-\u0377_0-9]/, + peg$c59 = peg$classExpectation([["a", "z"], ["A", "Z"], ["\u0200", "\u0377"], "_", ["0", "9"]], false, false), + peg$c60 = function(fst, rest) { return fst + rest.join(""); }, + peg$c61 = "-", + peg$c62 = peg$literalExpectation("-", false), + peg$c63 = ".", + peg$c64 = peg$literalExpectation(".", false), + peg$c65 = /^[0-9]/, + peg$c66 = peg$classExpectation([["0", "9"]], false, false), + peg$c67 = function(sign, dot, after) { + return (sign || "") + dot + after.join(""); + }, + peg$c68 = function(sign, before, after) { + return (sign || "") + before.join("") + (after ? after[0] : "") + (after ? after[1].join("") : ""); + }, + peg$c69 = "\"", + peg$c70 = peg$literalExpectation("\"", false), + peg$c71 = "\\\"", + peg$c72 = peg$literalExpectation("\\\"", false), + peg$c73 = function() { return '"'; }, + peg$c74 = "\\", + peg$c75 = peg$literalExpectation("\\", false), + peg$c76 = /^[^"]/, + peg$c77 = peg$classExpectation(["\""], true, false), + peg$c78 = function(ch) { return "\\" + ch; }, + peg$c79 = function(id) { + return id.join(""); + }, + peg$c80 = "node", + peg$c81 = peg$literalExpectation("node", true), + peg$c82 = function(k) { return k.toLowerCase(); }, + peg$c83 = "edge", + peg$c84 = peg$literalExpectation("edge", true), + peg$c85 = "graph", + peg$c86 = peg$literalExpectation("graph", true), + peg$c87 = "digraph", + peg$c88 = peg$literalExpectation("digraph", true), + peg$c89 = "subgraph", + peg$c90 = peg$literalExpectation("subgraph", true), + peg$c91 = "strict", + peg$c92 = peg$literalExpectation("strict", true), + peg$c93 = function(graph) { + directed = graph === "digraph"; + return graph; + }, + peg$c94 = peg$otherExpectation("whitespace"), + peg$c95 = /^[ \t\r\n]/, + peg$c96 = peg$classExpectation([" ", "\t", "\r", "\n"], false, false), + peg$c97 = peg$otherExpectation("comment"), + peg$c98 = "//", + peg$c99 = peg$literalExpectation("//", false), + peg$c100 = /^[^\n]/, + peg$c101 = peg$classExpectation(["\n"], true, false), + peg$c102 = "/*", + peg$c103 = peg$literalExpectation("/*", false), + peg$c104 = "*/", + peg$c105 = peg$literalExpectation("*/", false), + peg$c106 = peg$anyExpectation(), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], p; + + if (details) { + return details; + } else { + p = pos - 1; + while (!peg$posDetailsCache[p]) { + p--; + } + + details = peg$posDetailsCache[p]; + details = { + line: details.line, + column: details.column + }; + + while (p < pos) { + if (input.charCodeAt(p) === 10) { + details.line++; + details.column = 1; + } else { + details.column++; + } + + p++; + } + + peg$posDetailsCache[pos] = details; + return details; + } + } + + function peg$computeLocation(startPos, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + endPosDetails = peg$computePosDetails(endPos); + + return { + start: { + offset: startPos, + line: startPosDetails.line, + column: startPosDetails.column + }, + end: { + offset: endPos, + line: endPosDetails.line, + column: endPosDetails.column + } + }; + } + + function peg$fail(expected) { + if (peg$currPos < peg$maxFailPos) { return; } + + if (peg$currPos > peg$maxFailPos) { + peg$maxFailPos = peg$currPos; + peg$maxFailExpected = []; + } + + peg$maxFailExpected.push(expected); + } + + function peg$buildStructuredError(expected, found, location) { + return new peg$SyntaxError( + peg$SyntaxError.buildMessage(expected, found), + expected, + found, + location + ); + } + + function peg$parsestart() { + var s0, s1; + + s0 = []; + s1 = peg$parsegraphStmt(); + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsegraphStmt(); + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsegraphStmt() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13; + + s0 = peg$currPos; + s1 = []; + s2 = peg$parse_(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parse_(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsestrict(); + if (s3 !== peg$FAILED) { + s4 = peg$parse_(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsegraphType(); + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parse_(); + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parse_(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parseid(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$parse_(); + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$parse_(); + } + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 123) { + s7 = peg$c0; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c1); } + } + if (s7 !== peg$FAILED) { + s8 = []; + s9 = peg$parse_(); + while (s9 !== peg$FAILED) { + s8.push(s9); + s9 = peg$parse_(); + } + if (s8 !== peg$FAILED) { + s9 = peg$parsestmtList(); + if (s9 === peg$FAILED) { + s9 = null; + } + if (s9 !== peg$FAILED) { + s10 = []; + s11 = peg$parse_(); + while (s11 !== peg$FAILED) { + s10.push(s11); + s11 = peg$parse_(); + } + if (s10 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s11 = peg$c2; + peg$currPos++; + } else { + s11 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c3); } + } + if (s11 !== peg$FAILED) { + s12 = []; + s13 = peg$parse_(); + while (s13 !== peg$FAILED) { + s12.push(s13); + s13 = peg$parse_(); + } + if (s12 !== peg$FAILED) { + s1 = peg$c4(s2, s3, s5, s9); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsestmtList() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsestmt(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parse_(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parse_(); + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 59) { + s3 = peg$c5; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c6); } + } + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$currPos; + s6 = []; + s7 = peg$parse_(); + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$parse_(); + } + if (s6 !== peg$FAILED) { + s7 = peg$parsestmt(); + if (s7 !== peg$FAILED) { + s8 = []; + s9 = peg$parse_(); + while (s9 !== peg$FAILED) { + s8.push(s9); + s9 = peg$parse_(); + } + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 59) { + s9 = peg$c5; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c6); } + } + if (s9 === peg$FAILED) { + s9 = null; + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$currPos; + s6 = []; + s7 = peg$parse_(); + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$parse_(); + } + if (s6 !== peg$FAILED) { + s7 = peg$parsestmt(); + if (s7 !== peg$FAILED) { + s8 = []; + s9 = peg$parse_(); + while (s9 !== peg$FAILED) { + s8.push(s9); + s9 = peg$parse_(); + } + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 59) { + s9 = peg$c5; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c6); } + } + if (s9 === peg$FAILED) { + s9 = null; + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } + if (s4 !== peg$FAILED) { + s1 = peg$c7(s1, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsestmt() { + var s0; + + s0 = peg$parseattrStmt(); + if (s0 === peg$FAILED) { + s0 = peg$parseedgeStmt(); + if (s0 === peg$FAILED) { + s0 = peg$parsesubgraphStmt(); + if (s0 === peg$FAILED) { + s0 = peg$parseinlineAttrStmt(); + if (s0 === peg$FAILED) { + s0 = peg$parsenodeStmt(); + } + } + } + } + + return s0; + } + + function peg$parseattrStmt() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsegraph(); + if (s1 === peg$FAILED) { + s1 = peg$parsenode(); + if (s1 === peg$FAILED) { + s1 = peg$parseedge(); + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parse_(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parse_(); + } + if (s2 !== peg$FAILED) { + s3 = peg$parseattrList(); + if (s3 !== peg$FAILED) { + s1 = peg$c8(s1, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseinlineAttrStmt() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseid(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parse_(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parse_(); + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s3 = peg$c9; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parse_(); + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parse_(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parseid(); + if (s5 !== peg$FAILED) { + s1 = peg$c11(s1, s5); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsenodeStmt() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsenodeId(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parse_(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parse_(); + } + if (s2 !== peg$FAILED) { + s3 = peg$parseattrList(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s1 = peg$c12(s1, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseedgeStmt() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsenodeIdOrSubgraph(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parse_(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parse_(); + } + if (s2 !== peg$FAILED) { + s3 = peg$parseedgeRHS(); + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parse_(); + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parse_(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parseattrList(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s1 = peg$c13(s1, s3, s5); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesubgraphStmt() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$currPos; + s2 = peg$parsesubgraph(); + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parse_(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parse_(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parseid(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$parse_(); + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$parse_(); + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s2 = [s2, s3, s4]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 123) { + s2 = peg$c0; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c1); } + } + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parse_(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parse_(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsestmtList(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$parse_(); + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$parse_(); + } + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s6 = peg$c2; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c3); } + } + if (s6 !== peg$FAILED) { + s1 = peg$c14(s1, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseattrList() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseattrListBlock(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = []; + s5 = peg$parse_(); + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parse_(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parseattrListBlock(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = []; + s5 = peg$parse_(); + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parse_(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parseattrListBlock(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s1 = peg$c15(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseattrListBlock() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 91) { + s1 = peg$c16; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c17); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parse_(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parse_(); + } + if (s2 !== peg$FAILED) { + s3 = peg$parseaList(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parse_(); + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parse_(); + } + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 93) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s1 = peg$c20(s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseaList() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseidDef(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = []; + s5 = peg$parse_(); + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parse_(); + } + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s5 = peg$c21; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$parse_(); + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$parse_(); + } + if (s6 !== peg$FAILED) { + s7 = peg$parseidDef(); + if (s7 !== peg$FAILED) { + s4 = [s4, s5, s6, s7]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = []; + s5 = peg$parse_(); + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parse_(); + } + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s5 = peg$c21; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$parse_(); + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$parse_(); + } + if (s6 !== peg$FAILED) { + s7 = peg$parseidDef(); + if (s7 !== peg$FAILED) { + s4 = [s4, s5, s6, s7]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s1 = peg$c23(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseedgeRHS() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c24) { + s2 = peg$c24; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c25); } + } + if (s2 !== peg$FAILED) { + s3 = peg$c26(); + if (s3) { + s3 = peg$FAILED; + } else { + s3 = void 0; + } + if (s3 !== peg$FAILED) { + s2 = [s2, s3]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + if (s1 === peg$FAILED) { + s1 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 !== peg$FAILED) { + s3 = peg$c26(); + if (s3) { + s3 = void 0; + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s2 = [s2, s3]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parse_(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parse_(); + } + if (s2 !== peg$FAILED) { + s3 = peg$parsenodeIdOrSubgraph(); + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parse_(); + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parse_(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parseedgeRHS(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s1 = peg$c29(s3, s5); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseidDef() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseid(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parse_(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parse_(); + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$parse_(); + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$parse_(); + } + if (s5 !== peg$FAILED) { + s6 = peg$parseid(); + if (s6 !== peg$FAILED) { + s3 = [s3, s4, s5, s6]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s1 = peg$c30(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsenodeIdOrSubgraph() { + var s0, s1; + + s0 = peg$parsesubgraphStmt(); + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parsenodeId(); + if (s1 !== peg$FAILED) { + s1 = peg$c31(s1); + } + s0 = s1; + } + + return s0; + } + + function peg$parsenodeId() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseid(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parse_(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parse_(); + } + if (s2 !== peg$FAILED) { + s3 = peg$parseport(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s1 = peg$c32(s1); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseport() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 58) { + s1 = peg$c33; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parse_(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parse_(); + } + if (s2 !== peg$FAILED) { + s3 = peg$parseid(); + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parse_(); + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parse_(); + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 58) { + s6 = peg$c33; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s6 !== peg$FAILED) { + s7 = []; + s8 = peg$parse_(); + while (s8 !== peg$FAILED) { + s7.push(s8); + s8 = peg$parse_(); + } + if (s7 !== peg$FAILED) { + s8 = peg$parsecompassPt(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s1 = [s1, s2, s3, s4, s5]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecompassPt() { + var s0; + + if (input.substr(peg$currPos, 2) === peg$c35) { + s0 = peg$c35; + peg$currPos += 2; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c36); } + } + if (s0 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c37) { + s0 = peg$c37; + peg$currPos += 2; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c38); } + } + if (s0 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c39) { + s0 = peg$c39; + peg$currPos += 2; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c40); } + } + if (s0 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c41) { + s0 = peg$c41; + peg$currPos += 2; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c42); } + } + if (s0 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 110) { + s0 = peg$c43; + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c44); } + } + if (s0 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 101) { + s0 = peg$c45; + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c46); } + } + if (s0 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 115) { + s0 = peg$c47; + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c48); } + } + if (s0 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 119) { + s0 = peg$c49; + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s0 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 99) { + s0 = peg$c51; + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s0 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 95) { + s0 = peg$c53; + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parseid() { + var s0, s1, s2, s3, s4, s5, s6; + + peg$silentFails++; + s0 = peg$currPos; + if (peg$c56.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c57); } + } + if (s1 !== peg$FAILED) { + s2 = []; + if (peg$c58.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c59); } + } + while (s3 !== peg$FAILED) { + s2.push(s3); + if (peg$c58.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c59); } + } + } + if (s2 !== peg$FAILED) { + s1 = peg$c60(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s1 = peg$c61; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c62); } + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c63; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = []; + if (peg$c65.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c66); } + } + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + if (peg$c65.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c66); } + } + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = peg$c67(s1, s2, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s1 = peg$c61; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c62); } + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = []; + if (peg$c65.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c66); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (peg$c65.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c66); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c63; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s4 !== peg$FAILED) { + s5 = []; + if (peg$c65.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c66); } + } + while (s6 !== peg$FAILED) { + s5.push(s6); + if (peg$c65.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c66); } + } + } + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s1 = peg$c68(s1, s2, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 34) { + s1 = peg$c69; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c71) { + s4 = peg$c71; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s4 !== peg$FAILED) { + s4 = peg$c73(); + } + s3 = s4; + if (s3 === peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s4 = peg$c74; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s4 !== peg$FAILED) { + if (peg$c76.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s5 !== peg$FAILED) { + s4 = peg$c78(s5); + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 === peg$FAILED) { + if (peg$c76.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + } + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c71) { + s4 = peg$c71; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s4 !== peg$FAILED) { + s4 = peg$c73(); + } + s3 = s4; + if (s3 === peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s4 = peg$c74; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s4 !== peg$FAILED) { + if (peg$c76.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s5 !== peg$FAILED) { + s4 = peg$c78(s5); + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 === peg$FAILED) { + if (peg$c76.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + } + } + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 34) { + s3 = peg$c69; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + if (s3 !== peg$FAILED) { + s1 = peg$c79(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + } + } + peg$silentFails--; + if (s0 === peg$FAILED) { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c55); } + } + + return s0; + } + + function peg$parsenode() { + var s0, s1; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c80) { + s1 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s1 = peg$c82(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseedge() { + var s0, s1; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c83) { + s1 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c84); } + } + if (s1 !== peg$FAILED) { + s1 = peg$c82(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsegraph() { + var s0, s1; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c85) { + s1 = input.substr(peg$currPos, 5); + peg$currPos += 5; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s1 !== peg$FAILED) { + s1 = peg$c82(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsedigraph() { + var s0, s1; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 7).toLowerCase() === peg$c87) { + s1 = input.substr(peg$currPos, 7); + peg$currPos += 7; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s1 !== peg$FAILED) { + s1 = peg$c82(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesubgraph() { + var s0, s1; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 8).toLowerCase() === peg$c89) { + s1 = input.substr(peg$currPos, 8); + peg$currPos += 8; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s1 !== peg$FAILED) { + s1 = peg$c82(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsestrict() { + var s0, s1; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 6).toLowerCase() === peg$c91) { + s1 = input.substr(peg$currPos, 6); + peg$currPos += 6; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s1 !== peg$FAILED) { + s1 = peg$c82(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsegraphType() { + var s0, s1; + + s0 = peg$parsegraph(); + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parsedigraph(); + if (s1 !== peg$FAILED) { + s1 = peg$c93(s1); + } + s0 = s1; + } + + return s0; + } + + function peg$parsewhitespace() { + var s0, s1; + + peg$silentFails++; + s0 = []; + if (peg$c95.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + if (peg$c95.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + } + } else { + s0 = peg$FAILED; + } + peg$silentFails--; + if (s0 === peg$FAILED) { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + + return s0; + } + + function peg$parsecomment() { + var s0, s1, s2, s3, s4, s5; + + peg$silentFails++; + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c98) { + s1 = peg$c98; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s1 !== peg$FAILED) { + s2 = []; + if (peg$c100.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + while (s3 !== peg$FAILED) { + s2.push(s3); + if (peg$c100.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + } + if (s2 !== peg$FAILED) { + s1 = [s1, s2]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c102) { + s1 = peg$c102; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c104) { + s5 = peg$c104; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (input.length > peg$currPos) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c104) { + s5 = peg$c104; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (input.length > peg$currPos) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c104) { + s3 = peg$c104; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + peg$silentFails--; + if (s0 === peg$FAILED) { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + + return s0; + } + + function peg$parse_() { + var s0; + + s0 = peg$parsewhitespace(); + if (s0 === peg$FAILED) { + s0 = peg$parsecomment(); + } + + return s0; + } + + + function merge(a, b, key) { + + function x(a) { + a.forEach(function (b) { + if (!(b[key] in obj)) { + obj[b[key]] = obj[b[key]] || {}; + array.push(obj[b[key]]); + } + Object.keys(b).forEach(function (k) { + obj[b[key]][k] = b[k]; + }); + }); + } + + var array = [], + obj = {}; + + x(a); + x(b); + return array; + } + + var directed; + + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } + } + + root.d3dotparser1 = { + SyntaxError: peg$SyntaxError, + parse: peg$parse + }; +})(window); + +'use strict'; + +const dotparser = d3dotparser1; + +var load = function(url, converter, callback) { + if (arguments.length < 3) callback = converter, converter = simple; + var r = d3 + .request(url) + .mimeType("text/vnd.graphviz") + .response(function(xhr) { + return converter(dotparser.parse(xhr.responseText)); }); + return callback ? r.get(callback) : r; + }; + + function simple(dotgraph) { + + let nodeMap = {}; + function addNode(node) { + if (nodeMap[node.id]) return; + nodeMap[node.id] = node; + } + + if (dotgraph.length===0) return null; + let fgraph = dotgraph[0]; + + fgraph.stmts.filter((s) => s.type === "node" ).forEach(addNode); + let edges = fgraph.stmts.filter((s) => s.type === "edge" ); + let links = []; + for(let i=0; i Object.assign({id:n.id}, n.attrs)); + return { + nodes, + links + }; + } + +'use strict'; + +d3.dot = load; + +}))); diff --git a/build/d3-dot-graph.min.js b/build/d3-dot-graph.min.js new file mode 100644 index 0000000..a8cecd7 --- /dev/null +++ b/build/d3-dot-graph.min.js @@ -0,0 +1 @@ +(function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r():"function"==typeof define&&define.amd?define(r):r()})(0,function(){"use strict";function e(e){function r(e){t[e.id]||(t[e.id]=e)}let t={};if(0===e.length)return null;let n=e[0];n.stmts.filter(e=>"node"===e.type).forEach(r);let u=n.stmts.filter(e=>"edge"===e.type),s=[];for(let e=0;eObject.assign({id:e.id},e.attrs)),links:s}}(function(e,r){"function"==typeof define&&define.amd?define([],r):"object"==typeof module&&module.exports&&(module.exports=r())})(0,function(){function e(r,t,n,u){this.message=r,this.expected=t,this.found=n,this.location=u,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,e)}return function(e,r){function t(){this.constructor=e}t.prototype=r.prototype,e.prototype=new t}(e,Error),e.buildMessage=function(e,r){function t(e){return e.charCodeAt(0).toString(16).toUpperCase()}function n(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(e){return"\\x0"+t(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return"\\x"+t(e)})}function u(e){return e.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(e){return"\\x0"+t(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return"\\x"+t(e)})}function s(e){return o[e.type](e)}var o={literal:function(e){return'"'+n(e.text)+'"'},class:function(e){var r,t="";for(r=0;r0){for(r=1,t=1;rJr&&(Jr=Hr,Kr=[]),Kr.push(e))}function c(){var e,r;if(e=[],(r=a())!==D)for(;r!==D;)e.push(r),r=a();else e=D;return e}function a(){var e,t,n,u,s,o,f,c,a,h,p,d,A,g;for(e=Hr,t=[],n=q();n!==D;)t.push(n),n=q();if(t!==D)if(n=Hr,(u=R())!==D&&(s=q())!==D?n=u=[u,s]:(Hr=n,n=D),n===D&&(n=null),n!==D)if((u=Z())!==D){for(s=[],o=q();o!==D;)s.push(o),o=q();if(s!==D)if((o=L())===D&&(o=null),o!==D){for(f=[],c=q();c!==D;)f.push(c),c=q();if(f!==D)if(123===r.charCodeAt(Hr)?(c=I,Hr++):(c=D,0===Nr&&i(J)),c!==D){for(a=[],h=q();h!==D;)a.push(h),h=q();if(a!==D)if((h=l())===D&&(h=null),h!==D){for(p=[],d=q();d!==D;)p.push(d),d=q();if(p!==D)if(125===r.charCodeAt(Hr)?(d=K,Hr++):(d=D,0===Nr&&i(N)),d!==D){for(A=[],g=q();g!==D;)A.push(g),g=q();A!==D?e=t=P(n,u,o,h):(Hr=e,e=D)}else Hr=e,e=D;else Hr=e,e=D}else Hr=e,e=D;else Hr=e,e=D}else Hr=e,e=D;else Hr=e,e=D}else Hr=e,e=D;else Hr=e,e=D}else Hr=e,e=D;else Hr=e,e=D;else Hr=e,e=D;return e}function l(){var e,t,n,u,s,o,f,c,a,l;if(e=Hr,(t=h())!==D){for(n=[],u=q();u!==D;)n.push(u),u=q();if(n!==D)if(59===r.charCodeAt(Hr)?(u=Q,Hr++):(u=D,0===Nr&&i(V)),u===D&&(u=null),u!==D){for(s=[],o=Hr,f=[],c=q();c!==D;)f.push(c),c=q();if(f!==D)if((c=h())!==D){for(a=[],l=q();l!==D;)a.push(l),l=q();a!==D?(59===r.charCodeAt(Hr)?(l=Q,Hr++):(l=D,0===Nr&&i(V)),l===D&&(l=null),l!==D?o=f=[f,c,a,l]:(Hr=o,o=D)):(Hr=o,o=D)}else Hr=o,o=D;else Hr=o,o=D;for(;o!==D;){for(s.push(o),o=Hr,f=[],c=q();c!==D;)f.push(c),c=q();if(f!==D)if((c=h())!==D){for(a=[],l=q();l!==D;)a.push(l),l=q();a!==D?(59===r.charCodeAt(Hr)?(l=Q,Hr++):(l=D,0===Nr&&i(V)),l===D&&(l=null),l!==D?o=f=[f,c,a,l]:(Hr=o,o=D)):(Hr=o,o=D)}else Hr=o,o=D;else Hr=o,o=D}s!==D?e=t=W(t,s):(Hr=e,e=D)}else Hr=e,e=D;else Hr=e,e=D}else Hr=e,e=D;return e}function h(){var e;return(e=p())===D&&(e=g())===D&&(e=v())===D&&(e=d())===D&&(e=A()),e}function p(){var e,r,t,n;if(e=Hr,(r=T())===D&&(r=z())===D&&(r=S()),r!==D){for(t=[],n=q();n!==D;)t.push(n),n=q();t!==D&&(n=C())!==D?e=r=X(r,n):(Hr=e,e=D)}else Hr=e,e=D;return e}function d(){var e,t,n,u,s,o;if(e=Hr,(t=L())!==D){for(n=[],u=q();u!==D;)n.push(u),u=q();if(n!==D)if(61===r.charCodeAt(Hr)?(u=Y,Hr++):(u=D,0===Nr&&i(ee)),u!==D){for(s=[],o=q();o!==D;)s.push(o),o=q();s!==D&&(o=L())!==D?e=t=re(t,o):(Hr=e,e=D)}else Hr=e,e=D;else Hr=e,e=D}else Hr=e,e=D;return e}function A(){var e,r,t,n;if(e=Hr,(r=j())!==D){for(t=[],n=q();n!==D;)t.push(n),n=q();t!==D?((n=C())===D&&(n=null),n!==D?e=r=te(r,n):(Hr=e,e=D)):(Hr=e,e=D)}else Hr=e,e=D;return e}function g(){var e,r,t,n,u,s;if(e=Hr,(r=w())!==D){for(t=[],n=q();n!==D;)t.push(n),n=q();if(t!==D)if((n=m())!==D){for(u=[],s=q();s!==D;)u.push(s),s=q();u!==D?((s=C())===D&&(s=null),s!==D?e=r=ne(r,n,s):(Hr=e,e=D)):(Hr=e,e=D)}else Hr=e,e=D;else Hr=e,e=D}else Hr=e,e=D;return e}function v(){var e,t,n,u,s,o,f,c;if(e=Hr,t=Hr,(n=O())!==D){for(u=[],s=q();s!==D;)u.push(s),s=q();if(u!==D){if(s=Hr,(o=L())!==D){for(f=[],c=q();c!==D;)f.push(c),c=q();f!==D?s=o=[o,f]:(Hr=s,s=D)}else Hr=s,s=D;s===D&&(s=null),s!==D?t=n=[n,u,s]:(Hr=t,t=D)}else Hr=t,t=D}else Hr=t,t=D;if(t===D&&(t=null),t!==D)if(123===r.charCodeAt(Hr)?(n=I,Hr++):(n=D,0===Nr&&i(J)),n!==D){for(u=[],s=q();s!==D;)u.push(s),s=q();if(u!==D)if((s=l())===D&&(s=null),s!==D){for(o=[],f=q();f!==D;)o.push(f),f=q();o!==D?(125===r.charCodeAt(Hr)?(f=K,Hr++):(f=D,0===Nr&&i(N)),f!==D?e=t=ue(t,s):(Hr=e,e=D)):(Hr=e,e=D)}else Hr=e,e=D;else Hr=e,e=D}else Hr=e,e=D;else Hr=e,e=D;return e}function C(){var e,r,t,n,u,s;if(e=Hr,(r=b())!==D){for(t=[],n=Hr,u=[],s=q();s!==D;)u.push(s),s=q();for(u!==D&&(s=b())!==D?n=u=[u,s]:(Hr=n,n=D);n!==D;){for(t.push(n),n=Hr,u=[],s=q();s!==D;)u.push(s),s=q();u!==D&&(s=b())!==D?n=u=[u,s]:(Hr=n,n=D)}t!==D?e=r=se(r,t):(Hr=e,e=D)}else Hr=e,e=D;return e}function b(){var e,t,n,u,s,o;if(e=Hr,91===r.charCodeAt(Hr)?(t=oe,Hr++):(t=D,0===Nr&&i(fe)),t!==D){for(n=[],u=q();u!==D;)n.push(u),u=q();if(n!==D)if((u=y())===D&&(u=null),u!==D){for(s=[],o=q();o!==D;)s.push(o),o=q();s!==D?(93===r.charCodeAt(Hr)?(o=ie,Hr++):(o=D,0===Nr&&i(ce)),o!==D?e=t=ae(u):(Hr=e,e=D)):(Hr=e,e=D)}else Hr=e,e=D;else Hr=e,e=D}else Hr=e,e=D;return e}function y(){var e,t,n,u,s,o,f,c;if(e=Hr,(t=x())!==D){for(n=[],u=Hr,s=[],o=q();o!==D;)s.push(o),o=q();if(s!==D)if(44===r.charCodeAt(Hr)?(o=le,Hr++):(o=D,0===Nr&&i(he)),o===D&&(o=null),o!==D){for(f=[],c=q();c!==D;)f.push(c),c=q();f!==D&&(c=x())!==D?u=s=[s,o,f,c]:(Hr=u,u=D)}else Hr=u,u=D;else Hr=u,u=D;for(;u!==D;){for(n.push(u),u=Hr,s=[],o=q();o!==D;)s.push(o),o=q();if(s!==D)if(44===r.charCodeAt(Hr)?(o=le,Hr++):(o=D,0===Nr&&i(he)),o===D&&(o=null),o!==D){for(f=[],c=q();c!==D;)f.push(c),c=q();f!==D&&(c=x())!==D?u=s=[s,o,f,c]:(Hr=u,u=D)}else Hr=u,u=D;else Hr=u,u=D}n!==D?e=t=pe(t,n):(Hr=e,e=D)}else Hr=e,e=D;return e}function m(){var e,t,n,u,s,o;if(e=Hr,t=Hr,r.substr(Hr,2)===de?(n=de,Hr+=2):(n=D,0===Nr&&i(Ae)),n!==D&&(u=(u=ge())?D:void 0)!==D?t=n=[n,u]:(Hr=t,t=D),t===D&&(t=Hr,r.substr(Hr,2)===ve?(n=ve,Hr+=2):(n=D,0===Nr&&i(Ce)),n!==D&&(u=(u=ge())?void 0:D)!==D?t=n=[n,u]:(Hr=t,t=D)),t!==D){for(n=[],u=q();u!==D;)n.push(u),u=q();if(n!==D)if((u=w())!==D){for(s=[],o=q();o!==D;)s.push(o),o=q();s!==D?((o=m())===D&&(o=null),o!==D?e=t=be(u,o):(Hr=e,e=D)):(Hr=e,e=D)}else Hr=e,e=D;else Hr=e,e=D}else Hr=e,e=D;return e}function x(){var e,t,n,u,s,o,f;if(e=Hr,(t=L())!==D){for(n=Hr,u=[],s=q();s!==D;)u.push(s),s=q();if(u!==D)if(61===r.charCodeAt(Hr)?(s=Y,Hr++):(s=D,0===Nr&&i(ee)),s!==D){for(o=[],f=q();f!==D;)o.push(f),f=q();o!==D&&(f=L())!==D?n=u=[u,s,o,f]:(Hr=n,n=D)}else Hr=n,n=D;else Hr=n,n=D;n===D&&(n=null),n!==D?e=t=ye(t,n):(Hr=e,e=D)}else Hr=e,e=D;return e}function w(){var e,r;return(e=v())===D&&(e=Hr,(r=j())!==D&&(r=me(r)),e=r),e}function j(){var e,r,t,n;if(e=Hr,(r=L())!==D){for(t=[],n=q();n!==D;)t.push(n),n=q();t!==D?((n=E())===D&&(n=null),n!==D?e=r=xe(r):(Hr=e,e=D)):(Hr=e,e=D)}else Hr=e,e=D;return e}function E(){var e,t,n,u,s,o,f,c,a;if(e=Hr,58===r.charCodeAt(Hr)?(t=we,Hr++):(t=D,0===Nr&&i(je)),t!==D){for(n=[],u=q();u!==D;)n.push(u),u=q();if(n!==D)if((u=L())!==D){for(s=[],o=q();o!==D;)s.push(o),o=q();if(s!==D){if(o=Hr,58===r.charCodeAt(Hr)?(f=we,Hr++):(f=D,0===Nr&&i(je)),f!==D){for(c=[],a=q();a!==D;)c.push(a),a=q();c!==D&&(a=F())!==D?o=f=[f,c,a]:(Hr=o,o=D)}else Hr=o,o=D;o===D&&(o=null),o!==D?e=t=[t,n,u,s,o]:(Hr=e,e=D)}else Hr=e,e=D}else Hr=e,e=D;else Hr=e,e=D}else Hr=e,e=D;return e}function F(){var e;return r.substr(Hr,2)===Ee?(e=Ee,Hr+=2):(e=D,0===Nr&&i(Fe)),e===D&&(r.substr(Hr,2)===Le?(e=Le,Hr+=2):(e=D,0===Nr&&i(_e)),e===D&&(r.substr(Hr,2)===ze?(e=ze,Hr+=2):(e=D,0===Nr&&i(Se)),e===D&&(r.substr(Hr,2)===Te?(e=Te,Hr+=2):(e=D,0===Nr&&i(ke)),e===D&&(110===r.charCodeAt(Hr)?(e=Oe,Hr++):(e=D,0===Nr&&i(Re)),e===D&&(101===r.charCodeAt(Hr)?(e=Ze,Hr++):(e=D,0===Nr&&i(Me)),e===D&&(115===r.charCodeAt(Hr)?(e=$e,Hr++):(e=D,0===Nr&&i(qe)),e===D&&(119===r.charCodeAt(Hr)?(e=Ue,Hr++):(e=D,0===Nr&&i(Be)),e===D&&(99===r.charCodeAt(Hr)?(e=De,Hr++):(e=D,0===Nr&&i(Ge)),e===D&&(95===r.charCodeAt(Hr)?(e=He,Hr++):(e=D,0===Nr&&i(Ie))))))))))),e}function L(){var e,t,n,u,s,o,f;if(Nr++,e=Hr,Ke.test(r.charAt(Hr))?(t=r.charAt(Hr),Hr++):(t=D,0===Nr&&i(Ne)),t!==D){for(n=[],Pe.test(r.charAt(Hr))?(u=r.charAt(Hr),Hr++):(u=D,0===Nr&&i(Qe));u!==D;)n.push(u),Pe.test(r.charAt(Hr))?(u=r.charAt(Hr),Hr++):(u=D,0===Nr&&i(Qe));n!==D?e=t=Ve(t,n):(Hr=e,e=D)}else Hr=e,e=D;if(e===D){if(e=Hr,45===r.charCodeAt(Hr)?(t=We,Hr++):(t=D,0===Nr&&i(Xe)),t===D&&(t=null),t!==D)if(46===r.charCodeAt(Hr)?(n=Ye,Hr++):(n=D,0===Nr&&i(er)),n!==D){if(u=[],rr.test(r.charAt(Hr))?(s=r.charAt(Hr),Hr++):(s=D,0===Nr&&i(tr)),s!==D)for(;s!==D;)u.push(s),rr.test(r.charAt(Hr))?(s=r.charAt(Hr),Hr++):(s=D,0===Nr&&i(tr));else u=D;u!==D?e=t=nr(t,n,u):(Hr=e,e=D)}else Hr=e,e=D;else Hr=e,e=D;if(e===D){if(e=Hr,45===r.charCodeAt(Hr)?(t=We,Hr++):(t=D,0===Nr&&i(Xe)),t===D&&(t=null),t!==D){if(n=[],rr.test(r.charAt(Hr))?(u=r.charAt(Hr),Hr++):(u=D,0===Nr&&i(tr)),u!==D)for(;u!==D;)n.push(u),rr.test(r.charAt(Hr))?(u=r.charAt(Hr),Hr++):(u=D,0===Nr&&i(tr));else n=D;if(n!==D){if(u=Hr,46===r.charCodeAt(Hr)?(s=Ye,Hr++):(s=D,0===Nr&&i(er)),s!==D){for(o=[],rr.test(r.charAt(Hr))?(f=r.charAt(Hr),Hr++):(f=D,0===Nr&&i(tr));f!==D;)o.push(f),rr.test(r.charAt(Hr))?(f=r.charAt(Hr),Hr++):(f=D,0===Nr&&i(tr));o!==D?u=s=[s,o]:(Hr=u,u=D)}else Hr=u,u=D;u===D&&(u=null),u!==D?e=t=ur(t,n,u):(Hr=e,e=D)}else Hr=e,e=D}else Hr=e,e=D;if(e===D)if(e=Hr,34===r.charCodeAt(Hr)?(t=sr,Hr++):(t=D,0===Nr&&i(or)),t!==D){for(n=[],u=Hr,r.substr(Hr,2)===fr?(s=fr,Hr+=2):(s=D,0===Nr&&i(ir)),s!==D&&(s=cr()),(u=s)===D&&(u=Hr,92===r.charCodeAt(Hr)?(s=ar,Hr++):(s=D,0===Nr&&i(lr)),s!==D?(hr.test(r.charAt(Hr))?(o=r.charAt(Hr),Hr++):(o=D,0===Nr&&i(pr)),o!==D?u=s=dr(o):(Hr=u,u=D)):(Hr=u,u=D),u===D&&(hr.test(r.charAt(Hr))?(u=r.charAt(Hr),Hr++):(u=D,0===Nr&&i(pr))));u!==D;)n.push(u),u=Hr,r.substr(Hr,2)===fr?(s=fr,Hr+=2):(s=D,0===Nr&&i(ir)),s!==D&&(s=cr()),(u=s)===D&&(u=Hr,92===r.charCodeAt(Hr)?(s=ar,Hr++):(s=D,0===Nr&&i(lr)),s!==D?(hr.test(r.charAt(Hr))?(o=r.charAt(Hr),Hr++):(o=D,0===Nr&&i(pr)),o!==D?u=s=dr(o):(Hr=u,u=D)):(Hr=u,u=D),u===D&&(hr.test(r.charAt(Hr))?(u=r.charAt(Hr),Hr++):(u=D,0===Nr&&i(pr))));n!==D?(34===r.charCodeAt(Hr)?(u=sr,Hr++):(u=D,0===Nr&&i(or)),u!==D?e=t=Ar(n):(Hr=e,e=D)):(Hr=e,e=D)}else Hr=e,e=D}}return Nr--,e===D&&(t=D,0===Nr&&i(Je)),e}function z(){var e;return r.substr(Hr,4).toLowerCase()===gr?(e=r.substr(Hr,4),Hr+=4):(e=D,0===Nr&&i(vr)),e!==D&&(e=Cr(e)),e}function S(){var e;return r.substr(Hr,4).toLowerCase()===br?(e=r.substr(Hr,4),Hr+=4):(e=D,0===Nr&&i(yr)),e!==D&&(e=Cr(e)),e}function T(){var e;return r.substr(Hr,5).toLowerCase()===mr?(e=r.substr(Hr,5),Hr+=5):(e=D,0===Nr&&i(xr)),e!==D&&(e=Cr(e)),e}function k(){var e;return r.substr(Hr,7).toLowerCase()===wr?(e=r.substr(Hr,7),Hr+=7):(e=D,0===Nr&&i(jr)),e!==D&&(e=Cr(e)),e}function O(){var e;return r.substr(Hr,8).toLowerCase()===Er?(e=r.substr(Hr,8),Hr+=8):(e=D,0===Nr&&i(Fr)),e!==D&&(e=Cr(e)),e}function R(){var e;return r.substr(Hr,6).toLowerCase()===Lr?(e=r.substr(Hr,6),Hr+=6):(e=D,0===Nr&&i(_r)),e!==D&&(e=Cr(e)),e}function Z(){var e,r;return(e=T())===D&&(e=Hr,(r=k())!==D&&(r=zr(r)),e=r),e}function M(){var e,t;if(Nr++,e=[],Tr.test(r.charAt(Hr))?(t=r.charAt(Hr),Hr++):(t=D,0===Nr&&i(kr)),t!==D)for(;t!==D;)e.push(t),Tr.test(r.charAt(Hr))?(t=r.charAt(Hr),Hr++):(t=D,0===Nr&&i(kr));else e=D;return Nr--,e===D&&(t=D,0===Nr&&i(Sr)),e}function $(){var e,t,n,u,s,o;if(Nr++,e=Hr,r.substr(Hr,2)===Rr?(t=Rr,Hr+=2):(t=D,0===Nr&&i(Zr)),t!==D){for(n=[],Mr.test(r.charAt(Hr))?(u=r.charAt(Hr),Hr++):(u=D,0===Nr&&i($r));u!==D;)n.push(u),Mr.test(r.charAt(Hr))?(u=r.charAt(Hr),Hr++):(u=D,0===Nr&&i($r));n!==D?e=t=[t,n]:(Hr=e,e=D)}else Hr=e,e=D;if(e===D)if(e=Hr,r.substr(Hr,2)===qr?(t=qr,Hr+=2):(t=D,0===Nr&&i(Ur)),t!==D){for(n=[],u=Hr,s=Hr,Nr++,r.substr(Hr,2)===Br?(o=Br,Hr+=2):(o=D,0===Nr&&i(Dr)),Nr--,o===D?s=void 0:(Hr=s,s=D),s!==D?(r.length>Hr?(o=r.charAt(Hr),Hr++):(o=D,0===Nr&&i(Gr)),o!==D?u=s=[s,o]:(Hr=u,u=D)):(Hr=u,u=D);u!==D;)n.push(u),u=Hr,s=Hr,Nr++,r.substr(Hr,2)===Br?(o=Br,Hr+=2):(o=D,0===Nr&&i(Dr)),Nr--,o===D?s=void 0:(Hr=s,s=D),s!==D?(r.length>Hr?(o=r.charAt(Hr),Hr++):(o=D,0===Nr&&i(Gr)),o!==D?u=s=[s,o]:(Hr=u,u=D)):(Hr=u,u=D);n!==D?(r.substr(Hr,2)===Br?(u=Br,Hr+=2):(u=D,0===Nr&&i(Dr)),u!==D?e=t=[t,n,u]:(Hr=e,e=D)):(Hr=e,e=D)}else Hr=e,e=D;return Nr--,e===D&&(t=D,0===Nr&&i(Or)),e}function q(){var e;return(e=M())===D&&(e=$()),e}function U(e,r,t){function n(e){e.forEach(function(e){e[t]in s||(s[e[t]]=s[e[t]]||{},u.push(s[e[t]])),Object.keys(e).forEach(function(r){s[e[t]][r]=e[r]})})}var u=[],s={};return n(e),n(r),u}t=void 0!==t?t:{};var B,D={},G={start:c},H=c,I="{",J=n("{",!1),K="}",N=n("}",!1),P=function(e,r,t,n){return{type:r,id:t,strict:null!==e,stmts:n}},Q=";",V=n(";",!1),W=function(e,r){for(var t=[e],n=0;n",!1),be=function(e,r){var t=[e];if(r)for(var n=0;n - - + - - - diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..2351d77 --- /dev/null +++ b/src/index.js @@ -0,0 +1,5 @@ +'use strict'; + +import load from "./load.js"; + +d3.dot = load; diff --git a/src/d3-dot-graph.js b/src/load.js similarity index 85% rename from src/d3-dot-graph.js rename to src/load.js index f49b693..e61e3ee 100644 --- a/src/d3-dot-graph.js +++ b/src/load.js @@ -1,11 +1,16 @@ -d3.dot = - function(url, converter, callback) { +'use strict'; + +import "./dot-parser.js"; + +const dotparser = d3dotparser1; + +export default function(url, converter, callback) { if (arguments.length < 3) callback = converter, converter = simple; var r = d3 .request(url) .mimeType("text/vnd.graphviz") .response(function(xhr) { - return converter(d3dot.parse(xhr.responseText)); }); + return converter(dotparser.parse(xhr.responseText)); }); return callback ? r.get(callback) : r; };