diff --git a/parsimmon/parsimmon-tests.ts b/parsimmon/parsimmon-tests.ts index d1f3d4e6b4..3f80198917 100644 --- a/parsimmon/parsimmon-tests.ts +++ b/parsimmon/parsimmon-tests.ts @@ -3,6 +3,7 @@ import P = require('parsimmon'); import Parser = P.Parser; import Mark = P.Mark; +import Result = P.Result; // -- -- -- -- -- -- -- -- -- -- -- -- -- @@ -17,6 +18,7 @@ class Bar { // -- -- -- -- -- -- -- -- -- -- -- -- -- var str: string; +var bool: boolean; var num: number; var regex: RegExp; @@ -50,7 +52,16 @@ var fooMarkPar: Parser>; // -- -- -- -- -- -- -- -- -- -- -- -- -- -foo = fooPar.parse(str); +var fooResult: Result; + +bool = fooResult.status; +foo = fooResult.value; +str = fooResult.expected; +num = fooResult.index; + +// -- -- -- -- -- -- -- -- -- -- -- -- -- + +fooResult = fooPar.parse(str); fooPar = fooPar.or(fooPar); anyPar = fooPar.or(barPar); diff --git a/parsimmon/parsimmon.d.ts b/parsimmon/parsimmon.d.ts index 2bf24cba79..719e9c937d 100644 --- a/parsimmon/parsimmon.d.ts +++ b/parsimmon/parsimmon.d.ts @@ -1,5 +1,5 @@ -// Type definitions for Parsimmon 0.4.0 -// Project: https://github.com/jayferd/parsimmon +// Type definitions for Parsimmon 0.5.0 +// Project: https://github.com/jneen/parsimmon // Definitions by: Bart van der Schoor // Definitions: https://github.com/borisyankov/DefinitelyTyped @@ -14,11 +14,18 @@ declare module 'parsimmon' { value: T; } + export interface Result { + status: boolean; + value?: T; + expected?: string; + index?: number; + } + export interface Parser { /* parse the string */ - parse(input: string): T; + parse(input: string): Result; /* returns a new parser which tries parser, and if it fails uses otherParser. */