Workflowy selector parser

A parser for a DSL used to select specific items in a Workflowy hierarchy.

Version vom 12.08.2016. Aktuellste Version

Dieses Skript sollte nicht direkt installiert werden. Es handelt sich hier um eine Bibliothek für andere Skripte, welche über folgenden Befehl in den Metadaten eines Skriptes eingebunden wird // @require https://update.greatest.deepsurf.us/scripts/22247/141330/Workflowy%20selector%20parser.js

Autor
fiatjaf
Version
0.0.1.20160812143603
Erstellt am
12.08.2016
Letzte Aktualisierung
12.08.2016
Größe
16,8 KB
Lizenz
n/a

Intended to be required by Workflowy userscripts.

pegjs source:

expr
  = s:selector _ ch:(connector? _ selector _)* {
    return [[null, s]].concat(ch.map(s => [s[0], s[2]]))
  }

selector
  = id:('#' [a-z0-9-]i+) { return {type: 'id', val: id[1].join('')} }
  / re:('/' [^/]+ '/') { return {type: 'regex', val: re[1].join('')} }
  / name:("'" [^']i+ "'") { return {type: 'name', val: name[1].join('')} }
  / any:'*' { return {type: 'any'} }

connector
  = '>' { return 'directchild' }

_ = ' '*