0.1.3 • Published 2 years ago
norser v0.1.3
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 norserSyntax
The basic syntax must be
GROUP QUANTIFIERNode 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 NODEOR operator is represented by | symbol and can ONLY be placed inside
() group of nodes.
(paragraph|heading)+ image?
===
(NODE OR NODE) AND NODEQuantifiers
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
-1means 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 } },
// ]