feat: add fields to (section) and (plan)
This commit is contained in:
parent
aeacac6194
commit
5a04a1903b
4 changed files with 40924 additions and 38667 deletions
34
grammar.js
34
grammar.js
|
|
@ -93,11 +93,11 @@ org_grammar = {
|
|||
),
|
||||
|
||||
section: $ => seq(
|
||||
$.headline,
|
||||
optional($.plan),
|
||||
optional($.property_drawer),
|
||||
optional($.body),
|
||||
repeat($.section),
|
||||
field('headline', $.headline),
|
||||
optional(field('plan', $.plan)),
|
||||
optional(field('property_drawer', $.property_drawer)),
|
||||
optional(field('body', $.body)),
|
||||
repeat(field('subsection', $.section)),
|
||||
$._sectionend,
|
||||
),
|
||||
|
||||
|
|
@ -143,7 +143,7 @@ org_grammar = {
|
|||
|
||||
entry: $ => seq(
|
||||
optional(seq(
|
||||
alias(token(prec('non-immediate', /\p{L}+/)), $.entry_name),
|
||||
field('name', alias(token(prec('non-immediate', /\p{L}+/)), $.entry_name)),
|
||||
token.immediate(prec('immediate', ':'))
|
||||
)),
|
||||
field('timestamp', $.timestamp)
|
||||
|
|
@ -162,18 +162,18 @@ org_grammar = {
|
|||
|
||||
_ts_contents: $ => seq(
|
||||
repeat($._ts_element),
|
||||
$.date,
|
||||
field('date', $.date),
|
||||
repeat($._ts_element),
|
||||
),
|
||||
|
||||
date: $ => /\p{N}{1,4}-\p{N}{1,4}-\p{N}{1,4}/,
|
||||
|
||||
_ts_element: $ => choice(
|
||||
alias(/\p{L}[^\]>\p{Z}\n\r]*/, $.day),
|
||||
alias(/\p{N}?\p{N}[:.]\p{N}\p{N}( ?\p{L}{1,2})?/, $.time),
|
||||
alias(/\p{N}?\p{N}[:.]\p{N}\p{N}( ?\p{L}{1,2})?-\p{N}?\p{N}[:.]\p{N}\p{N}( ?\p{L}{1,2})?/, $.duration),
|
||||
alias(/[.+]?\+\p{N}+\p{L}/, $.repeat),
|
||||
alias(/--?\p{N}+\p{L}/, $.delay),
|
||||
field('day', alias(/\p{L}[^\]>\p{Z}\n\r]*/, $.day)),
|
||||
field('time', alias(/\p{N}?\p{N}[:.]\p{N}\p{N}( ?\p{L}{1,2})?/, $.time)),
|
||||
field('duration', alias(/\p{N}?\p{N}[:.]\p{N}\p{N}( ?\p{L}{1,2})?-\p{N}?\p{N}[:.]\p{N}\p{N}( ?\p{L}{1,2})?/, $.duration)),
|
||||
field('repeat', alias(/[.+]?\+\p{N}+\p{L}/, $.repeat)),
|
||||
field('delay', alias(/--?\p{N}+\p{L}/, $.delay)),
|
||||
alias(prec(-1, /[^\[<\]>\p{Z}\n\r]+/), $.expr),
|
||||
),
|
||||
|
||||
|
|
@ -255,10 +255,16 @@ org_grammar = {
|
|||
repeat($.formula),
|
||||
)),
|
||||
|
||||
row: $ => prec(1, seq(repeat1($.cell), optional(token(prec(1, '|'))), $._eol)),
|
||||
row: $ => prec(1, seq(
|
||||
repeat1($.cell),
|
||||
optional(token(prec(1, '|'))),
|
||||
$._eol,
|
||||
)),
|
||||
|
||||
cell: $ => seq(
|
||||
token(prec(1, '|')), // Table > paragraph (expr)
|
||||
optional(field('contents', alias($._expr_line, $.contents)))),
|
||||
optional(field('contents', alias($._expr_line, $.contents))),
|
||||
),
|
||||
hr: $ => seq(
|
||||
token(prec(1, '|')),
|
||||
repeat1(seq(token.immediate(prec(1, /[-+]+/)), optional('|'))),
|
||||
|
|
|
|||
152
src/grammar.json
152
src/grammar.json
|
|
@ -198,15 +198,23 @@
|
|||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "headline"
|
||||
"type": "FIELD",
|
||||
"name": "headline",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "headline"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "CHOICE",
|
||||
"members": [
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "plan"
|
||||
"type": "FIELD",
|
||||
"name": "plan",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "plan"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "BLANK"
|
||||
|
|
@ -217,8 +225,12 @@
|
|||
"type": "CHOICE",
|
||||
"members": [
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "property_drawer"
|
||||
"type": "FIELD",
|
||||
"name": "property_drawer",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "property_drawer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "BLANK"
|
||||
|
|
@ -229,8 +241,12 @@
|
|||
"type": "CHOICE",
|
||||
"members": [
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "body"
|
||||
"type": "FIELD",
|
||||
"name": "body",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "body"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "BLANK"
|
||||
|
|
@ -240,8 +256,12 @@
|
|||
{
|
||||
"type": "REPEAT",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "section"
|
||||
"type": "FIELD",
|
||||
"name": "subsection",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "section"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -516,20 +536,24 @@
|
|||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "ALIAS",
|
||||
"type": "FIELD",
|
||||
"name": "name",
|
||||
"content": {
|
||||
"type": "TOKEN",
|
||||
"type": "ALIAS",
|
||||
"content": {
|
||||
"type": "PREC",
|
||||
"value": "non-immediate",
|
||||
"type": "TOKEN",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "\\p{L}+"
|
||||
"type": "PREC",
|
||||
"value": "non-immediate",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "\\p{L}+"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"named": true,
|
||||
"value": "entry_name"
|
||||
},
|
||||
"named": true,
|
||||
"value": "entry_name"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "IMMEDIATE_TOKEN",
|
||||
|
|
@ -771,8 +795,12 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "date"
|
||||
"type": "FIELD",
|
||||
"name": "date",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "date"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "REPEAT",
|
||||
|
|
@ -791,49 +819,69 @@
|
|||
"type": "CHOICE",
|
||||
"members": [
|
||||
{
|
||||
"type": "ALIAS",
|
||||
"type": "FIELD",
|
||||
"name": "day",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "\\p{L}[^\\]>\\p{Z}\\n\\r]*"
|
||||
},
|
||||
"named": true,
|
||||
"value": "day"
|
||||
"type": "ALIAS",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "\\p{L}[^\\]>\\p{Z}\\n\\r]*"
|
||||
},
|
||||
"named": true,
|
||||
"value": "day"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ALIAS",
|
||||
"type": "FIELD",
|
||||
"name": "time",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "\\p{N}?\\p{N}[:.]\\p{N}\\p{N}( ?\\p{L}{1,2})?"
|
||||
},
|
||||
"named": true,
|
||||
"value": "time"
|
||||
"type": "ALIAS",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "\\p{N}?\\p{N}[:.]\\p{N}\\p{N}( ?\\p{L}{1,2})?"
|
||||
},
|
||||
"named": true,
|
||||
"value": "time"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ALIAS",
|
||||
"type": "FIELD",
|
||||
"name": "duration",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "\\p{N}?\\p{N}[:.]\\p{N}\\p{N}( ?\\p{L}{1,2})?-\\p{N}?\\p{N}[:.]\\p{N}\\p{N}( ?\\p{L}{1,2})?"
|
||||
},
|
||||
"named": true,
|
||||
"value": "duration"
|
||||
"type": "ALIAS",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "\\p{N}?\\p{N}[:.]\\p{N}\\p{N}( ?\\p{L}{1,2})?-\\p{N}?\\p{N}[:.]\\p{N}\\p{N}( ?\\p{L}{1,2})?"
|
||||
},
|
||||
"named": true,
|
||||
"value": "duration"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ALIAS",
|
||||
"type": "FIELD",
|
||||
"name": "repeat",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "[.+]?\\+\\p{N}+\\p{L}"
|
||||
},
|
||||
"named": true,
|
||||
"value": "repeat"
|
||||
"type": "ALIAS",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "[.+]?\\+\\p{N}+\\p{L}"
|
||||
},
|
||||
"named": true,
|
||||
"value": "repeat"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ALIAS",
|
||||
"type": "FIELD",
|
||||
"name": "delay",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "--?\\p{N}+\\p{L}"
|
||||
},
|
||||
"named": true,
|
||||
"value": "delay"
|
||||
"type": "ALIAS",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "--?\\p{N}+\\p{L}"
|
||||
},
|
||||
"named": true,
|
||||
"value": "delay"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ALIAS",
|
||||
|
|
|
|||
|
|
@ -295,6 +295,16 @@
|
|||
"type": "entry",
|
||||
"named": true,
|
||||
"fields": {
|
||||
"name": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "entry_name",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"timestamp": {
|
||||
"multiple": false,
|
||||
"required": true,
|
||||
|
|
@ -305,16 +315,6 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"children": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "entry_name",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -682,32 +682,57 @@
|
|||
{
|
||||
"type": "section",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "body",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "headline",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "plan",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "property_drawer",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "section",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
"fields": {
|
||||
"body": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "body",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"headline": {
|
||||
"multiple": false,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "headline",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"plan": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "plan",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"property_drawer": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "property_drawer",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"subsection": {
|
||||
"multiple": true,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "section",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -773,39 +798,76 @@
|
|||
{
|
||||
"type": "timestamp",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"fields": {
|
||||
"date": {
|
||||
"multiple": true,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "date",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"day": {
|
||||
"multiple": true,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "day",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"delay": {
|
||||
"multiple": true,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "delay",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"duration": {
|
||||
"multiple": true,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "duration",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"repeat": {
|
||||
"multiple": true,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "repeat",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"time": {
|
||||
"multiple": true,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "time",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"children": {
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "date",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "day",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "delay",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "duration",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "expr",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "repeat",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "time",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "tsexp",
|
||||
"named": true
|
||||
|
|
|
|||
79219
src/parser.c
79219
src/parser.c
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue