nv-quote
- nv-quote is very simple util, it will parse-quote and split-the-input-string
- self-defined quotes
install
usage
const nvquote = require("nv-quote")
{
JS_QUOTES: [ '`', '"', "'" ],
PY_QUOTES: [ '"""', "'''", "'", '"' ],
JSPY_QUOTES: [
'"""', "'''",
"'", '"',
'`'
],
tokenize: [Function: tokenize],
split: [Function: split],
dequote: [Function: dequote]
}
example
var s = `""a'bc'cd"ef"g'''hij'''k"""lmnopq"""r`
nvquote.split(s,nvquote.JSPY_QUOTES)
[
'""', 'a',
"'bc'", 'c',
'd', '"ef"',
'g', "'''hij'''",
'k', '"""lmnopq"""',
'r'
]
nvquote.dequote(s,nvquote.JSPY_QUOTES)
[
'', 'a',
'bc', 'cd',
'ef', 'g',
'hij', 'k',
'lmnopq', 'r'
]
nvquote.tokenize(s,nvquote.JSPY_QUOTES)
[
Tok {
str: '',
type: 'quoted-str',
raw: '""',
state: 'finished',
extra: 3 // means which quote: JSPY_QUOTES[3] = '"'
},
Tok {
str: 'a',
type: 'raw',
raw: 'a',
state: undefined,
extra: undefined
},
Tok {
str: 'bc',
type: 'quoted-str',
raw: "'bc'",
state: 'finished',
extra: 2
},
Tok {
str: 'c',
type: 'raw',
raw: 'c',
state: undefined,
extra: undefined
},
Tok {
str: 'd',
type: 'raw',
raw: 'd',
state: undefined,
extra: undefined
},
Tok {
str: 'ef',
type: 'quoted-str',
raw: '"ef"',
state: 'finished',
extra: 3
},
Tok {
str: 'g',
type: 'raw',
raw: 'g',
state: undefined,
extra: undefined
},
Tok {
str: 'hij',
type: 'quoted-str',
raw: "'''hij'''",
state: 'finished',
extra: 1
},
Tok {
str: 'k',
type: 'raw',
raw: 'k',
state: undefined,
extra: undefined
},
Tok {
str: 'lmnopq',
type: 'quoted-str',
raw: '"""lmnopq"""',
state: 'finished',
extra: 0
},
Tok {
str: 'r',
type: 'raw',
raw: 'r',
state: undefined,
extra: undefined
}
]
//tail with not-closed quote
s = `""a'bc'cd"ef"g'''hij'''k"""lmnopq"""r'`
> nvquote.split(s,nvquote.JSPY_QUOTES)
[
'""', 'a',
"'bc'", 'c',
'd', '"ef"',
'g', "'''hij'''",
'k', '"""lmnopq"""',
'r', "'"
]
>
> nvquote.dequote(s,nvquote.JSPY_QUOTES)
[
'', 'a',
'bc', 'cd',
'ef', 'g',
'hij', 'k',
'lmnopq', "r'"
]
>
API
- nvquote.JS_QUOTES
- nvquote.PY_QUOTES
- nvquote.JSPY_QUOTES
- nvquote.split(s,quotes=JS_QUOTES)
- nvquote.tokenize(s,quotes=JS_QUOTES)
- nvquote.dequote(s,quotes=JS_QUOTES)
LICENSE