File tree Expand file tree Collapse file tree 3 files changed +28
-15
lines changed
Expand file tree Collapse file tree 3 files changed +28
-15
lines changed Original file line number Diff line number Diff line change @@ -7,21 +7,21 @@ A simple parser for Jevko in JavaScript.
77### Node.js
88
99```
10- npm install jevko/parsejevko.js#semver:0.1.0
10+ npm install jevko/parsejevko.js#semver:0.1.1
1111```
1212
1313### Deno and the browser
1414
1515Import from [ jsDelivr] ( https://www.jsdelivr.com/ ) :
1616
1717``` js
18- import {parseJevko } from ' https://cdn.jsdelivr.net/gh/jevko/parsejevko.js@v0.1.0 /mod.js'
18+ import {parseJevko } from ' https://cdn.jsdelivr.net/gh/jevko/parsejevko.js@v0.1.1 /mod.js'
1919```
2020
2121## Quickstart
2222
2323``` js
24- import {parseJevko } from ' https://cdn.jsdelivr.net/gh/jevko/parsejevko.js@v0.1.0 /mod.js'
24+ import {parseJevko } from ' https://cdn.jsdelivr.net/gh/jevko/parsejevko.js@v0.1.1 /mod.js'
2525
2626parseJevko (` hello [world]` )
2727// -> {
Original file line number Diff line number Diff line change @@ -9,20 +9,14 @@ export const parseJevko = (str, {
99 for ( let i = 0 ; i < str . length ; ++ i ) {
1010 const c = str [ i ]
1111
12- if ( c === '\n' ) {
13- ++ line
14- column = 1
15- } else {
16- ++ column
17- }
18-
1912 if ( isEscaped ) {
2013 if ( c === escaper || c === opener || c === closer ) {
2114 buffer += c
2215 isEscaped = false
2316 } else throw SyntaxError ( `Invalid escape at ${ line } :${ column } !` )
24- } else if ( c === escaper ) { isEscaped = true }
25- else if ( c === opener ) {
17+ } else if ( c === escaper ) {
18+ isEscaped = true
19+ } else if ( c === opener ) {
2620 const jevko = { subjevkos : [ ] }
2721 parent . subjevkos . push ( { prefix : buffer , jevko} )
2822 parents . push ( parent )
@@ -33,9 +27,18 @@ export const parseJevko = (str, {
3327 buffer = ''
3428 if ( parents . length < 1 ) throw SyntaxError ( `Unexpected close at ${ line } :${ column } !` )
3529 parent = parents . pop ( )
36- } else { buffer += c }
30+ } else {
31+ buffer += c
32+ }
33+
34+ if ( c === '\n' ) {
35+ ++ line
36+ column = 1
37+ } else {
38+ ++ column
39+ }
3740 }
38- if ( isEscaped || parents . length > 0 ) throw SyntaxError ( `Unexpected end at ${ line } : ${ column } !` )
41+ if ( isEscaped || parents . length > 0 ) throw SyntaxError ( `Unexpected end!` )
3942 parent . suffix = buffer
4043 parent . opener = opener
4144 parent . closer = closer
Original file line number Diff line number Diff line change @@ -24,4 +24,14 @@ Synonyms [at least 48 published]`)
2424console . assert ( parsed . subjevkos . length === 5 )
2525console . assert ( parsed . suffix === "" )
2626
27- console . assert ( parsed . subjevkos [ 2 ] . jevko . subjevkos . some ( ( { prefix} ) => prefix . includes ( " Kingdom " ) ) )
27+ console . assert ( parsed . subjevkos [ 2 ] . jevko . subjevkos . some ( ( { prefix} ) => prefix . includes ( " Kingdom " ) ) )
28+
29+ try {
30+ parseJevko ( `
31+ this should crash [
32+ with unexpected \`] at 5:1
33+ ]
34+ ]` )
35+ } catch ( e ) {
36+ console . assert ( e . message . includes ( '5:1' ) , e )
37+ }
You can’t perform that action at this time.
0 commit comments