0.1.3 • Published 4 months ago

norser v0.1.3

Weekly downloads
-
License
-
Repository
github
Last release
4 months ago

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.

QuantifierMinMax
+1-1
?01
*0-1
{min,max}minmax
{,max}0max
{min,}min-1
{n}nn
  • 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 } },
// ]
0.1.3

4 months ago

0.1.2

4 months ago

0.1.1

4 months ago

0.1.0

4 months ago