Skip to content

Commit 77cc5bf

Browse files
feat: use 'i' flag for case insensitive matches
1 parent 0861f14 commit 77cc5bf

File tree

3 files changed

+955
-978
lines changed

3 files changed

+955
-978
lines changed

grammar.js

Lines changed: 15 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,10 @@ const org_grammar = {
159159
_tag_expr_start: _ => token(prec('non-immediate', ':')),
160160

161161
property_drawer: $ => seq(
162-
caseInsensitive(':properties:'),
162+
alias(/:properties:/i, ':properties:'),
163163
repeat1($._nl),
164164
repeat(seq($.property, repeat1($._nl))),
165-
prec.dynamic(1, caseInsensitive(':end:')),
165+
prec.dynamic(1, alias(/:end:/i, ':end:')),
166166
$._eol,
167167
),
168168

@@ -215,7 +215,7 @@ const org_grammar = {
215215
fndef: $ => seq(
216216
optional($._directive_list),
217217
seq(
218-
caseInsensitive('[fn:'),
218+
alias(/\[fn:/i, '[fn:'),
219219
field('label', alias(/[^\p{Z}\t\n\r\]]+/, $.expr)),
220220
']',
221221
),
@@ -240,30 +240,30 @@ const org_grammar = {
240240
token.immediate(prec('special', ':')),
241241
$._nl,
242242
optional(field('contents', $.contents)),
243-
prec.dynamic(1, caseInsensitive(':end:')),
243+
prec.dynamic(1, alias(/:end:/i, ':end:')),
244244
$._eol,
245245
),
246246

247247
block: $ => seq(
248248
optional($._directive_list),
249-
caseInsensitive('#+begin_'),
249+
alias(/#\+begin_/i, '#+begin_'),
250250
field('name', $.expr),
251251
optional(repeat1(field('parameter', $.expr))),
252252
$._nl,
253253
optional(field('contents', $.contents)),
254-
caseInsensitive('#+end_'),
254+
alias(/#\+end_/i, '#+end_'),
255255
field('end_name',alias($._immediate_expr, $.expr)),
256256
$._eol,
257257
),
258258

259259
dynamic_block: $ => seq(
260260
optional($._directive_list),
261-
caseInsensitive('#+begin:'),
261+
alias(/#\+begin:/i, '#+begin:'),
262262
field('name', $.expr),
263263
repeat(field('parameter', $.expr)),
264264
$._nl,
265265
optional(field('contents', $.contents)),
266-
caseInsensitive('#+end:'),
266+
alias(/#\+end:/i, '#+end:'),
267267
optional(field('end_name', $.expr)),
268268
$._eol,
269269
),
@@ -316,7 +316,7 @@ const org_grammar = {
316316
),
317317

318318
formula: $ => seq(
319-
caseInsensitive('#+tblfm:'),
319+
alias(/#\+tblfm:/i, '#+tblfm:'),
320320
field('formula', optional($._expr_line)),
321321
$._eol,
322322
),
@@ -325,24 +325,24 @@ const org_grammar = {
325325
optional($._directive_list),
326326
choice(
327327
seq(
328-
caseInsensitive('\\begin{'),
328+
alias(/\\begin\{/i, '\\begin{'),
329329
field('name', alias(/[\p{L}\p{N}*]+/, $.name)),
330330
token.immediate('}'),
331331
$._nl,
332332
optional(field('contents', $.contents)),
333-
caseInsensitive('\\end{'),
333+
alias(/\\end\{/i, '\\end{'),
334334
alias(/[\p{L}\p{N}*]+/, $.name),
335335
token.immediate('}'),
336336
),
337337
seq(
338-
token(seq(caseInsensitive('\\['), choice('\n', '\r'))),
338+
token(seq('\\[', choice('\n', '\r'))),
339339
optional(field('contents', $.contents)),
340-
caseInsensitive('\\]'),
340+
'\\]',
341341
),
342342
seq(
343-
token(seq(caseInsensitive('\\('), choice('\n', '\r'))),
343+
token(seq('\\(', choice('\n', '\r'))),
344344
optional(field('contents', $.contents)),
345-
caseInsensitive('\\)'),
345+
'\\)',
346346
),
347347
),
348348
$._eol,
@@ -409,18 +409,4 @@ function expr(pr, tfunc, skip = '', extra = '') {
409409
)
410410
}
411411

412-
function caseInsensitive(str) {
413-
return alias(new RegExp(str
414-
.split('')
415-
.map(caseInsensitiveChar)
416-
.join('')
417-
), str.toLowerCase())
418-
}
419-
420-
function caseInsensitiveChar(char) {
421-
if (/[a-zA-Z]/.test(char))
422-
return `[${char.toUpperCase()}${char.toLowerCase()}]`;
423-
return char.replace(/[\[\]^$.|?*+()\\\{\}]/, '\\$&');
424-
}
425-
426412
module.exports = grammar(org_grammar);

src/grammar.json

Lines changed: 26 additions & 35 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)