remove if/else dispatch from compile chain
This commit is contained in:
15
parse.cm
15
parse.cm
@@ -1,6 +1,11 @@
|
||||
var parse = function(tokens, src, filename, tokenizer) {
|
||||
var _src_len = length(src)
|
||||
|
||||
var template_escape_map = {
|
||||
n: "\n", t: "\t", r: "\r", "\\": "\\",
|
||||
"`": "`", "$": "$", "0": character(0)
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// Parser Cursor
|
||||
// ============================================================
|
||||
@@ -175,6 +180,7 @@ var parse = function(tokens, src, filename, tokenizer) {
|
||||
var tc = null
|
||||
var tq = null
|
||||
var esc_ch = null
|
||||
var esc_val = null
|
||||
var expr_tokens = null
|
||||
var sub_ast = null
|
||||
var sub_stmt = null
|
||||
@@ -223,13 +229,8 @@ var parse = function(tokens, src, filename, tokenizer) {
|
||||
while (tvi < tvlen) {
|
||||
if (tv[tvi] == "\\" && tvi + 1 < tvlen) {
|
||||
esc_ch = tv[tvi + 1]
|
||||
if (esc_ch == "n") { push(fmt_parts, "\n") }
|
||||
else if (esc_ch == "t") { push(fmt_parts, "\t") }
|
||||
else if (esc_ch == "r") { push(fmt_parts, "\r") }
|
||||
else if (esc_ch == "\\") { push(fmt_parts, "\\") }
|
||||
else if (esc_ch == "`") { push(fmt_parts, "`") }
|
||||
else if (esc_ch == "$") { push(fmt_parts, "$") }
|
||||
else if (esc_ch == "0") { push(fmt_parts, character(0)) }
|
||||
esc_val = template_escape_map[esc_ch]
|
||||
if (esc_val != null) { push(fmt_parts, esc_val) }
|
||||
else { push(fmt_parts, esc_ch) }
|
||||
tvi = tvi + 2
|
||||
} else if (tv[tvi] == "$" && tvi + 1 < tvlen && tv[tvi + 1] == "{") {
|
||||
|
||||
Reference in New Issue
Block a user