fix: trailing whitespaces are allowed for local_time
(#3)
Input: (each `·` indicates a whitespace) ```toml valid·=·1979-05-27· ``` Output: ``` # before (file (ERROR (key))) # after (file (pair (key) (local_date))) ```
This commit is contained in:
parent
9bdd88e854
commit
752419c33d
|
@ -7,3 +7,6 @@ indent_size = 2
|
|||
indent_style = space
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[corpus/*]
|
||||
trim_trailing_whitespace = false
|
||||
|
|
|
@ -64,7 +64,7 @@ invalid2 = 1979-05-27 T 07:32:00 Z
|
|||
|
||||
(file
|
||||
(ERROR
|
||||
(key) (ERROR) (local_time) (local_time)
|
||||
(key) (local_date) (local_time) (local_time)
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -78,11 +78,22 @@ invalid2 = 1979-05-27 T 07:32:00
|
|||
--------------------------------------------------------------------------------
|
||||
|
||||
(file
|
||||
(pair
|
||||
(key) (ERROR) (local_time)
|
||||
(ERROR
|
||||
(key) (local_date) (local_time) (local_time)
|
||||
)
|
||||
)
|
||||
|
||||
================================================================================
|
||||
VALID - local date - trailing whitespaces are allowed
|
||||
================================================================================
|
||||
|
||||
valid = 1979-05-27
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(file
|
||||
(pair
|
||||
(key) (ERROR) (local_time)
|
||||
(key) (local_date)
|
||||
)
|
||||
)
|
||||
|
||||
|
|
14
grammar.js
14
grammar.js
|
@ -153,18 +153,14 @@ module.exports = grammar({
|
|||
boolean: $ => /true|false/,
|
||||
|
||||
offset_date_time: $ =>
|
||||
seq(
|
||||
concatRegex(
|
||||
rfc3339_date,
|
||||
token.immediate(rfc3339_delimiter),
|
||||
token.immediate(rfc3339_time),
|
||||
token.immediate(rfc3339_offset)
|
||||
rfc3339_delimiter,
|
||||
rfc3339_time,
|
||||
rfc3339_offset
|
||||
),
|
||||
local_date_time: $ =>
|
||||
seq(
|
||||
rfc3339_date,
|
||||
token.immediate(rfc3339_delimiter),
|
||||
token.immediate(rfc3339_time)
|
||||
),
|
||||
concatRegex(rfc3339_date, rfc3339_delimiter, rfc3339_time),
|
||||
local_date: $ => rfc3339_date,
|
||||
local_time: $ => rfc3339_time,
|
||||
|
||||
|
|
49
src/grammar.json
generated
49
src/grammar.json
generated
|
@ -563,57 +563,12 @@
|
|||
"value": "true|false"
|
||||
},
|
||||
"offset_date_time": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "PATTERN",
|
||||
"value": "([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])"
|
||||
},
|
||||
{
|
||||
"type": "IMMEDIATE_TOKEN",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "[ tT]"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "IMMEDIATE_TOKEN",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)([.][0-9]+)?"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "IMMEDIATE_TOKEN",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "([zZ])|([+-]([01][0-9]|2[0-3]):[0-5][0-9])"
|
||||
}
|
||||
}
|
||||
]
|
||||
"value": "(([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]))([ tT])(([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)([.][0-9]+)?)(([zZ])|([+-]([01][0-9]|2[0-3]):[0-5][0-9]))"
|
||||
},
|
||||
"local_date_time": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "PATTERN",
|
||||
"value": "([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])"
|
||||
},
|
||||
{
|
||||
"type": "IMMEDIATE_TOKEN",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "[ tT]"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "IMMEDIATE_TOKEN",
|
||||
"content": {
|
||||
"type": "PATTERN",
|
||||
"value": "([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)([.][0-9]+)?"
|
||||
}
|
||||
}
|
||||
]
|
||||
"value": "(([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]))([ tT])(([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)([.][0-9]+)?)"
|
||||
},
|
||||
"local_date": {
|
||||
"type": "PATTERN",
|
||||
|
|
27
src/node-types.json
generated
27
src/node-types.json
generated
|
@ -132,21 +132,6 @@
|
|||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "local_date",
|
||||
"named": true,
|
||||
"fields": {}
|
||||
},
|
||||
{
|
||||
"type": "local_date_time",
|
||||
"named": true,
|
||||
"fields": {}
|
||||
},
|
||||
{
|
||||
"type": "offset_date_time",
|
||||
"named": true,
|
||||
"fields": {}
|
||||
},
|
||||
{
|
||||
"type": "pair",
|
||||
"named": true,
|
||||
|
@ -327,6 +312,18 @@
|
|||
"type": "boolean",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "offset_date_time",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "local_date_time",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "local_date",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "local_time",
|
||||
"named": true
|
||||
|
|
4455
src/parser.c
generated
4455
src/parser.c
generated
File diff suppressed because it is too large
Load diff
|
@ -15,6 +15,10 @@ bool tree_sitter_toml_external_scanner_scan(
|
|||
TSLexer *lexer,
|
||||
const bool *valid_symbols
|
||||
) {
|
||||
while (lexer->lookahead == ' ' || lexer->lookahead == '\t') {
|
||||
lexer->advance(lexer, true);
|
||||
}
|
||||
|
||||
if (lexer->lookahead == 0 || lexer->lookahead == '\n') {
|
||||
lexer->result_symbol = LINE_ENDING_OR_EOF;
|
||||
lexer->mark_end(lexer);
|
||||
|
|
Loading…
Reference in a new issue