harmonyc
Version:
Harmony Code - model-driven BDD for Vitest
75 lines (74 loc) • 2.6 kB
JavaScript
export var T;
(function (T) {
T["Newline"] = "newline";
T["Comment"] = "comment";
/** the => */
T["ResponseArrow"] = "=>";
T["ErrorMark"] = "!!";
T["Words"] = "words";
T["Minus"] = "-";
T["Plus"] = "+";
T["Colon"] = ":";
T["Space"] = "space";
T["OpeningBracket"] = "[";
T["ClosingBracket"] = "]";
T["OpeningBrace"] = "{";
T["ClosingBrace"] = "}";
T["And"] = "&";
T["Slash"] = "/";
T["Semicolon"] = ";";
T["DoubleQuoteString"] = "double-quote string";
T["UnclosedDoubleQuoteString"] = "unclosed double-quote string";
T["BacktickString"] = "backtick string";
T["UnclosedBacktickString"] = "unclosed backtick string";
T["InvalidEmptyBacktickString"] = "invalid empty backtick string";
T["InvalidWhitespace"] = "invalid whitespace";
T["InvalidTab"] = "invalid tab";
T["MultilineString"] = "multiline string";
T["InvalidMultilineStringMark"] = "invalid multiline string mark";
T["Variable"] = "variable";
T["InvalidEmptyVariable"] = "invalid empty variable";
T["UnclosedVariable"] = "unclosed variable";
})(T || (T = {}));
const rules = [
// false = ignore token
// if multiple patterns match, the former wins
// patterns must be y (sticky)
[true, /\n/y, T.Newline],
[true, /\t/y, T.InvalidTab],
[true, /[\x00-\x1f]/y, T.InvalidWhitespace],
[true, /^( )*[+]( |$)/my, T.Plus],
[true, /^( )*[-]( |$)/my, T.Minus],
[false, / /y, T.Space],
[false, /(#|\/\/).*?(?=\n|$)/y, T.Comment],
[true, /:(?=\s*(?:\n|$))/y, T.Colon],
[true, /\[/y, T.OpeningBracket],
[true, /\]/y, T.ClosingBracket],
[true, /\{/y, T.OpeningBrace],
[true, /\}/y, T.ClosingBrace],
[true, /\//y, T.Slash],
[true, /&/y, T.And],
[true, /;/y, T.Semicolon],
[true, /!!/y, T.ErrorMark],
[true, /=>/y, T.ResponseArrow],
[
true,
/"(?:[^"\\\n]|\\(?:[bfnrtv"\\/]|u[0-9a-fA-F]{4}))*"/y,
T.DoubleQuoteString,
],
[
true,
/"(?:[^"\\\n]|\\(?:[bfnrtv"\\/]|u[0-9a-fA-F]{4}))*/y,
T.UnclosedDoubleQuoteString,
],
[true, /``/y, T.InvalidEmptyBacktickString],
[true, /`[^`]+`/y, T.BacktickString],
[true, /`[^`]*/y, T.UnclosedBacktickString],
[true, /\$\{[^}\n]+\}/y, T.Variable],
[true, /\$\{\}/y, T.InvalidEmptyVariable],
[true, /\$\{[^}\n]*/y, T.UnclosedVariable],
[true, /\|(?: .*|(?=\n|$))/y, T.MultilineString],
[true, /\|[^ \n]/y, T.InvalidMultilineStringMark],
[true, /.+?(?=[\[\]"`|#{}&/;]|\$\{|$|=>|!!|:\s*$)/my, T.Words],
];
export default rules;