Skip to content

Commit 20567c3

Browse files
committed
Fix small issue with parsing assign params
1 parent 8eb2061 commit 20567c3

File tree

4 files changed

+371
-62
lines changed

4 files changed

+371
-62
lines changed

src/utils/Params.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ export function parseAssignParams (start : number, end : number, params? : strin
1919
throw new NodeError('Assign empty assign', { start, end })
2020
}
2121
/* '=' '+=' '-=' '*=' '/=' '%=' */
22-
let match = item.match(/^([a-zA-Z.]+)\s*((=|-=|\*=|\/=|%=|\+=)\s*(.*))?$/i)
22+
let match = item.match(/^([a-zA-Z_.]+)\s*((=|-=|\*=|\/=|%=|\+=)\s*(.*))?$/i)
2323
if (!match) {
24-
match = item.match(/^\s*(\+\+|--)?([a-zA-Z.]+)(\+\+|--)?\s*$/i)
24+
match = item.match(/^\s*(\+\+|--)?([a-zA-Z_.]+)(\+\+|--)?\s*$/i)
2525
if (match && match[2] && (match[1] || match[3])) {
2626
values.push({
2727
type: ParamNames.UpdateExpression,

test/resource/valid/setting-ast.json

Lines changed: 318 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"type": "Program",
33
"start": 0,
4-
"end": 1325,
4+
"end": 1377,
55
"body": [
66
{
77
"type": "Comment",
@@ -467,19 +467,324 @@
467467
"start": 1085,
468468
"end": 1086,
469469
"text": "\n"
470-
}
471-
],
472-
"errors": [
473-
{
474-
"message": "Assign invalid character",
475-
"start": {
476-
"line": 30,
477-
"column": 0
478-
},
479-
"end": {
480-
"line": 30,
481-
"column": 37
470+
},
471+
{
472+
"type": "Comment",
473+
"start": 1086,
474+
"end": 1149,
475+
"text": "\n TODO: fix me\n <#setting boolean_format=\"igen,nem\"/>\n"
476+
},
477+
{
478+
"type": "Text",
479+
"start": 1149,
480+
"end": 1150,
481+
"text": "\n"
482+
},
483+
{
484+
"type": "Interpolation",
485+
"start": 1150,
486+
"end": 1161,
487+
"params": {
488+
"type": "Compound",
489+
"body": [
490+
{
491+
"type": "Identifier",
492+
"name": "a"
493+
},
494+
{
495+
"type": "UnaryExpression",
496+
"operator": "?",
497+
"argument": {
498+
"type": "Identifier",
499+
"name": "string"
500+
},
501+
"prefix": true
502+
}
503+
]
504+
}
505+
},
506+
{
507+
"type": "Text",
508+
"start": 1161,
509+
"end": 1162,
510+
"text": " "
511+
},
512+
{
513+
"type": "Interpolation",
514+
"start": 1162,
515+
"end": 1173,
516+
"params": {
517+
"type": "Compound",
518+
"body": [
519+
{
520+
"type": "Identifier",
521+
"name": "b"
522+
},
523+
{
524+
"type": "UnaryExpression",
525+
"operator": "?",
526+
"argument": {
527+
"type": "Identifier",
528+
"name": "string"
529+
},
530+
"prefix": true
531+
}
532+
]
533+
}
534+
},
535+
{
536+
"type": "Text",
537+
"start": 1173,
538+
"end": 1174,
539+
"text": "\n"
540+
},
541+
{
542+
"type": "Setting",
543+
"start": 1174,
544+
"end": 1204,
545+
"expression": {
546+
"type": "AssignmentExpression",
547+
"operator": "=",
548+
"left": {
549+
"type": "Identifier",
550+
"name": "number_format"
551+
},
552+
"right": {
553+
"type": "Literal",
554+
"value": "0.0",
555+
"raw": "\"0.0\""
556+
}
482557
}
558+
},
559+
{
560+
"type": "Text",
561+
"start": 1204,
562+
"end": 1205,
563+
"text": "\n"
564+
},
565+
{
566+
"type": "Interpolation",
567+
"start": 1205,
568+
"end": 1222,
569+
"params": {
570+
"type": "Compound",
571+
"body": [
572+
{
573+
"type": "Identifier",
574+
"name": "a"
575+
},
576+
{
577+
"type": "UnaryExpression",
578+
"operator": "?",
579+
"argument": {
580+
"type": "CallExpression",
581+
"arguments": [
582+
{
583+
"type": "Literal",
584+
"value": 0,
585+
"raw": "0"
586+
},
587+
{
588+
"type": "Literal",
589+
"value": 1,
590+
"raw": "1"
591+
}
592+
],
593+
"callee": {
594+
"type": "Identifier",
595+
"name": "string"
596+
}
597+
},
598+
"prefix": true
599+
}
600+
]
601+
}
602+
},
603+
{
604+
"type": "Text",
605+
"start": 1222,
606+
"end": 1223,
607+
"text": " "
608+
},
609+
{
610+
"type": "Interpolation",
611+
"start": 1223,
612+
"end": 1240,
613+
"params": {
614+
"type": "Compound",
615+
"body": [
616+
{
617+
"type": "Identifier",
618+
"name": "b"
619+
},
620+
{
621+
"type": "UnaryExpression",
622+
"operator": "?",
623+
"argument": {
624+
"type": "CallExpression",
625+
"arguments": [
626+
{
627+
"type": "Literal",
628+
"value": 0,
629+
"raw": "0"
630+
},
631+
{
632+
"type": "Literal",
633+
"value": 1,
634+
"raw": "1"
635+
}
636+
],
637+
"callee": {
638+
"type": "Identifier",
639+
"name": "string"
640+
}
641+
},
642+
"prefix": true
643+
}
644+
]
645+
}
646+
},
647+
{
648+
"type": "Text",
649+
"start": 1240,
650+
"end": 1241,
651+
"text": "\n"
652+
},
653+
{
654+
"type": "Comment",
655+
"start": 1241,
656+
"end": 1306,
657+
"text": "\n TODO: fix me\n <#setting boolean_format=\"true,false\"/>\n"
658+
},
659+
{
660+
"type": "Text",
661+
"start": 1306,
662+
"end": 1307,
663+
"text": "\n"
664+
},
665+
{
666+
"type": "Interpolation",
667+
"start": 1307,
668+
"end": 1341,
669+
"params": {
670+
"type": "Compound",
671+
"body": [
672+
{
673+
"type": "Identifier",
674+
"name": "a"
675+
},
676+
{
677+
"type": "UnaryExpression",
678+
"operator": "?",
679+
"argument": {
680+
"type": "CallExpression",
681+
"arguments": [
682+
{
683+
"type": "Literal",
684+
"value": 0,
685+
"raw": "0"
686+
},
687+
{
688+
"type": "Literal",
689+
"value": 1,
690+
"raw": "1"
691+
}
692+
],
693+
"callee": {
694+
"type": "Identifier",
695+
"name": "string"
696+
}
697+
},
698+
"prefix": true
699+
},
700+
{
701+
"type": "UnaryExpression",
702+
"operator": "?",
703+
"argument": {
704+
"type": "Identifier",
705+
"name": "is_string"
706+
},
707+
"prefix": true
708+
},
709+
{
710+
"type": "UnaryExpression",
711+
"operator": "?",
712+
"argument": {
713+
"type": "Identifier",
714+
"name": "string"
715+
},
716+
"prefix": true
717+
}
718+
]
719+
}
720+
},
721+
{
722+
"type": "Text",
723+
"start": 1341,
724+
"end": 1342,
725+
"text": " "
726+
},
727+
{
728+
"type": "Interpolation",
729+
"start": 1342,
730+
"end": 1376,
731+
"params": {
732+
"type": "Compound",
733+
"body": [
734+
{
735+
"type": "Identifier",
736+
"name": "b"
737+
},
738+
{
739+
"type": "UnaryExpression",
740+
"operator": "?",
741+
"argument": {
742+
"type": "CallExpression",
743+
"arguments": [
744+
{
745+
"type": "Literal",
746+
"value": 0,
747+
"raw": "0"
748+
},
749+
{
750+
"type": "Literal",
751+
"value": 1,
752+
"raw": "1"
753+
}
754+
],
755+
"callee": {
756+
"type": "Identifier",
757+
"name": "string"
758+
}
759+
},
760+
"prefix": true
761+
},
762+
{
763+
"type": "UnaryExpression",
764+
"operator": "?",
765+
"argument": {
766+
"type": "Identifier",
767+
"name": "is_string"
768+
},
769+
"prefix": true
770+
},
771+
{
772+
"type": "UnaryExpression",
773+
"operator": "?",
774+
"argument": {
775+
"type": "Identifier",
776+
"name": "string"
777+
},
778+
"prefix": true
779+
}
780+
]
781+
}
782+
},
783+
{
784+
"type": "Text",
785+
"start": 1376,
786+
"end": 1377,
787+
"text": "\n"
483788
}
484789
]
485790
}

0 commit comments

Comments
 (0)