From ca5e6a8191c966c5e7da8cba0652b30614ca8435 Mon Sep 17 00:00:00 2001 From: Hyyan Abo Fakher Date: Sat, 30 Jul 2022 16:11:47 +0200 Subject: [PATCH 1/3] BBj: extend BBj keywords list --- components/prism-bbj.js | 2 +- components/prism-bbj.min.js | 2 +- tests/languages/bbj/keyword_feature.test | 37 +++++++++++++----------- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/components/prism-bbj.js b/components/prism-bbj.js index 883b4e7dd2..d2730b72a8 100644 --- a/components/prism-bbj.js +++ b/components/prism-bbj.js @@ -10,7 +10,7 @@ greedy: true }, 'number': /(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i, - 'keyword': /\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|delete|dom|dread|dsz|else|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|private|process_events|protected|psz|public|read_resource|remove_callback|restore|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\b/i, + 'keyword': /\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|delete|dim|dom|dread|dsz|else|end|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|print|private|process_events|protected|psz|public|read|read_resource|release|remove_callback|repeat|restore|return|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\b/i, 'function': /\b\w+(?=\()/, 'boolean': /\b(?:BBjAPI\.TRUE|BBjAPI\.FALSE)\b/i, 'operator': /<[=>]?|>=?|[+\-*\/^=&]|\b(?:and|not|or|xor)\b/i, diff --git a/components/prism-bbj.min.js b/components/prism-bbj.min.js index 64ca9b408a..0ac3642504 100644 --- a/components/prism-bbj.min.js +++ b/components/prism-bbj.min.js @@ -1 +1 @@ -!function(e){e.languages.bbj={comment:{pattern:/(^|[^\\:])rem\s+.*/i,lookbehind:!0,greedy:!0},string:{pattern:/"(?:""|[!#$%&'()*,\/:;<=>?^\w +\-.])*"/,greedy:!0},number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|delete|dom|dread|dsz|else|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|private|process_events|protected|psz|public|read_resource|remove_callback|restore|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\b/i,function:/\b\w+(?=\()/,boolean:/\b(?:BBjAPI\.TRUE|BBjAPI\.FALSE)\b/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:and|not|or|xor)\b/i,punctuation:/[.,;:()]/}}(Prism); \ No newline at end of file +!function(e){e.languages.bbj={comment:{pattern:/(^|[^\\:])rem\s+.*/i,lookbehind:!0,greedy:!0},string:{pattern:/"(?:""|[!#$%&'()*,\/:;<=>?^\w +\-.])*"/,greedy:!0},number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|delete|dim|dom|dread|dsz|else|end|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|print|private|process_events|protected|psz|public|read|read_resource|release|remove_callback|repeat|restore|return|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\b/i,function:/\b\w+(?=\()/,boolean:/\b(?:BBjAPI\.TRUE|BBjAPI\.FALSE)\b/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:and|not|or|xor)\b/i,punctuation:/[.,;:()]/}}(Prism); \ No newline at end of file diff --git a/tests/languages/bbj/keyword_feature.test b/tests/languages/bbj/keyword_feature.test index 77ed4c345e..f2af02bb84 100644 --- a/tests/languages/bbj/keyword_feature.test +++ b/tests/languages/bbj/keyword_feature.test @@ -1,8 +1,9 @@ -abstract all argc begin bye callback case chn class classend ctl day delete dom dread dsz else -endif err exitto extends fi field field for from gosub goto if implements interface interfaceend -iol iolist let list load method methodend methodret on opts pfx private private process_events -protected protected psz public public read_resource remove_callback restore rev seterr setesc sqlchn -sqlunt ssn start static static swend switch sys then tim unt until void void wend where while use +abstract all argc begin bye callback case chn class classend ctl day delete dim dom +dread dsz else end endif err exitto extends fi field for from gosub goto if implements +interface interfaceend iol iolist let list load method methodend methodret on opts pfx +print private process_events protected psz public read read_resource release remove_callback +repeat restore return rev seterr setesc sqlchn sqlunt ssn start static swend switch sys then +tim unt until use void wend where while ---------------------------------------------------- @@ -20,27 +21,28 @@ sqlunt ssn start static static swend switch sys then tim unt until void void wen ["keyword", "ctl"], ["keyword", "day"], ["keyword", "delete"], + ["keyword", "dim"], ["keyword", "dom"], + ["keyword", "dread"], ["keyword", "dsz"], ["keyword", "else"], - + ["keyword", "end"], ["keyword", "endif"], ["keyword", "err"], ["keyword", "exitto"], ["keyword", "extends"], ["keyword", "fi"], ["keyword", "field"], - ["keyword", "field"], ["keyword", "for"], ["keyword", "from"], ["keyword", "gosub"], ["keyword", "goto"], ["keyword", "if"], ["keyword", "implements"], + ["keyword", "interface"], ["keyword", "interfaceend"], - ["keyword", "iol"], ["keyword", "iolist"], ["keyword", "let"], @@ -52,41 +54,42 @@ sqlunt ssn start static static swend switch sys then tim unt until void void wen ["keyword", "on"], ["keyword", "opts"], ["keyword", "pfx"], - ["keyword", "private"], + + ["keyword", "print"], ["keyword", "private"], ["keyword", "process_events"], - - ["keyword", "protected"], ["keyword", "protected"], ["keyword", "psz"], ["keyword", "public"], - ["keyword", "public"], + ["keyword", "read"], ["keyword", "read_resource"], + ["keyword", "release"], ["keyword", "remove_callback"], + + ["keyword", "repeat"], ["keyword", "restore"], + ["keyword", "return"], ["keyword", "rev"], ["keyword", "seterr"], ["keyword", "setesc"], ["keyword", "sqlchn"], - ["keyword", "sqlunt"], ["keyword", "ssn"], ["keyword", "start"], ["keyword", "static"], - ["keyword", "static"], ["keyword", "swend"], ["keyword", "switch"], ["keyword", "sys"], ["keyword", "then"], + ["keyword", "tim"], ["keyword", "unt"], ["keyword", "until"], - ["keyword", "void"], + ["keyword", "use"], ["keyword", "void"], ["keyword", "wend"], ["keyword", "where"], - ["keyword", "while"], - ["keyword", "use"] + ["keyword", "while"] ] ---------------------------------------------------- From f069d10e4faeb52254d0973d8a79643c686d6a4b Mon Sep 17 00:00:00 2001 From: Hyyan Abo Fakher Date: Sat, 30 Jul 2022 16:34:20 +0200 Subject: [PATCH 2/3] BBj: fix strings regex does not match single quotes --- components/prism-bbj.js | 2 +- components/prism-bbj.min.js | 2 +- tests/languages/bbj/string_feature.test | 20 +++++++++++++++++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/components/prism-bbj.js b/components/prism-bbj.js index d2730b72a8..ff7265ce22 100644 --- a/components/prism-bbj.js +++ b/components/prism-bbj.js @@ -6,7 +6,7 @@ greedy: true }, 'string': { - pattern: /"(?:""|[!#$%&'()*,\/:;<=>?^\w +\-.])*"/, + pattern: /(['"])(?:(?!\1|\\).|\\.)*\1/, greedy: true }, 'number': /(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i, diff --git a/components/prism-bbj.min.js b/components/prism-bbj.min.js index 0ac3642504..10f1c9e24f 100644 --- a/components/prism-bbj.min.js +++ b/components/prism-bbj.min.js @@ -1 +1 @@ -!function(e){e.languages.bbj={comment:{pattern:/(^|[^\\:])rem\s+.*/i,lookbehind:!0,greedy:!0},string:{pattern:/"(?:""|[!#$%&'()*,\/:;<=>?^\w +\-.])*"/,greedy:!0},number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|delete|dim|dom|dread|dsz|else|end|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|print|private|process_events|protected|psz|public|read|read_resource|release|remove_callback|repeat|restore|return|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\b/i,function:/\b\w+(?=\()/,boolean:/\b(?:BBjAPI\.TRUE|BBjAPI\.FALSE)\b/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:and|not|or|xor)\b/i,punctuation:/[.,;:()]/}}(Prism); \ No newline at end of file +!function(e){e.languages.bbj={comment:{pattern:/(^|[^\\:])rem\s+.*/i,lookbehind:!0,greedy:!0},string:{pattern:/(['"])(?:(?!\1|\\).|\\.)*\1/,greedy:!0},number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|delete|dim|dom|dread|dsz|else|end|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|print|private|process_events|protected|psz|public|read|read_resource|release|remove_callback|repeat|restore|return|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\b/i,function:/\b\w+(?=\()/,boolean:/\b(?:BBjAPI\.TRUE|BBjAPI\.FALSE)\b/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:and|not|or|xor)\b/i,punctuation:/[.,;:()]/}}(Prism); \ No newline at end of file diff --git a/tests/languages/bbj/string_feature.test b/tests/languages/bbj/string_feature.test index 101e1b3c60..1d635e704f 100644 --- a/tests/languages/bbj/string_feature.test +++ b/tests/languages/bbj/string_feature.test @@ -1,13 +1,27 @@ "" -"fo""obar" +'' +"f\"oo" +'b\'ar' + +"foo rem comment bar" +"foo ""rem"" comment bar" +"foo rem /* *rem comment bar" ---------------------------------------------------- [ ["string", "\"\""], - ["string", "\"fo\"\"obar\""] + ["string", "''"], + ["string", "\"f\\\"oo\""], + ["string", "'b\\'ar'"], + + ["string", "\"foo rem comment bar\""], + ["string", "\"foo \""], + ["string", "\"rem\""], + ["string", "\" comment bar\""], + ["string", "\"foo rem /* *rem comment bar\""] ] ---------------------------------------------------- -Checks for strings. \ No newline at end of file +Checks for strings. From 358f56ffcc65b781c66108a4f357bd4edc7d319e Mon Sep 17 00:00:00 2001 From: Hyyan Abo Fakher Date: Sat, 30 Jul 2022 16:55:22 +0200 Subject: [PATCH 3/3] BBj: add `declare` as keyword --- components/prism-bbj.js | 2 +- components/prism-bbj.min.js | 2 +- tests/languages/bbj/keyword_feature.test | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/components/prism-bbj.js b/components/prism-bbj.js index ff7265ce22..df401d329d 100644 --- a/components/prism-bbj.js +++ b/components/prism-bbj.js @@ -10,7 +10,7 @@ greedy: true }, 'number': /(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i, - 'keyword': /\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|delete|dim|dom|dread|dsz|else|end|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|print|private|process_events|protected|psz|public|read|read_resource|release|remove_callback|repeat|restore|return|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\b/i, + 'keyword': /\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|declare|delete|dim|dom|dread|dsz|else|end|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|print|private|process_events|protected|psz|public|read|read_resource|release|remove_callback|repeat|restore|return|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\b/i, 'function': /\b\w+(?=\()/, 'boolean': /\b(?:BBjAPI\.TRUE|BBjAPI\.FALSE)\b/i, 'operator': /<[=>]?|>=?|[+\-*\/^=&]|\b(?:and|not|or|xor)\b/i, diff --git a/components/prism-bbj.min.js b/components/prism-bbj.min.js index 10f1c9e24f..839b4a9439 100644 --- a/components/prism-bbj.min.js +++ b/components/prism-bbj.min.js @@ -1 +1 @@ -!function(e){e.languages.bbj={comment:{pattern:/(^|[^\\:])rem\s+.*/i,lookbehind:!0,greedy:!0},string:{pattern:/(['"])(?:(?!\1|\\).|\\.)*\1/,greedy:!0},number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|delete|dim|dom|dread|dsz|else|end|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|print|private|process_events|protected|psz|public|read|read_resource|release|remove_callback|repeat|restore|return|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\b/i,function:/\b\w+(?=\()/,boolean:/\b(?:BBjAPI\.TRUE|BBjAPI\.FALSE)\b/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:and|not|or|xor)\b/i,punctuation:/[.,;:()]/}}(Prism); \ No newline at end of file +!function(e){e.languages.bbj={comment:{pattern:/(^|[^\\:])rem\s+.*/i,lookbehind:!0,greedy:!0},string:{pattern:/(['"])(?:(?!\1|\\).|\\.)*\1/,greedy:!0},number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|declare|delete|dim|dom|dread|dsz|else|end|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|print|private|process_events|protected|psz|public|read|read_resource|release|remove_callback|repeat|restore|return|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\b/i,function:/\b\w+(?=\()/,boolean:/\b(?:BBjAPI\.TRUE|BBjAPI\.FALSE)\b/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:and|not|or|xor)\b/i,punctuation:/[.,;:()]/}}(Prism); \ No newline at end of file diff --git a/tests/languages/bbj/keyword_feature.test b/tests/languages/bbj/keyword_feature.test index f2af02bb84..4948ebd873 100644 --- a/tests/languages/bbj/keyword_feature.test +++ b/tests/languages/bbj/keyword_feature.test @@ -3,7 +3,7 @@ dread dsz else end endif err exitto extends fi field for from gosub goto if impl interface interfaceend iol iolist let list load method methodend methodret on opts pfx print private process_events protected psz public read read_resource release remove_callback repeat restore return rev seterr setesc sqlchn sqlunt ssn start static swend switch sys then -tim unt until use void wend where while +tim unt until use void wend where while declare ---------------------------------------------------- @@ -89,7 +89,8 @@ tim unt until use void wend where while ["keyword", "void"], ["keyword", "wend"], ["keyword", "where"], - ["keyword", "while"] + ["keyword", "while"], + ["keyword", "declare"] ] ----------------------------------------------------