3.0.22 • Published 10 months ago
oparser v3.0.22
oparser
A very forgiving key-value option parser.
Converts plain text key-value pairs to useable javascript objects.
See oparser.test.js
for more usage examples.
Install
npm install oparser
Example
Handles single & multiline complex strings of key-value pairs
/* String */
const str = parse(`name=bob`)
const str = parse(`name='bob'`)
const str = parse(`name="bob"`)
const str = parse(`name={bob}`)
/* > output js object
{ name: 'bob' }
*/
const multipleValues = optionsParse(`a='foo' b="bar" c=zaz`)
/* > output js object
{ a: 'foo', b: 'bar', c: 'zaz' }
*/
/* Boolean */
const bool = parse(`isCool`)
const bool = parse(`isCool = true`)
const bool = parse(`isCool =true`)
const bool = parse(`isCool=true`)
const bool = parse(`isCool={true}`)
const bool = parse(`isCool={{true}}`)
/* > output js object
{ isCool: true }
*/
/* Arrays */
const arrayWithNumbers = parse(`key=[ 1, 2, 3 ]`)
/* > output js object
{ key: [ 1, 2, 3 ] }
*/
const arrayWithStrings = parse(`key=[ "1", "2", "3" ]`)
/* > output js object
{ key: [ "1", "2", "3" ] }
*/
const arrayWithNonQuotedStrings = parse(`key=[ one, two, three ]`)
/* > output js object
{ key: [ "one", "two", "three" ] }
*/
const arrayWithMixedValues = parse(`
great={["scoot", "sco ot", 'scooo ttt', one, two, 3, 4, true]}
`)
/* > output js object
{ great: [ 'scoot', 'sco ot', 'scooo ttt', 'one', 'two', 3, 4, true ] }
*/
/* Objects */
const obj = parse(`key={{ "a": "b" }}`)
const obj = parse(`key={{ "a": b }}`)
const obj = parse(`key={{ a: "b" }}`)
const obj = parse(`key={{ a: b }}`)
const obj = parse(`key={ a : b }`)
/* > output js object
{ key: { a: 'b' }}
*/
/* Multiline Objects */
const reactStyleObjects = `
foo={{
baz: {
bar: {
fuzz: "hello"
}
}
}}
`
console.log(parse(reactStyleObjects))
/* > output js object
{
foo: {
baz: {
bar: {
fuzz: "hello"
}
}
}
}
*/
/* Here's an example of a giant unruley string with comments */
const giantMultiLineExample = `
width={999}
height={{111}}
numberAsString="12345"
great={["scoot", "sco ot", 'scooo ttt']}
nice={{ value: nice, cool: "true" }}
soclose=[jdjdjd, hdhfhfhffh]
rad="boss"
cool=true notCool=false
nooooo={[one, two, 3, 4]}
numberArray=[3, 7]
stringArray=["3", "7"]
numberZero=0,
xyz=999,
nope=false,
// js style comment
yes={true}
isWhat,
/* js block style comment */
foo={{ rad: ["whatever", "man", "with spaces"], cool: { beans: 'here' } }}
# yaml style comment
what='xnxnx'
isLoading
whatever={{ chill: "https://app.netlify.com/start/deploy?repository=https://github.com/netlify/netlify-faunadb-example&stack=fauna", pill: ['yo']}}
href="https://fooo.com/start/deploy?repository=https://github.com/netlify/netlify-faunadb-example&stack=fauna"
src="https://user-images.github{user}content.com/532272/123136878-46f1a300-d408-11eb-82f2-ad452498457b.jpg"
deep={{ rad: 'blue', what: { nice: 'cool', wow: { deep: true } } }}
`
console.log(parse(giantMultiLineExample))
/* > output js object */
const output = {
width: 999,
height: 111,
numberAsString: "12345",
great: ['scoot', 'sco ot', 'scooo ttt'],
nice: {
value: 'nice',
cool: 'true'
},
soclose: ['jdjdjd', 'hdhfhfhffh'],
rad: 'boss',
cool: true,
notCool: false,
nooooo: ['one', 'two', 3, 4],
numberArray: [3, 7],
stringArray: ["3", "7"],
numberZero: 0,
xyz: 999,
nope: false,
yes: true,
isWhat: true,
foo: {
rad: ['whatever', 'man', "with spaces"],
cool: {
beans: 'here'
}
},
what: 'xnxnx',
isLoading: true,
whatever: {
chill: "https://app.netlify.com/start/deploy?repository=https://github.com/netlify/netlify-faunadb-example&stack=fauna",
pill: ['yo']
},
href: "https://fooo.com/start/deploy?repository=https://github.com/netlify/netlify-faunadb-example&stack=fauna",
src: 'https://user-images.github{user}content.com/532272/123136878-46f1a300-d408-11eb-82f2-ad452498457b.jpg',
deep: {
rad: 'blue',
what: {
nice: 'cool',
wow: {
deep: true
}
}
}
}
See /src/oparser.test.js
for more usage examples.
Note
This package uses regular expressions. Beware of ReDoS if using this package on the server.
3.0.21
11 months ago
3.0.22
10 months ago
3.0.20
11 months ago
3.0.18
11 months ago
3.0.19
11 months ago
3.0.16
11 months ago
3.0.17
11 months ago
3.0.13
1 year ago
3.0.14
1 year ago
3.0.15
1 year ago
3.0.12
1 year ago
3.0.10
1 year ago
3.0.11
1 year ago
3.0.9
1 year ago
3.0.8
1 year ago
3.0.4
2 years ago
3.0.3
2 years ago
3.0.2
2 years ago
3.0.1
2 years ago
3.0.7
2 years ago
3.0.6
2 years ago
3.0.5
2 years ago
3.0.0
2 years ago
2.2.1
2 years ago
2.2.0
2 years ago
2.1.1
2 years ago
2.0.2
3 years ago
2.1.0
2 years ago
2.0.1
3 years ago
2.0.0
3 years ago
1.0.1
3 years ago
1.0.0
3 years ago