nv-char-chunk

nv-char-chunk =============== - nv-char-chunk - avoid big str copy during tokenize

Usage no npm install needed!

<script type="module">
  import nvCharChunk from 'https://cdn.skypack.dev/nv-char-chunk';
</script>

README

nv-char-chunk

  • nv-char-chunk
  • avoid big str copy during tokenize

install

  • npm install nv-char-chunk

usage

example

const {Chunk,Cache} = require("nv-char-chunk")


var chunk =Chunk.from("{abc} {def")
chunk.forward()
chunk.forward()
chunk.forward()
chunk.forward()
chunk.forward()
/*
> chunk.curr_pos
5
> chunk.next_pos
6
>
*/

chunk.backword()
chunk.cursor
chunk.ch
/*
> chunk.cursor
[ 4, 5 ]
>

> chunk.ch
' '
*/

chunk.passed
chunk.lefted

/*
> chunk.passed
Chunk(4) [ '{', 'a', 'b', 'c' ]
>

> chunk.lefted
Chunk(6) [ '}', ' ', '{', 'd', 'e', 'f' ]
>

*/


var chunk2 = Chunk.from("} {ghi}")
chunk2.prepend(chunk.lefted)

/*
> chunk2
Chunk(13) [
  '}', ' ', '{', 'd',
  'e', 'f', '}', ' ',
  '{', 'g', 'h', 'i',
  '}'
]
>

*/
> chunk.release()
> chunk
Chunk(0) []
>


var chunk0 = Chunk.from(`[ abc d"ef"g h"`)
var chunk1 = Chunk.from(`i"j ]`)

var cache = new Cache(chunk0)
/*
> cache.chunk === chunk0
true
>
*/
var lblk = chunk0.take_tok('olblk')
/*
> lblk
{ data: '[', type: 'olblk' }
>
*/
chunk0.forward()
chunk0.forward()
cache.push_pos(chunk0.curr_pos)
chunk0.forward()
chunk0.forward()
chunk0.forward()
cache.ei = chunk0.curr_pos
cache.dtype = 'word'
/*
> cache
Cache(1) [ _Pos { type: 0, str: '', si: 2, ei: 5, dtype: 'word' } ]
*/
var word0 = cache.take_tok()

/*
   > cache
   Cache(0) []
   > word0
   { data: 'abc', type: 'word' }
   >
*/
chunk0.forward()
cache.push_pos(chunk0.curr_pos)
/*
> chunk0.ch
'd'
>
*/
chunk0.forward()
cache.ei = chunk0.curr_pos
cache.dtype = 'prefix'
chunk0.forward()
cache.push_pos(chunk0.curr_pos)
chunk0.forward()
chunk0.forward()
cache.ei = chunk0.curr_pos
cache.dtype = 'quote'
chunk0.forward()
cache.push_pos(chunk0.curr_pos)
chunk0.forward()
cache.ei = chunk0.curr_pos
cache.dtype = 'suffix'
/*
> cache
Cache(3) [
  _Pos { type: 0, str: '', si: 6, ei: 7, dtype: 'prefix' },
  _Pos { type: 0, str: '', si: 8, ei: 10, dtype: 'quote' },
  _Pos { type: 0, str: '', si: 11, ei: 12, dtype: 'suffix' }
]
>
*/
var word1 =  cache.take_tok('word');
/*
> word1
{ data: 'defg', type: 'word' }
>
*/
chunk0.forward()
cache.push_pos(chunk0.curr_pos)
chunk0.forward()
cache.ei = chunk0.curr_pos
cache.dtype = 'prefix'
chunk0.forward()
chunk1.prepend(chunk0.lefted)
chunk0.release()
var cache = new Cache(chunk1)

LICENSE

  • ISC