Socket
Socket
Sign inDemoInstall

parsimmon

Package Overview
Dependencies
Maintainers
1
Versions
49
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

parsimmon - npm Package Compare versions

Comparing version 0.4.0 to 0.5.0

93

build/parsimmon.browser.js

@@ -153,2 +153,37 @@ var Parsimmon = (function(undefined) {

// [Parser a] -> Parser [a]
var seq = Parsimmon.seq = function() {
var parsers = [].slice.call(arguments);
var numParsers = parsers.length;
return Parser(function(stream, i) {
var result;
var accum = new Array(numParsers);
for (var j = 0; j < numParsers; j += 1) {
result = furthestBacktrackFor(parsers[j]._(stream, i), result);
if (!result.status) return result;
accum[j] = result.value
i = result.index;
}
return furthestBacktrackFor(makeSuccess(i, accum), result);
});
};
var alt = Parsimmon.alt = function() {
var parsers = [].slice.call(arguments);
var numParsers = parsers.length;
if (numParsers === 0) return fail('zero alternates')
return Parser(function(stream, i) {
var result;
for (var j = 0; j < parsers.length; j += 1) {
result = furthestBacktrackFor(parsers[j]._(stream, i), result);
if (result.status) return result;
}
return result;
});
};
// -*- primitive combinators -*- //

@@ -291,2 +326,6 @@ _.or = function(alternative) {

_.desc = function(expected) {
return this.or(fail(expected))
};
// -*- primitive parsers -*- //

@@ -335,7 +374,7 @@ var string = Parsimmon.string = function(str) {

var letter = Parsimmon.letter = regex(/[a-z]/i);
var letters = Parsimmon.letters = regex(/[a-z]*/i);
var digit = Parsimmon.digit = regex(/[0-9]/);
var digits = Parsimmon.digits = regex(/[0-9]*/);
var whitespace = Parsimmon.whitespace = regex(/\s+/);
var letter = Parsimmon.letter = regex(/[a-z]/i).desc('a letter')
var letters = Parsimmon.letters = regex(/[a-z]*/i)
var digit = Parsimmon.digit = regex(/[0-9]/).desc('a digit');
var digits = Parsimmon.digits = regex(/[0-9]*/)
var whitespace = Parsimmon.whitespace = regex(/\s+/).desc('whitespace');
var optWhitespace = Parsimmon.optWhitespace = regex(/\s*/);

@@ -359,3 +398,8 @@

var lazy = Parsimmon.lazy = function(f) {
var lazy = Parsimmon.lazy = function(desc, f) {
if (arguments.length < 2) {
f = desc;
desc = undefined;
}
var parser = Parser(function(stream, i) {

@@ -366,40 +410,7 @@ parser._ = f()._;

if (desc) parser = parser.desc(desc)
return parser;
};
// [Parser a] -> Parser [a]
var seq = Parsimmon.seq = function() {
var parsers = [].slice.call(arguments);
var numParsers = parsers.length;
return Parser(function(stream, i) {
var result;
var accum = new Array(numParsers);
for (var j = 0; j < numParsers; j += 1) {
result = furthestBacktrackFor(parsers[j]._(stream, i), result);
if (!result.status) return result;
accum[j] = result.value
i = result.index;
}
return furthestBacktrackFor(makeSuccess(i, accum), result);
});
};
var alt = Parsimmon.alt = function() {
var parsers = [].slice.call(arguments);
var numParsers = parsers.length;
if (numParsers === 0) return fail('zero alternates')
return Parser(function(stream, i) {
var result;
for (var j = 0; j < parsers.length; j += 1) {
result = furthestBacktrackFor(parsers[j]._(stream, i), result);
if (result.status) return result;
}
return result;
});
};
var index = Parsimmon.index = Parser(function(stream, i) {

@@ -406,0 +417,0 @@ return makeSuccess(i, i);

@@ -1,1 +0,1 @@

var Parsimmon=function(t){var r=function(t,r,n){return function e(u,a){if(a===n){a=u;u=Object}function i(){var t=this instanceof i?this:new f;t.init.apply(t,arguments);return t}function f(){}i.Bare=f;var s=f[t]=u[t];var o=f[t]=i[t]=i.p=new f;var c;o.constructor=i;i.extend=function(t){return e(i,t)};return(i.open=function(t){if(typeof t==="function"){t=t.call(i,o,s,i,u)}if(typeof t==="object"){for(c in t){if(r.call(t,c)){o[c]=t[c]}}}if(!("init"in o))o.init=u;return i})(a)}}("prototype",{}.hasOwnProperty);var n={};n.Parser=r(function(t,r,e){"use strict";function u(t,r){return{status:true,index:t,value:r,furthest:-1,expected:""}}function a(t,r){return{status:false,index:-1,value:null,furthest:t,expected:r}}function i(t,r){if(!r)return t;if(t.furthest>=r.furthest)return t;return{status:t.status,index:t.index,value:t.value,furthest:r.furthest,expected:r.expected}}function f(t){if(!(t instanceof e))throw new Error("not a parser: "+t)}var s=n.formatError=function(t,r){var n=r.expected;var e=r.index;if(e===t.length){return"expected "+n+", got the end of the string"}var u=e>0?"'...":"'";var a=t.length-e>12?"...'":"'";return"expected "+n+" at character "+e+", got "+u+t.slice(e,e+12)+a};t.init=function(t){this._=t};t.parse=function(t){var r=this.skip(w)._(t,0);return r.status?{status:true,value:r.value}:{status:false,index:r.furthest,expected:r.expected}};t.or=function(t){return z(this,t)};t.then=function(t){if(typeof t==="function"){throw new Error("chaining features of .then are no longer supported")}f(t);return k(this,t).map(function(t){return t[1]})};t.many=function(){var t=this;return e(function(r,n){var e=[];var a;var f;for(;;){a=i(t._(r,n),a);if(a.status){n=a.index;e.push(a.value)}else{return i(u(n,e),a)}}})};t.times=function(t,r){if(arguments.length<2)r=t;var n=this;return e(function(e,a){var f=[];var s=a;var o;var c;for(var v=0;v<t;v+=1){o=n._(e,a);c=i(o,c);if(o.status){a=o.index;f.push(o.value)}else{return c}}for(;v<r;v+=1){o=n._(e,a);c=i(o,c);if(o.status){a=o.index;f.push(o.value)}else{break}}return i(u(a,f),c)})};t.result=function(t){return this.then(v(t))};t.atMost=function(t){return this.times(0,t)};t.atLeast=function(t){var r=this;return k(this.times(t),this.many()).map(function(t){return t[0].concat(t[1])})};t.map=function(t){var r=this;return e(function(n,e){var a=r._(n,e);if(!a.status)return a;return i(u(a.index,t(a.value)),a)})};t.skip=function(t){return k(this,t).map(function(t){return t[0]})};t.mark=function(){return k(O,this,O).map(function(t){return{start:t[0],value:t[1],end:t[2]}})};var o=n.string=function(t){var r=t.length;var n="'"+t+"'";return e(function(e,i){var f=e.slice(i,i+r);if(f===t){return u(i+r,f)}else{return a(i,n)}})};var c=n.regex=function(t){var r=RegExp("^(?:"+t.source+")",(""+t).slice((""+t).lastIndexOf("/")+1));return e(function(n,e){var i=r.exec(n.slice(e));if(i){var f=i[0];return u(e+f.length,f)}else{return a(e,t)}})};var v=n.succeed=function(t){return e(function(r,n){return u(n,t)})};var l=n.fail=function(t){return e(function(r,n){return a(n,t)})};var h=n.letter=c(/[a-z]/i);var p=n.letters=c(/[a-z]*/i);var d=n.digit=c(/[0-9]/);var x=n.digits=c(/[0-9]*/);var g=n.whitespace=c(/\s+/);var m=n.optWhitespace=c(/\s*/);var y=n.any=e(function(t,r){if(r>=t.length)return a(r,"any character");return u(r+1,t.charAt(r))});var _=n.all=e(function(t,r){return u(t.length,t.slice(r))});var w=n.eof=e(function(t,r){if(r<t.length)return a(r,"EOF");return u(r,null)});var E=n.lazy=function(t){var r=e(function(n,e){r._=t()._;return r._(n,e)});return r};var k=n.seq=function(){var t=[].slice.call(arguments);var r=t.length;return e(function(n,e){var a;var f=new Array(r);for(var s=0;s<r;s+=1){a=i(t[s]._(n,e),a);if(!a.status)return a;f[s]=a.value;e=a.index}return i(u(e,f),a)})};var z=n.alt=function(){var t=[].slice.call(arguments);var r=t.length;if(r===0)return l("zero alternates");return e(function(r,n){var e;for(var u=0;u<t.length;u+=1){e=i(t[u]._(r,n),e);if(e.status)return e}return e})};var O=n.index=e(function(t,r){return u(r,r)});t.concat=t.or;t.empty=l("empty");t.of=e.of=n.of=v;t.ap=function(t){return k(this,t).map(function(t){return t[0](t[1])})};t.chain=function(t){var r=this;return e(function(n,e){var u=r._(n,e);if(!u.status)return u;var a=t(u.value);return i(a._(n,u.index),u)})}});return n}();
var Parsimmon=function(t){var r=function(t,r,n){return function e(u,i){if(i===n){i=u;u=Object}function a(){var t=this instanceof a?this:new s;t.init.apply(t,arguments);return t}function s(){}a.Bare=s;var f=s[t]=u[t];var c=s[t]=a[t]=a.p=new s;var o;c.constructor=a;a.extend=function(t){return e(a,t)};return(a.open=function(t){if(typeof t==="function"){t=t.call(a,c,f,a,u)}if(typeof t==="object"){for(o in t){if(r.call(t,o)){c[o]=t[o]}}}if(!("init"in c))c.init=u;return a})(i)}}("prototype",{}.hasOwnProperty);var n={};n.Parser=r(function(r,e,u){"use strict";function i(t,r){return{status:true,index:t,value:r,furthest:-1,expected:""}}function a(t,r){return{status:false,index:-1,value:null,furthest:t,expected:r}}function s(t,r){if(!r)return t;if(t.furthest>=r.furthest)return t;return{status:t.status,index:t.index,value:t.value,furthest:r.furthest,expected:r.expected}}function f(t){if(!(t instanceof u))throw new Error("not a parser: "+t)}var c=n.formatError=function(t,r){var n=r.expected;var e=r.index;if(e===t.length){return"expected "+n+", got the end of the string"}var u=e>0?"'...":"'";var i=t.length-e>12?"...'":"'";return"expected "+n+" at character "+e+", got "+u+t.slice(e,e+12)+i};r.init=function(t){this._=t};r.parse=function(t){var r=this.skip(z)._(t,0);return r.status?{status:true,value:r.value}:{status:false,index:r.furthest,expected:r.expected}};var o=n.seq=function(){var t=[].slice.call(arguments);var r=t.length;return u(function(n,e){var u;var a=new Array(r);for(var f=0;f<r;f+=1){u=s(t[f]._(n,e),u);if(!u.status)return u;a[f]=u.value;e=u.index}return s(i(e,a),u)})};var v=n.alt=function(){var t=[].slice.call(arguments);var r=t.length;if(r===0)return d("zero alternates");return u(function(r,n){var e;for(var u=0;u<t.length;u+=1){e=s(t[u]._(r,n),e);if(e.status)return e}return e})};r.or=function(t){return v(this,t)};r.then=function(t){if(typeof t==="function"){throw new Error("chaining features of .then are no longer supported")}f(t);return o(this,t).map(function(t){return t[1]})};r.many=function(){var t=this;return u(function(r,n){var e=[];var u;var a;for(;;){u=s(t._(r,n),u);if(u.status){n=u.index;e.push(u.value)}else{return s(i(n,e),u)}}})};r.times=function(t,r){if(arguments.length<2)r=t;var n=this;return u(function(e,u){var a=[];var f=u;var c;var o;for(var v=0;v<t;v+=1){c=n._(e,u);o=s(c,o);if(c.status){u=c.index;a.push(c.value)}else{return o}}for(;v<r;v+=1){c=n._(e,u);o=s(c,o);if(c.status){u=c.index;a.push(c.value)}else{break}}return s(i(u,a),o)})};r.result=function(t){return this.then(p(t))};r.atMost=function(t){return this.times(0,t)};r.atLeast=function(t){var r=this;return o(this.times(t),this.many()).map(function(t){return t[0].concat(t[1])})};r.map=function(t){var r=this;return u(function(n,e){var u=r._(n,e);if(!u.status)return u;return s(i(u.index,t(u.value)),u)})};r.skip=function(t){return o(this,t).map(function(t){return t[0]})};r.mark=function(){return o(b,this,b).map(function(t){return{start:t[0],value:t[1],end:t[2]}})};r.desc=function(t){return this.or(d(t))};var l=n.string=function(t){var r=t.length;var n="'"+t+"'";return u(function(e,u){var s=e.slice(u,u+r);if(s===t){return i(u+r,s)}else{return a(u,n)}})};var h=n.regex=function(t){var r=RegExp("^(?:"+t.source+")",(""+t).slice((""+t).lastIndexOf("/")+1));return u(function(n,e){var u=r.exec(n.slice(e));if(u){var s=u[0];return i(e+s.length,s)}else{return a(e,t)}})};var p=n.succeed=function(t){return u(function(r,n){return i(n,t)})};var d=n.fail=function(t){return u(function(r,n){return a(n,t)})};var g=n.letter=h(/[a-z]/i).desc("a letter");var x=n.letters=h(/[a-z]*/i);var m=n.digit=h(/[0-9]/).desc("a digit");var y=n.digits=h(/[0-9]*/);var _=n.whitespace=h(/\s+/).desc("whitespace");var w=n.optWhitespace=h(/\s*/);var E=n.any=u(function(t,r){if(r>=t.length)return a(r,"any character");return i(r+1,t.charAt(r))});var k=n.all=u(function(t,r){return i(t.length,t.slice(r))});var z=n.eof=u(function(t,r){if(r<t.length)return a(r,"EOF");return i(r,null)});var O=n.lazy=function(r,n){if(arguments.length<2){n=r;r=t}var e=u(function(t,r){e._=n()._;return e._(t,r)});if(r)e=e.desc(r);return e};var b=n.index=u(function(t,r){return i(r,r)});r.concat=r.or;r.empty=d("empty");r.of=u.of=n.of=p;r.ap=function(t){return o(this,t).map(function(t){return t[0](t[1])})};r.chain=function(t){var r=this;return u(function(n,e){var u=r._(n,e);if(!u.status)return u;var i=t(u.value);return s(i._(n,u.index),u)})}});return n}();

@@ -81,2 +81,37 @@ var P = require('pjs').P;

// [Parser a] -> Parser [a]
var seq = Parsimmon.seq = function() {
var parsers = [].slice.call(arguments);
var numParsers = parsers.length;
return Parser(function(stream, i) {
var result;
var accum = new Array(numParsers);
for (var j = 0; j < numParsers; j += 1) {
result = furthestBacktrackFor(parsers[j]._(stream, i), result);
if (!result.status) return result;
accum[j] = result.value
i = result.index;
}
return furthestBacktrackFor(makeSuccess(i, accum), result);
});
};
var alt = Parsimmon.alt = function() {
var parsers = [].slice.call(arguments);
var numParsers = parsers.length;
if (numParsers === 0) return fail('zero alternates')
return Parser(function(stream, i) {
var result;
for (var j = 0; j < parsers.length; j += 1) {
result = furthestBacktrackFor(parsers[j]._(stream, i), result);
if (result.status) return result;
}
return result;
});
};
// -*- primitive combinators -*- //

@@ -219,2 +254,6 @@ _.or = function(alternative) {

_.desc = function(expected) {
return this.or(fail(expected))
};
// -*- primitive parsers -*- //

@@ -263,7 +302,7 @@ var string = Parsimmon.string = function(str) {

var letter = Parsimmon.letter = regex(/[a-z]/i);
var letters = Parsimmon.letters = regex(/[a-z]*/i);
var digit = Parsimmon.digit = regex(/[0-9]/);
var digits = Parsimmon.digits = regex(/[0-9]*/);
var whitespace = Parsimmon.whitespace = regex(/\s+/);
var letter = Parsimmon.letter = regex(/[a-z]/i).desc('a letter')
var letters = Parsimmon.letters = regex(/[a-z]*/i)
var digit = Parsimmon.digit = regex(/[0-9]/).desc('a digit');
var digits = Parsimmon.digits = regex(/[0-9]*/)
var whitespace = Parsimmon.whitespace = regex(/\s+/).desc('whitespace');
var optWhitespace = Parsimmon.optWhitespace = regex(/\s*/);

@@ -287,3 +326,8 @@

var lazy = Parsimmon.lazy = function(f) {
var lazy = Parsimmon.lazy = function(desc, f) {
if (arguments.length < 2) {
f = desc;
desc = undefined;
}
var parser = Parser(function(stream, i) {

@@ -294,40 +338,7 @@ parser._ = f()._;

if (desc) parser = parser.desc(desc)
return parser;
};
// [Parser a] -> Parser [a]
var seq = Parsimmon.seq = function() {
var parsers = [].slice.call(arguments);
var numParsers = parsers.length;
return Parser(function(stream, i) {
var result;
var accum = new Array(numParsers);
for (var j = 0; j < numParsers; j += 1) {
result = furthestBacktrackFor(parsers[j]._(stream, i), result);
if (!result.status) return result;
accum[j] = result.value
i = result.index;
}
return furthestBacktrackFor(makeSuccess(i, accum), result);
});
};
var alt = Parsimmon.alt = function() {
var parsers = [].slice.call(arguments);
var numParsers = parsers.length;
if (numParsers === 0) return fail('zero alternates')
return Parser(function(stream, i) {
var result;
for (var j = 0; j < parsers.length; j += 1) {
result = furthestBacktrackFor(parsers[j]._(stream, i), result);
if (result.status) return result;
}
return result;
});
};
var index = Parsimmon.index = Parser(function(stream, i) {

@@ -334,0 +345,0 @@ return makeSuccess(i, i);

{
"name": "parsimmon",
"version": "0.4.0",
"version": "0.5.0",
"description": "A monadic LL(infinity) parser combinator library",

@@ -5,0 +5,0 @@ "keywords": ["parsing", "parse", "parser combinators"],

@@ -1,8 +0,8 @@

[![Build Status](https://secure.travis-ci.org/jayferd/parsimmon.png)](http://travis-ci.org/jayferd/parsimmon)
[![Build Status](https://secure.travis-ci.org/jneen/parsimmon.png)](http://travis-ci.org/jneen/parsimmon)
# Parsimmon
[![Parsimmon](http://i.imgur.com/wyKOf.png)](http://github.com/jayferd/parsimmon)
[![Parsimmon](http://i.imgur.com/wyKOf.png)](http://github.com/jneen/parsimmon)
(by @jayferd and @laughinghan)
(by @jneen and @laughinghan)

@@ -24,3 +24,3 @@ Parsimmon is a small library for writing big parsers made up of lots of little parsers. The API is inspired by parsec and Promises/A.

var expr = lazy(function() { return form.or(atom) });
var expr = lazy('an s-expression', function() { return form.or(atom) });

@@ -87,2 +87,4 @@ var number = lexeme(regex(/[0-9]+/).map(parseInt));

referencing parsers that haven't yet been defined.
- `Parsimmon.lazy(desc, f)` is the same as `Parsimmon.lazy` but also
sets `desc` as the expected value (see `.desc()` below)
- `Parsimmon.fail(message)`

@@ -133,2 +135,5 @@ - `Parsimmon.letter` is equivalent to `Parsimmon.regex(/[a-z]/i)`

the indices in the stream that contain the parsed text.
- `parser.desc(description)` returns a new parser whose failure message is the passed
description. For example, `string('x').desc('the letter x')` will indicate that
'the letter x' was expected.

@@ -164,3 +169,3 @@ ## Tips and patterns

``` js
var expr = lazy(function() { return Parsimmon.alt(p1, p2, ...); });
var expr = lazy('an expression', function() { return Parsimmon.alt(p1, p2, ...); });
```

@@ -167,0 +172,0 @@

@@ -80,2 +80,37 @@ var Parsimmon = {};

// [Parser a] -> Parser [a]
var seq = Parsimmon.seq = function() {
var parsers = [].slice.call(arguments);
var numParsers = parsers.length;
return Parser(function(stream, i) {
var result;
var accum = new Array(numParsers);
for (var j = 0; j < numParsers; j += 1) {
result = furthestBacktrackFor(parsers[j]._(stream, i), result);
if (!result.status) return result;
accum[j] = result.value
i = result.index;
}
return furthestBacktrackFor(makeSuccess(i, accum), result);
});
};
var alt = Parsimmon.alt = function() {
var parsers = [].slice.call(arguments);
var numParsers = parsers.length;
if (numParsers === 0) return fail('zero alternates')
return Parser(function(stream, i) {
var result;
for (var j = 0; j < parsers.length; j += 1) {
result = furthestBacktrackFor(parsers[j]._(stream, i), result);
if (result.status) return result;
}
return result;
});
};
// -*- primitive combinators -*- //

@@ -218,2 +253,6 @@ _.or = function(alternative) {

_.desc = function(expected) {
return this.or(fail(expected))
};
// -*- primitive parsers -*- //

@@ -262,7 +301,7 @@ var string = Parsimmon.string = function(str) {

var letter = Parsimmon.letter = regex(/[a-z]/i);
var letters = Parsimmon.letters = regex(/[a-z]*/i);
var digit = Parsimmon.digit = regex(/[0-9]/);
var digits = Parsimmon.digits = regex(/[0-9]*/);
var whitespace = Parsimmon.whitespace = regex(/\s+/);
var letter = Parsimmon.letter = regex(/[a-z]/i).desc('a letter')
var letters = Parsimmon.letters = regex(/[a-z]*/i)
var digit = Parsimmon.digit = regex(/[0-9]/).desc('a digit');
var digits = Parsimmon.digits = regex(/[0-9]*/)
var whitespace = Parsimmon.whitespace = regex(/\s+/).desc('whitespace');
var optWhitespace = Parsimmon.optWhitespace = regex(/\s*/);

@@ -286,3 +325,8 @@

var lazy = Parsimmon.lazy = function(f) {
var lazy = Parsimmon.lazy = function(desc, f) {
if (arguments.length < 2) {
f = desc;
desc = undefined;
}
var parser = Parser(function(stream, i) {

@@ -293,40 +337,7 @@ parser._ = f()._;

if (desc) parser = parser.desc(desc)
return parser;
};
// [Parser a] -> Parser [a]
var seq = Parsimmon.seq = function() {
var parsers = [].slice.call(arguments);
var numParsers = parsers.length;
return Parser(function(stream, i) {
var result;
var accum = new Array(numParsers);
for (var j = 0; j < numParsers; j += 1) {
result = furthestBacktrackFor(parsers[j]._(stream, i), result);
if (!result.status) return result;
accum[j] = result.value
i = result.index;
}
return furthestBacktrackFor(makeSuccess(i, accum), result);
});
};
var alt = Parsimmon.alt = function() {
var parsers = [].slice.call(arguments);
var numParsers = parsers.length;
if (numParsers === 0) return fail('zero alternates')
return Parser(function(stream, i) {
var result;
for (var j = 0; j < parsers.length; j += 1) {
result = furthestBacktrackFor(parsers[j]._(stream, i), result);
if (result.status) return result;
}
return result;
});
};
var index = Parsimmon.index = Parser(function(stream, i) {

@@ -333,0 +344,0 @@ return makeSuccess(i, i);

@@ -10,2 +10,4 @@ suite('parser', function() {

var succeed = Parsimmon.succeed;
var seq = Parsimmon.seq;
var alt = Parsimmon.alt;
var all = Parsimmon.all;

@@ -49,2 +51,39 @@ var index = Parsimmon.index;

test('Parsimmon.seq', function() {
var parser = seq(string('('), regex(/[^\)]/).many(), string(')'));
assert.deepEqual(parser.parse('(string between parens)').value, ['(', 'string between parens', ')']);
assert.deepEqual(parser.parse('(string'), {
status: false,
index: 7,
expected: "')'"
});
assert.deepEqual(parser.parse('starts wrong (string between parens)'), {
status: false,
index: 0,
expected: "'('"
});
});
test('Parsimmon.alt', function(){
var toNode = function(nodeType){
return function(value) {
return { type: nodeType, value: value}
}
};
var stringParser = seq(string('"'), regex(/[^"]*/), string('"')).map(toNode('string'));
var identifierParser = regex(/[a-zA-Z]*/).map(toNode('identifier'));
var parser = alt(stringParser, identifierParser);
assert.deepEqual(parser.parse('"a string, to be sure"').value, {
type: 'string',
value: ['"', 'a string, to be sure', '"']
});
assert.deepEqual(parser.parse('anIdentifier').value, {
type: 'identifier',
value: 'anIdentifier'
});
})
suite('then', function() {

@@ -378,3 +417,41 @@ test('with a parser, uses the last return value', function() {

});
suite('desc', function() {
test('allows custom error messages', function() {
var x = string('x').desc('the letter x')
var y = string('y').desc('the letter y')
var parser = x.then(y)
assert.deepEqual(parser.parse('a'), {
status: false,
index: 0,
expected: 'the letter x'
});
assert.deepEqual(parser.parse('xa'), {
status: false,
index: 1,
expected: 'the letter y'
});
});
test('allows tagging with `lazy`', function() {
var x = lazy('the letter x', function() { return string('x'); });
var y = lazy('the letter y', function() { return string('y'); });
var parser = x.then(y)
assert.deepEqual(parser.parse('a'), {
status: false,
index: 0,
expected: 'the letter x'
});
assert.deepEqual(parser.parse('xa'), {
status: false,
index: 1,
expected: 'the letter y'
});
});
});
});
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc