Annotate strings with simple, embedded prefix expressions.
Used by yoga.
$ npm install --save prefixnote
var prefixnote = require('prefixnote')
Given a trivial expression of {a}
, testing the expression with the data { a: true }
will return a match result.
prefixnote.test('{a}', { a: true }) // { expression: 'a', args: [], options: {} })
Testing the same expression with { a:false }
will return null
since the expression does not evaluate to true for the given data.
prefixnote.test('{a}', { a: false }) // null
It accepts any static boolean expression.
prefixnote.test('{a && b}', { a: true, b: true }) // { expression: 'a && b', args: [], options: {} })
prefixnote.test('{a && b}', { a: true, b: false }) // null
prefixnote.test('{a && b}', { a: false, b: true }) // null
If multiple expressions are embedded, it returns the first one that evaluates to true (like an or
expression).
prefixnote.test('{a}{b}', { a:true }) // { expression: 'a', args: [], options: {} })
prefixnote.test('{a}{b}', { b:true }) // { expression: 'b', args: [], options: {} })
Expressions can contain arbitrary arguments (values) or options (key-value pairs).
prefixnote.test('{a:one=uno, two:dos, three:tres}', { a:true }) // { expression: 'a', args: [], options: { one: 'uno', two: 'dos', three: 'tres' } })
prefixnote.test('{a:hi}{b:bye}', { a:true }) // { expression: 'a', args: ['hi'], options: {} })
prefixnote.test('{a:hi}{b:bye}', { b:true }) // { expression: 'b', args: ['bye'], options: {} })
Use prefixnotes as smart file filters (used by yoga).
prefixnote.parseFiles('test/sample', {
a: true,
b: false
})
Parse prefixnotes and then do whatever you want with them.
prefixnote.parse('{a}{b}test')
/*
{
original: '{a}{b}test',
value: 'test',
expressions: [
{
expression: 'a',
args: [],
options: {}
},
{
expression: 'b',
args: [],
options: {}
}
]
}
*/
ISC © Raine Lourie