A node plugin to parse attributes (custom HTML attributes).
The syntax is common :
{#thisIsAnId .thisIsAClass thisKey=thisValue}
{thatKey="value" thisKey='thatValue'}
const parseAttr = require('md-attr-parser');
parseAttr('{ width=500px editable=true }');
parseAttr('height=500px');
The output is an object of the form :
{
prop: { // Keep the key-value attribute
class: undefined, // A list of class
id: undefined, // The uniq id
},
eaten: '', // Every characters parsed
}
For example this code will output :
parseAttr('{ width=500px editable=true #unicorn .dangerous .cute }');
{
prop: {
class: ['dangerous', 'cute'],
id: 'unicorn',
width: '500px',
editable: 'true',
},
eaten: '{ width=500px editable=true #unicorn .dangerous .cute }',
}
The parsing can start at a positive offset.
parseAttr('SYNTAX{ width=500px editable=true }', len('SYNTAX'));
A configuration can also be specified, actually, there is only one configuration option. The default value of key without value.
parseAttr('{ width=500px editable }', 0, {defaultValue: true});
// or
parseAttr('{ width=500px editable }', 0, {defaultValue: key => 'NO_VALUE_FOR_'+key.toUpperCase()});
MIT