From d2829511255f4ab7445ededa4f2f1f12b256af37 Mon Sep 17 00:00:00 2001 From: Marko Stijak Date: Sun, 20 Mar 2016 17:13:05 +0100 Subject: [PATCH 1/5] Update compiled-grammar.js Fixes browser error. --- lib/route/compiled-grammar.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/route/compiled-grammar.js b/lib/route/compiled-grammar.js index e6e2236..782bdde 100644 --- a/lib/route/compiled-grammar.js +++ b/lib/route/compiled-grammar.js @@ -153,15 +153,15 @@ parse: function parse(input) { vstack.length = vstack.length - n; lstack.length = lstack.length - n; } - _token_stack: - function lex() { - var token; - token = lexer.lex() || EOF; - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; + + function lex() { + var token; + token = lexer.lex() || EOF; + if (typeof token !== 'number') { + token = self.symbols_[token] || token; } + return token; + } var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; while (true) { state = stack[stack.length - 1]; @@ -623,4 +623,4 @@ if (typeof require !== 'undefined' && typeof exports !== 'undefined') { exports.parser = parser; exports.Parser = parser.Parser; exports.parse = function () { return parser.parse.apply(parser, arguments); }; -} \ No newline at end of file +} From a684d385b543530c63aa9156d1caaa9eacb70443 Mon Sep 17 00:00:00 2001 From: Marko Stijak Date: Wed, 23 Mar 2016 18:44:39 +0100 Subject: [PATCH 2/5] updating jison to v0.4.17 --- lib/route/compiled-grammar.js | 30 ++++++++++++++++++------------ package.json | 2 +- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/lib/route/compiled-grammar.js b/lib/route/compiled-grammar.js index 782bdde..58e6c01 100644 --- a/lib/route/compiled-grammar.js +++ b/lib/route/compiled-grammar.js @@ -1,4 +1,4 @@ -/* parser generated by jison 0.4.15 */ +/* parser generated by jison 0.4.17 */ /* Returns a Parser object of the following structure: @@ -121,7 +121,13 @@ parseError: function parseError(str, hash) { if (hash.recoverable) { this.trace(str); } else { - throw new Error(str); + function _parseError (msg, hash) { + this.message = msg; + this.hash = hash; + } + _parseError.prototype = Error; + + throw new _parseError(str, hash); } }, parse: function parse(input) { @@ -153,15 +159,15 @@ parse: function parse(input) { vstack.length = vstack.length - n; lstack.length = lstack.length - n; } - - function lex() { - var token; - token = lexer.lex() || EOF; - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; - } + _token_stack: + var lex = function () { + var token; + token = lexer.lex() || EOF; + if (typeof token !== 'number') { + token = self.symbols_[token] || token; + } + return token; + }; var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; while (true) { state = stack[stack.length - 1]; @@ -623,4 +629,4 @@ if (typeof require !== 'undefined' && typeof exports !== 'undefined') { exports.parser = parser; exports.Parser = parser.Parser; exports.parse = function () { return parser.parse.apply(parser, arguments); }; -} +} \ No newline at end of file diff --git a/package.json b/package.json index 08fb373..2a93a78 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "gulp": "~3.9.0", "gulp-exec": "~1.0.4", "gulp-jshint": "~1.11.2", - "jison": "~0.4.13", + "jison": "~0.4.17", "jison-lex": "~0.3.4", "jsdoc": "~3.3.0-alpha4", "jshint-stylish": "~0.1.5", From 79acd24d5913c9f478060d2faa1558165bea5182 Mon Sep 17 00:00:00 2001 From: Marko Stijak Date: Sun, 20 Mar 2016 17:13:05 +0100 Subject: [PATCH 3/5] updating jison to v0.4.17 --- lib/route/compiled-grammar.js | 14 ++++++++++---- package.json | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/route/compiled-grammar.js b/lib/route/compiled-grammar.js index e6e2236..58e6c01 100644 --- a/lib/route/compiled-grammar.js +++ b/lib/route/compiled-grammar.js @@ -1,4 +1,4 @@ -/* parser generated by jison 0.4.15 */ +/* parser generated by jison 0.4.17 */ /* Returns a Parser object of the following structure: @@ -121,7 +121,13 @@ parseError: function parseError(str, hash) { if (hash.recoverable) { this.trace(str); } else { - throw new Error(str); + function _parseError (msg, hash) { + this.message = msg; + this.hash = hash; + } + _parseError.prototype = Error; + + throw new _parseError(str, hash); } }, parse: function parse(input) { @@ -154,14 +160,14 @@ parse: function parse(input) { lstack.length = lstack.length - n; } _token_stack: - function lex() { + var lex = function () { var token; token = lexer.lex() || EOF; if (typeof token !== 'number') { token = self.symbols_[token] || token; } return token; - } + }; var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; while (true) { state = stack[stack.length - 1]; diff --git a/package.json b/package.json index 08fb373..2a93a78 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "gulp": "~3.9.0", "gulp-exec": "~1.0.4", "gulp-jshint": "~1.11.2", - "jison": "~0.4.13", + "jison": "~0.4.17", "jison-lex": "~0.3.4", "jsdoc": "~3.3.0-alpha4", "jshint-stylish": "~0.1.5", From e9fa4bb6481b45eb7cc1b441c374ce48b33de6da Mon Sep 17 00:00:00 2001 From: Cezary Daniel Nowak Date: Mon, 2 Nov 2015 01:30:25 +0100 Subject: [PATCH 4/5] using route-parser with new keyword Update compiled-grammar.js Fixes browser error. --- lib/route.js | 22 +++++++++++++++------- lib/route/compiled-grammar.js | 18 +++++++++--------- test/test.js | 9 +++++++++ 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/lib/route.js b/lib/route.js index 73df8b1..7ef1ef3 100644 --- a/lib/route.js +++ b/lib/route.js @@ -3,7 +3,7 @@ var Parser = require('./route/parser'), RegexpVisitor = require('./route/visitors/regexp'), ReverseVisitor = require('./route/visitors/reverse'); -var RoutePrototype = Object.create(null); +Route.prototype = Object.create(null) /** * Match a path against this route, returning the matched parameters if @@ -18,7 +18,7 @@ var RoutePrototype = Object.create(null); * @return {(Object.|false)} A map of the matched route * parameters, or false if matching failed */ -RoutePrototype.match = function(path) { +Route.prototype.match = function(path) { var re = RegexpVisitor.visit(this.ast), matched = re.match(path); @@ -35,7 +35,7 @@ RoutePrototype.match = function(path) { * @param {Object} params The parameters to fill in * @return {(String|false)} The filled in path */ -RoutePrototype.reverse = function(params) { +Route.prototype.reverse = function(params) { return ReverseVisitor.visit(this.ast, params); }; @@ -50,13 +50,21 @@ RoutePrototype.reverse = function(params) { * and () for optional route branches * @constructor */ - -module.exports = function(spec) { - var route = Object.create(RoutePrototype); +function Route(spec) { + var route; + if (this) { + // constructor called with new + route = this; + } else { + // constructor called as a function + route = Object.create(Route.prototype); + } if( typeof spec === 'undefined' ) { throw new Error('A route spec is required'); } route.spec = spec; route.ast = Parser.parse(spec); return route; -} \ No newline at end of file +} + +module.exports = Route; \ No newline at end of file diff --git a/lib/route/compiled-grammar.js b/lib/route/compiled-grammar.js index e6e2236..782bdde 100644 --- a/lib/route/compiled-grammar.js +++ b/lib/route/compiled-grammar.js @@ -153,15 +153,15 @@ parse: function parse(input) { vstack.length = vstack.length - n; lstack.length = lstack.length - n; } - _token_stack: - function lex() { - var token; - token = lexer.lex() || EOF; - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; + + function lex() { + var token; + token = lexer.lex() || EOF; + if (typeof token !== 'number') { + token = self.symbols_[token] || token; } + return token; + } var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; while (true) { state = stack[stack.length - 1]; @@ -623,4 +623,4 @@ if (typeof require !== 'undefined' && typeof exports !== 'undefined') { exports.parser = parser; exports.Parser = parser.Parser; exports.parse = function () { return parser.parse.apply(parser, arguments); }; -} \ No newline at end of file +} diff --git a/test/test.js b/test/test.js index 0e00c3b..317c38d 100644 --- a/test/test.js +++ b/test/test.js @@ -11,6 +11,15 @@ describe('Route', function() { assert.ok(RouteParser('/foo')); }); + it('should create with new', function() { + assert.ok(new RouteParser('/foo')); + }); + + it('should have proper prototype', function() { + var routeInstance = new RouteParser('/foo') + assert.ok(routeInstance instanceof RouteParser); + }); + it('should throw on no spec',function() { assert.throw(function(){ RouteParser(); }, Error, /spec is required/); }); From 4122069a3b7f13e2ffa039a3a099d3f408c1cf2f Mon Sep 17 00:00:00 2001 From: Marko Stijak Date: Wed, 23 Mar 2016 18:44:39 +0100 Subject: [PATCH 5/5] updating jison to v0.4.17 --- lib/route/compiled-grammar.js | 30 ++++++++++++++++++------------ package.json | 2 +- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/lib/route/compiled-grammar.js b/lib/route/compiled-grammar.js index 782bdde..58e6c01 100644 --- a/lib/route/compiled-grammar.js +++ b/lib/route/compiled-grammar.js @@ -1,4 +1,4 @@ -/* parser generated by jison 0.4.15 */ +/* parser generated by jison 0.4.17 */ /* Returns a Parser object of the following structure: @@ -121,7 +121,13 @@ parseError: function parseError(str, hash) { if (hash.recoverable) { this.trace(str); } else { - throw new Error(str); + function _parseError (msg, hash) { + this.message = msg; + this.hash = hash; + } + _parseError.prototype = Error; + + throw new _parseError(str, hash); } }, parse: function parse(input) { @@ -153,15 +159,15 @@ parse: function parse(input) { vstack.length = vstack.length - n; lstack.length = lstack.length - n; } - - function lex() { - var token; - token = lexer.lex() || EOF; - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; - } + _token_stack: + var lex = function () { + var token; + token = lexer.lex() || EOF; + if (typeof token !== 'number') { + token = self.symbols_[token] || token; + } + return token; + }; var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; while (true) { state = stack[stack.length - 1]; @@ -623,4 +629,4 @@ if (typeof require !== 'undefined' && typeof exports !== 'undefined') { exports.parser = parser; exports.Parser = parser.Parser; exports.parse = function () { return parser.parse.apply(parser, arguments); }; -} +} \ No newline at end of file diff --git a/package.json b/package.json index 08fb373..2a93a78 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "gulp": "~3.9.0", "gulp-exec": "~1.0.4", "gulp-jshint": "~1.11.2", - "jison": "~0.4.13", + "jison": "~0.4.17", "jison-lex": "~0.3.4", "jsdoc": "~3.3.0-alpha4", "jshint-stylish": "~0.1.5",