diff --git a/src/js/schema/idGenerator.js b/src/js/schema/idGenerator.js deleted file mode 100644 index 047de94..0000000 --- a/src/js/schema/idGenerator.js +++ /dev/null @@ -1,120 +0,0 @@ -var constants = require('./constants.js'); -var print = require('util').print; - -function IdGeneratorComponent(type, ext) { - this.type = type; -} - -IdGeneratorComponent.prototype.toString = function() { - switch(this.type) { - case "prop": - return "{prop:" + this.delimiter + ":" + this.name + "}"; - case "seq": - return "{seq}"; - case "random": - return "{random:" + this.length + "/" + this.base + "}"; - case "static": - return this.value; - case "edge": - return "{edge:" + this.delimiter + ":" + this.name + "}"; - } -}; - -function IdGenerator(components) { - this.components = components.slice(); -} - -IdGenerator.prototype.toString = function() { - return this.components.join(""); -}; - -function prop (name, delimiter) { - var c = new IdGeneratorComponent("prop"); - c.name = name; - c.delimiter = delimiter !== undefined ? delimiter : constants.ID_PROP_DEFAULT_DELIMITER; - return c; -} - -function sequential () { - return new IdGeneratorComponent("seq"); -} - -function random (length, base) { - var c = new IdGeneratorComponent("random"); - c.length = length !== undefined ? length : constants.ID_RANDOM_DEFAULT_LENGTH; - c.base = base !== undefined ? base : constants.ID_RANDOM_DEFAULT_BASE; - return c; -} - -function staticValue (value) { - var c = new IdGeneratorComponent("static"); - c.value = value; - return c; -} - -function edge(name, delimiter) { - var c = new IdGeneratorComponent("edge"); - c.name = name; - c.delimiter = delimiter !== undefined ? delimiter : constants.ID_EDGE_DEFAULT_DELIMITER; - return c; -} - -function generator(components) { - return new IdGenerator(components); -} - -var staticRegex = /^[^\{}]+/; -var seqRegex = /^\{seq}/; -var randomRegex = /^\{random(?::([0-9]+)(?:\/([0-9]+))?)?}/; -var propRegex = /^\{prop(?::([^:{}]*))?:([^:{}]+)}/; -var edgeRegex = /^\{edge(?::([^:{}]*))?:([^:{}]+)}/; - -function parse(pattern) { - var components = []; - var offset = 0; - while (offset < pattern.length) { - var currTarget = pattern.slice(offset); - var result = staticRegex.exec(currTarget); - if (result) { - offset += result[0].length; - components.push(staticValue(result[0])); - continue; - } - result = seqRegex.exec(currTarget); - if (result) { - offset += result[0].length; - components.push(sequential()); - continue; - } - result = randomRegex.exec(currTarget); - if (result) { - offset += result[0].length; - components.push(random(result[1], result[2])); - continue; - } - result = propRegex.exec(currTarget); - if (result) { - offset += result[0].length; - components.push(prop(result[2], result[1])); - continue; - } - result = edgeRegex.exec(currTarget); - if (result) { - offset += result[0].length; - components.push(edge(result[2], result[1])); - continue; - } - // if we get there, this is an invalid pattern - throw Error("Unable to parse idGenerator pattern '" + pattern + "', beginning with the text '" + currTarget + "'."); - } - var idGenerator = new IdGenerator(components); - return idGenerator; -} - -module.exports.generator = generator; -module.exports.parse = parse; -module.exports.prop = prop; -module.exports.sequential = sequential; -module.exports.random = random; -module.exports.staticValue = staticValue; -module.exports.edge = edge; diff --git a/src/js/schema/nodeType.js b/src/js/schema/nodeType.js index 05b6565..300db7f 100644 --- a/src/js/schema/nodeType.js +++ b/src/js/schema/nodeType.js @@ -3,9 +3,8 @@ var propertySpec = require("./propertySpec.js"); var edgeSpec = require("./edgeSpec.js"); var constants = require("./constants.js"); -function NodeType(name, idGeneratorPattern, description, propertySpecMap, edgeSpecMap, traitSpan, traitSequence, traitSpanContainer, spanType) { +function NodeType(name, description, propertySpecMap, edgeSpecMap, traitSpan, traitSequence, traitSpanContainer, spanType) { this.name = name; - this.idGeneratorPattern = idGeneratorPattern; this.description = description; this.propertySpecMap = propertySpecMap; this.edgeSpecMap = edgeSpecMap; @@ -26,7 +25,6 @@ function NodeTypeBuilder() { NodeTypeBuilder.prototype.withParent = function(parent) { this.withName(parent.name); - this.withIdGeneratorPattern(parent.idGeneratorPattern); this.withDescription(parent.description); this.traitSpan = parent.traitSpan; this.traitSequence = parent.traitSequence; @@ -68,10 +66,6 @@ NodeTypeBuilder.prototype.withName = function(name) { return this; }; -NodeTypeBuilder.prototype.withIdGeneratorPattern = function(pattern) { - this.idGeneratorPattern = pattern; -}; - NodeTypeBuilder.prototype.withDescription = function(description) { this.description = description; return this; @@ -147,7 +141,7 @@ NodeTypeBuilder.prototype.build = function() { if (this.name === undefined) { throw Error("No name supplied for NodeType."); } - return new NodeType(this.name, this.idGeneratorPattern, this.description, Object.freeze(this.propertySpecMap), Object.freeze(this.edgeSpecMap), + return new NodeType(this.name, this.description, Object.freeze(this.propertySpecMap), Object.freeze(this.edgeSpecMap), this.traitSpan, this.traitSequence, this.traitSpanContainer, this.spanType); }; diff --git a/src/js/schema/xml.js b/src/js/schema/xml.js index 3fe07d9..b258fe3 100644 --- a/src/js/schema/xml.js +++ b/src/js/schema/xml.js @@ -1,7 +1,6 @@ var schema = require("./schema.js"); var sax = require("sax"); var print = require("util").print; -var idGenerator = require("./idGenerator.js"); var constants = require("./constants.js"); var Q = require('q'); @@ -68,9 +67,6 @@ function doParse(readableStream, locator) { break; case "nodeType": nodeBuilder = schemaBuilder.createNodeTypeBuilder().withName(tag.attributes.name.value); - var pattern = tag.attributes.idGenerator.value; - var nodeIdGenerator = idGenerator.parse(pattern); - nodeBuilder.withIdGeneratorPattern(nodeIdGenerator); break; case "span": nodeBuilder.asSpan(); diff --git a/test/idGenerator-test.js b/test/idGenerator-test.js deleted file mode 100644 index 5565ac1..0000000 --- a/test/idGenerator-test.js +++ /dev/null @@ -1,52 +0,0 @@ -var assert = require('assert'); -var print = require('util').print; -var idGenerator = require('../src/js/schema/idGenerator.js'); - -var prop = idGenerator.prop; -var sequential = idGenerator.sequential; -var random = idGenerator.random; -var staticValue = idGenerator.staticValue; -var edge = idGenerator.edge; - -function pattern(pattern) { - var components = []; - // start with arg 1 since we aren't counting 'pattern' - // we don't use 'slice' here due to the optimization warning here: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments - for (var i = 1; i < arguments.length; i++) { - components[i-1] = arguments[i]; - } - return {pattern: pattern, generator: idGenerator.generator(components)}; -} - -var testCases = [ - pattern("{seq}", sequential()), - pattern("{random}", random()), - pattern("{prop:p1}", prop("p1")), - pattern("myNode", staticValue("myNode")), - pattern("myNode-{seq}-stuff", staticValue("myNode-"), sequential(), staticValue("-stuff")), - pattern("myNode-{random}-stuff", staticValue("myNode-"), random(), staticValue("-stuff")), - pattern("myNode-{prop:p1}-stuff", staticValue("myNode-"), prop("p1"), staticValue("-stuff")), - pattern("my-{seq}-{random}-{prop:p1}-{prop:p2}-stuff", staticValue("my-"), sequential(), staticValue("-"), random(), staticValue("-"), prop("p1"), staticValue("-"), prop("p2"), staticValue("-stuff")), - pattern("{random:4}", random(4)), - pattern("{random:4/36}", random(4, 36)), - pattern("{random:6}", random(6)), - pattern("{prop:,:p1}", prop("p1", ",")), - // empty string is no longer a valid delimiter - pattern("{prop:|:p1}", prop("p1", "|")), - pattern("{prop: __ :p1}", prop("p1", " __ ")), - pattern("{edge:e1}", edge("e1")), - pattern("{edge:*:e1}", edge("e1", "*")), - pattern("myNode-{edge:e1}-stuff", staticValue("myNode-"), edge("e1"), staticValue("-stuff")) -]; - -describe("parse id generator patterns", function() { - for (var i = 0; i < testCases.length; i++) { - (function (testCase) { - it("generator pattern " + testCase.pattern + " should parse to the expected generator object", function () - { - var parsed = idGenerator.parse(testCase.pattern); - assert.deepEqual(parsed, testCase.generator); - }) - })(testCases[i]); - } -});