norser
v0.1.3
Published
A simple string parser for node schema content.
Downloads
2
Maintainers
Readme
Norser
This is a simple Syntax Parser for node schemas, taking an input and splitting into groups of valid nodes that can be used as children.
Installing
npm i norser
Syntax
The basic syntax must be
GROUP QUANTIFIER
Node groups
It allows only lowercase kebab-case
group of nodes.
paragraph+
(paragraph)+
AND/OR Operator
AND
operator is represented by an Empty Space
between two groups.
paragraph+ image?
===
NODE AND NODE
OR
operator is represented by |
symbol and can ONLY be placed inside
()
group of nodes.
(paragraph|heading)+ image?
===
(NODE OR NODE) AND NODE
Quantifiers
Every group of nodes MUST end with a quantifier, they are the same as RegExp, they represent a range of min/max values a group can accept.
| Quantifier | Min | Max | | :--------: | :-: | :-: | | + | 1 | -1 | | ? | 0 | 1 | | * | 0 | -1 | | {min,max} | min | max | | {,max} | 0 | max | | {min,} | min | -1 | | {n} | n | n |
- Min value will not accept any value
< 0
, it will automatically set to 0. - Max value represented by
-1
means it can have an infinite amount of a node type. - Curly quantifiers allow only positive numbers.
Examples
Parsing a single group
import { Norser } from 'norser';
const output = Norser.parseElement(`paragraph+`);
// [
// { groups: ['paragraph'], range: { min: 1, max: -1 } }
// ]
Parsing multiple groups
import { Norser } from 'norser';
const output = Norser.parseElement(`(paragraph|heading){1} image?`);
// [
// { groups: ['paragraph', 'heading'], range: { min: 1, max: 1 } },
// { groups: ['image'], range: { min: 0, max: 1 } },
// ]