fancy-value-parser
v1.0.0
Published
Parse fancy string values to JS objects
Downloads
2
Readme
What?
Transform fancy string values to usable JS objects.
Helpful for parsing HTML attribute values in custom elements/web components.
import parseOption from 'fancy-value-parser'
parseOption('foo') // { type: null, value: 'foo' }
parseOption('foo:666') // { type: 'pair', foo: 666, value: [{⋯}, {⋯}] }
parseOption('0-42') // { type: 'range', value: [0, 42] }
parseOption('true') // { type: 'boolean', value: true }
parseOption('/foo/') // { type: 'regex', value: /foo/ }
parseOption('{foo,bar}') // { type: 'set', value: [{⋯}, {⋯}] }
In / Out
| in (as a string) | out (structured JS) |
| -- | --- |
| foobar
| { type: null, value: 'foobar' }
|
| 'foobar'
| { type: 'string', value: 'foobar' }
|
| /regex/
| { type: 'regex', value: /regex/ }
|
| 303
| { type: 'number', value: 303 }
|
| 3-5
| { type: 'range', value: [3, 5] }
|
| true
| { type: 'boolean', value: true }
|
| foo:bar
| { type: 'pair', foo: 'bar', value: [{⋯}, {⋯}] }
|
| {1, /no[pe]/, foo:bar}
| { type: 'set', value: [{⋯}, {⋯}, {⋯}] }
|
Notes
- Various types can be combined with simple pairs and sets.
- Pairs are read left-to-right.
- Sets cannot contain other sets.
Not yet supported
- ~~key-value pairs like
foo:bar
~~ - ~~booleans~~
- dates
- floating point numbers
~~I'm hesitant to support more complex types; at that point, the state being conveyed shouldn't be transported as strings.~~
Clearly this ☝️ goal has been abandoned with the addition of pairs and sets. But there are good use cases and they are well tested.