From badfaf95aa7f086dc86cbe9baaf815b20c4b2fe4 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Thu, 21 Feb 2013 03:08:17 -0600 Subject: [PATCH] optimzations. fix escape. --- good | 298 ++++++++++++++++++++++++++-------------------------- lib/tput.js | 21 +++- 2 files changed, 167 insertions(+), 152 deletions(-) diff --git a/good b/good index fd2b0da..331147c 100644 --- a/good +++ b/good @@ -289,136 +289,135 @@ Compiling maximum_windows: -1 Compiling max_colors: 8 Compiling max_pairs: 64 Compiling back_tab: "\u001b[Z" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[Z");return out.join(""); +return "\x1b[Z"; Compiling bell: "\u0007" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("");return out.join(""); +return ""; Compiling carriage_return: "\r" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\ ");return out.join(""); +return "\r"; Compiling change_scroll_region: "\u001b[%i%p1%d;%p2%dr" var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b["),(params[0]++, params[1]++),(stack.push(v = params[0]), v),out.push(stack.pop()),out.push(";"),(stack.push(v = params[1]), v),out.push(stack.pop()),out.push("r");return out.join(""); Compiling clear_all_tabs: "\u001b[3g" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[3g");return out.join(""); +return "\x1b[3g"; Compiling clear_screen: "\u001b[H\u001b[2J" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[H\x1b[2J");return out.join(""); +return "\x1b[H\x1b[2J"; Compiling clr_eol: "\u001b[K" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[K");return out.join(""); +return "\x1b[K"; Compiling clr_eos: "\u001b[J" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[J");return out.join(""); +return "\x1b[J"; Compiling column_address: "\u001b[%i%p1%dG" var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b["),(params[0]++, params[1]++),(stack.push(v = params[0]), v),out.push(stack.pop()),out.push("G");return out.join(""); Compiling cursor_address: "\u001b[%i%p1%d;%p2%dH" var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b["),(params[0]++, params[1]++),(stack.push(v = params[0]), v),out.push(stack.pop()),out.push(";"),(stack.push(v = params[1]), v),out.push(stack.pop()),out.push("H");return out.join(""); Compiling cursor_down: "\n" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\ -");return out.join(""); +return "\n"; Compiling cursor_home: "\u001b[H" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[H");return out.join(""); +return "\x1b[H"; Compiling cursor_invisible: "\u001b[?25l" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[?25l");return out.join(""); +return "\x1b[?25l"; Compiling cursor_left: "\b" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("");return out.join(""); +return ""; Compiling cursor_normal: "\u001b[?12l\u001b[?25h" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[?12l\x1b[?25h");return out.join(""); +return "\x1b[?12l\x1b[?25h"; Compiling cursor_right: "\u001b[C" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[C");return out.join(""); +return "\x1b[C"; Compiling cursor_up: "\u001b[A" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[A");return out.join(""); +return "\x1b[A"; Compiling cursor_visible: "\u001b[?12;25h" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[?12;25h");return out.join(""); +return "\x1b[?12;25h"; Compiling delete_character: "\u001b[P" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[P");return out.join(""); +return "\x1b[P"; Compiling delete_line: "\u001b[M" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[M");return out.join(""); +return "\x1b[M"; Compiling enter_alt_charset_mode: "\u001b(0" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b(0");return out.join(""); +return "\x1b(0"; Compiling enter_blink_mode: "\u001b[5m" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[5m");return out.join(""); +return "\x1b[5m"; Compiling enter_bold_mode: "\u001b[1m" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1m");return out.join(""); +return "\x1b[1m"; Compiling enter_ca_mode: "\u001b[?1049h" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[?1049h");return out.join(""); +return "\x1b[?1049h"; Compiling enter_insert_mode: "\u001b[4h" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[4h");return out.join(""); +return "\x1b[4h"; Compiling enter_secure_mode: "\u001b[8m" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[8m");return out.join(""); +return "\x1b[8m"; Compiling enter_reverse_mode: "\u001b[7m" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[7m");return out.join(""); +return "\x1b[7m"; Compiling enter_standout_mode: "\u001b[7m" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[7m");return out.join(""); +return "\x1b[7m"; Compiling enter_underline_mode: "\u001b[4m" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[4m");return out.join(""); +return "\x1b[4m"; Compiling erase_chars: "\u001b[%p1%dX" var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b["),(stack.push(v = params[0]), v),out.push(stack.pop()),out.push("X");return out.join(""); Compiling exit_alt_charset_mode: "\u001b(B" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b(B");return out.join(""); +return "\x1b(B"; Compiling exit_attribute_mode: "\u001b(B\u001b[m" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b(B\x1b[m");return out.join(""); +return "\x1b(B\x1b[m"; Compiling exit_ca_mode: "\u001b[?1049l" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[?1049l");return out.join(""); +return "\x1b[?1049l"; Compiling exit_insert_mode: "\u001b[4l" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[4l");return out.join(""); +return "\x1b[4l"; Compiling exit_standout_mode: "\u001b[27m" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[27m");return out.join(""); +return "\x1b[27m"; Compiling exit_underline_mode: "\u001b[24m" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[24m");return out.join(""); +return "\x1b[24m"; Compiling flash_screen: "\u001b[?5h$<100/>\u001b[?5l" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[?5h$<100/>\x1b[?5l");return out.join(""); +return "\x1b[?5h$<100/>\x1b[?5l"; Compiling init_2string: "\u001b[!p\u001b[?3;4l\u001b[4l\u001b>" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[!p\x1b[?3;4l\x1b[4l\x1b>");return out.join(""); +return "\x1b[!p\x1b[?3;4l\x1b[4l\x1b>"; Compiling insert_line: "\u001b[L" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[L");return out.join(""); +return "\x1b[L"; Compiling key_backspace: "\b" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("");return out.join(""); +return ""; Compiling key_dc: "\u001b[3~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[3~");return out.join(""); +return "\x1b[3~"; Compiling key_down: "\u001bOB" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bOB");return out.join(""); +return "\x1bOB"; Compiling key_f1: "\u001bOP" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bOP");return out.join(""); +return "\x1bOP"; Compiling key_f10: "\u001b[21~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[21~");return out.join(""); +return "\x1b[21~"; Compiling key_f2: "\u001bOQ" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bOQ");return out.join(""); +return "\x1bOQ"; Compiling key_f3: "\u001bOR" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bOR");return out.join(""); +return "\x1bOR"; Compiling key_f4: "\u001bOS" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bOS");return out.join(""); +return "\x1bOS"; Compiling key_f5: "\u001b[15~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[15~");return out.join(""); +return "\x1b[15~"; Compiling key_f6: "\u001b[17~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[17~");return out.join(""); +return "\x1b[17~"; Compiling key_f7: "\u001b[18~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[18~");return out.join(""); +return "\x1b[18~"; Compiling key_f8: "\u001b[19~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[19~");return out.join(""); +return "\x1b[19~"; Compiling key_f9: "\u001b[20~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[20~");return out.join(""); +return "\x1b[20~"; Compiling key_home: "\u001bOH" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bOH");return out.join(""); +return "\x1bOH"; Compiling key_ic: "\u001b[2~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[2~");return out.join(""); +return "\x1b[2~"; Compiling key_left: "\u001bOD" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bOD");return out.join(""); +return "\x1bOD"; Compiling key_npage: "\u001b[6~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[6~");return out.join(""); +return "\x1b[6~"; Compiling key_ppage: "\u001b[5~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[5~");return out.join(""); +return "\x1b[5~"; Compiling key_right: "\u001bOC" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bOC");return out.join(""); +return "\x1bOC"; Compiling key_sf: "\u001b[1;2B" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;2B");return out.join(""); +return "\x1b[1;2B"; Compiling key_sr: "\u001b[1;2A" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;2A");return out.join(""); +return "\x1b[1;2A"; Compiling key_up: "\u001bOA" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bOA");return out.join(""); +return "\x1bOA"; Compiling keypad_local: "\u001b[?1l\u001b>" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[?1l\x1b>");return out.join(""); +return "\x1b[?1l\x1b>"; Compiling keypad_xmit: "\u001b[?1h\u001b=" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[?1h\x1b=");return out.join(""); +return "\x1b[?1h\x1b="; Compiling meta_off: "\u001b[?1034l" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[?1034l");return out.join(""); +return "\x1b[?1034l"; Compiling meta_on: "\u001b[?1034h" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[?1034h");return out.join(""); +return "\x1b[?1034h"; Compiling parm_dch: "\u001b[%p1%dP" var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b["),(stack.push(v = params[0]), v),out.push(stack.pop()),out.push("P");return out.join(""); Compiling parm_delete_line: "\u001b[%p1%dM" @@ -440,191 +439,190 @@ var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b["),(stack.push(v Compiling parm_up_cursor: "\u001b[%p1%dA" var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b["),(stack.push(v = params[0]), v),out.push(stack.pop()),out.push("A");return out.join(""); Compiling print_screen: "\u001b[i" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[i");return out.join(""); +return "\x1b[i"; Compiling prtr_off: "\u001b[4i" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[4i");return out.join(""); +return "\x1b[4i"; Compiling prtr_on: "\u001b[5i" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[5i");return out.join(""); +return "\x1b[5i"; Compiling reset_1string: "\u001bc" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bc");return out.join(""); +return "\x1bc"; Compiling reset_2string: "\u001b[!p\u001b[?3;4l\u001b[4l\u001b>" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[!p\x1b[?3;4l\x1b[4l\x1b>");return out.join(""); +return "\x1b[!p\x1b[?3;4l\x1b[4l\x1b>"; Compiling restore_cursor: "\u001b8" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b8");return out.join(""); +return "\x1b8"; Compiling row_address: "\u001b[%i%p1%dd" var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b["),(params[0]++, params[1]++),(stack.push(v = params[0]), v),out.push(stack.pop()),out.push("d");return out.join(""); Compiling save_cursor: "\u001b7" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b7");return out.join(""); +return "\x1b7"; Compiling scroll_forward: "\n" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\ -");return out.join(""); +return "\n"; Compiling scroll_reverse: "\u001bM" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bM");return out.join(""); +return "\x1bM"; Compiling set_attributes: "%?%p9%t\u001b(0%e\u001b(B%;\u001b[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m" var v, dyn = {}, stat = {}, stack = [], out = [];;if ((stack.push(v = params[8]), v)) {out.push("\x1b(0")} else {out.push("\x1b(B")}out.push("\x1b[0");if ((stack.push(v = params[5]), v)) {out.push(";1")};if ((stack.push(v = params[1]), v)) {out.push(";4")};if ((stack.push(v = params[0]), v),(stack.push(v = params[2]), v),(stack.push(v = (stack.pop() | stack.pop())), v)) {out.push(";7")};if ((stack.push(v = params[3]), v)) {out.push(";5")};if ((stack.push(v = params[6]), v)) {out.push(";8")}out.push("m");return out.join(""); Compiling set_tab: "\u001bH" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bH");return out.join(""); +return "\x1bH"; Compiling tab: "\t" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push(" ");return out.join(""); +return " "; Compiling key_b2: "\u001bOE" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bOE");return out.join(""); +return "\x1bOE"; Compiling acs_chars: "``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~");return out.join(""); +return "``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~"; Compiling key_btab: "\u001b[Z" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[Z");return out.join(""); +return "\x1b[Z"; Compiling enter_am_mode: "\u001b[?7h" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[?7h");return out.join(""); +return "\x1b[?7h"; Compiling exit_am_mode: "\u001b[?7l" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[?7l");return out.join(""); +return "\x1b[?7l"; Compiling key_end: "\u001bOF" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bOF");return out.join(""); +return "\x1bOF"; Compiling key_enter: "\u001bOM" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bOM");return out.join(""); +return "\x1bOM"; Compiling key_sdc: "\u001b[3;2~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[3;2~");return out.join(""); +return "\x1b[3;2~"; Compiling key_send: "\u001b[1;2F" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;2F");return out.join(""); +return "\x1b[1;2F"; Compiling key_shome: "\u001b[1;2H" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;2H");return out.join(""); +return "\x1b[1;2H"; Compiling key_sic: "\u001b[2;2~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[2;2~");return out.join(""); +return "\x1b[2;2~"; Compiling key_sleft: "\u001b[1;2D" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;2D");return out.join(""); +return "\x1b[1;2D"; Compiling key_snext: "\u001b[6;2~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[6;2~");return out.join(""); +return "\x1b[6;2~"; Compiling key_sprevious: "\u001b[5;2~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[5;2~");return out.join(""); +return "\x1b[5;2~"; Compiling key_sright: "\u001b[1;2C" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;2C");return out.join(""); +return "\x1b[1;2C"; Compiling key_f11: "\u001b[23~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[23~");return out.join(""); +return "\x1b[23~"; Compiling key_f12: "\u001b[24~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[24~");return out.join(""); +return "\x1b[24~"; Compiling key_f13: "\u001b[1;2P" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;2P");return out.join(""); +return "\x1b[1;2P"; Compiling key_f14: "\u001b[1;2Q" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;2Q");return out.join(""); +return "\x1b[1;2Q"; Compiling key_f15: "\u001b[1;2R" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;2R");return out.join(""); +return "\x1b[1;2R"; Compiling key_f16: "\u001b[1;2S" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;2S");return out.join(""); +return "\x1b[1;2S"; Compiling key_f17: "\u001b[15;2~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[15;2~");return out.join(""); +return "\x1b[15;2~"; Compiling key_f18: "\u001b[17;2~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[17;2~");return out.join(""); +return "\x1b[17;2~"; Compiling key_f19: "\u001b[18;2~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[18;2~");return out.join(""); +return "\x1b[18;2~"; Compiling key_f20: "\u001b[19;2~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[19;2~");return out.join(""); +return "\x1b[19;2~"; Compiling key_f21: "\u001b[20;2~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[20;2~");return out.join(""); +return "\x1b[20;2~"; Compiling key_f22: "\u001b[21;2~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[21;2~");return out.join(""); +return "\x1b[21;2~"; Compiling key_f23: "\u001b[23;2~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[23;2~");return out.join(""); +return "\x1b[23;2~"; Compiling key_f24: "\u001b[24;2~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[24;2~");return out.join(""); +return "\x1b[24;2~"; Compiling key_f25: "\u001b[1;5P" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;5P");return out.join(""); +return "\x1b[1;5P"; Compiling key_f26: "\u001b[1;5Q" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;5Q");return out.join(""); +return "\x1b[1;5Q"; Compiling key_f27: "\u001b[1;5R" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;5R");return out.join(""); +return "\x1b[1;5R"; Compiling key_f28: "\u001b[1;5S" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;5S");return out.join(""); +return "\x1b[1;5S"; Compiling key_f29: "\u001b[15;5~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[15;5~");return out.join(""); +return "\x1b[15;5~"; Compiling key_f30: "\u001b[17;5~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[17;5~");return out.join(""); +return "\x1b[17;5~"; Compiling key_f31: "\u001b[18;5~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[18;5~");return out.join(""); +return "\x1b[18;5~"; Compiling key_f32: "\u001b[19;5~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[19;5~");return out.join(""); +return "\x1b[19;5~"; Compiling key_f33: "\u001b[20;5~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[20;5~");return out.join(""); +return "\x1b[20;5~"; Compiling key_f34: "\u001b[21;5~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[21;5~");return out.join(""); +return "\x1b[21;5~"; Compiling key_f35: "\u001b[23;5~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[23;5~");return out.join(""); +return "\x1b[23;5~"; Compiling key_f36: "\u001b[24;5~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[24;5~");return out.join(""); +return "\x1b[24;5~"; Compiling key_f37: "\u001b[1;6P" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;6P");return out.join(""); +return "\x1b[1;6P"; Compiling key_f38: "\u001b[1;6Q" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;6Q");return out.join(""); +return "\x1b[1;6Q"; Compiling key_f39: "\u001b[1;6R" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;6R");return out.join(""); +return "\x1b[1;6R"; Compiling key_f40: "\u001b[1;6S" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;6S");return out.join(""); +return "\x1b[1;6S"; Compiling key_f41: "\u001b[15;6~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[15;6~");return out.join(""); +return "\x1b[15;6~"; Compiling key_f42: "\u001b[17;6~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[17;6~");return out.join(""); +return "\x1b[17;6~"; Compiling key_f43: "\u001b[18;6~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[18;6~");return out.join(""); +return "\x1b[18;6~"; Compiling key_f44: "\u001b[19;6~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[19;6~");return out.join(""); +return "\x1b[19;6~"; Compiling key_f45: "\u001b[20;6~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[20;6~");return out.join(""); +return "\x1b[20;6~"; Compiling key_f46: "\u001b[21;6~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[21;6~");return out.join(""); +return "\x1b[21;6~"; Compiling key_f47: "\u001b[23;6~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[23;6~");return out.join(""); +return "\x1b[23;6~"; Compiling key_f48: "\u001b[24;6~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[24;6~");return out.join(""); +return "\x1b[24;6~"; Compiling key_f49: "\u001b[1;3P" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;3P");return out.join(""); +return "\x1b[1;3P"; Compiling key_f50: "\u001b[1;3Q" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;3Q");return out.join(""); +return "\x1b[1;3Q"; Compiling key_f51: "\u001b[1;3R" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;3R");return out.join(""); +return "\x1b[1;3R"; Compiling key_f52: "\u001b[1;3S" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;3S");return out.join(""); +return "\x1b[1;3S"; Compiling key_f53: "\u001b[15;3~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[15;3~");return out.join(""); +return "\x1b[15;3~"; Compiling key_f54: "\u001b[17;3~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[17;3~");return out.join(""); +return "\x1b[17;3~"; Compiling key_f55: "\u001b[18;3~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[18;3~");return out.join(""); +return "\x1b[18;3~"; Compiling key_f56: "\u001b[19;3~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[19;3~");return out.join(""); +return "\x1b[19;3~"; Compiling key_f57: "\u001b[20;3~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[20;3~");return out.join(""); +return "\x1b[20;3~"; Compiling key_f58: "\u001b[21;3~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[21;3~");return out.join(""); +return "\x1b[21;3~"; Compiling key_f59: "\u001b[23;3~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[23;3~");return out.join(""); +return "\x1b[23;3~"; Compiling key_f60: "\u001b[24;3~" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[24;3~");return out.join(""); +return "\x1b[24;3~"; Compiling key_f61: "\u001b[1;4P" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;4P");return out.join(""); +return "\x1b[1;4P"; Compiling key_f62: "\u001b[1;4Q" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;4Q");return out.join(""); +return "\x1b[1;4Q"; Compiling key_f63: "\u001b[1;4R" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1;4R");return out.join(""); +return "\x1b[1;4R"; Compiling clr_bol: "\u001b[1K" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[1K");return out.join(""); +return "\x1b[1K"; Compiling user6: "\u001b[%i%d;%dR" var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b["),(params[0]++, params[1]++),out.push(stack.pop()),out.push(";"),out.push(stack.pop()),out.push("R");return out.join(""); Compiling user7: "\u001b[6n" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[6n");return out.join(""); +return "\x1b[6n"; Compiling user8: "\u001b[?1;2c" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[?1;2c");return out.join(""); +return "\x1b[?1;2c"; Compiling user9: "\u001b[c" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[c");return out.join(""); +return "\x1b[c"; Compiling orig_pair: "\u001b[39;49m" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[39;49m");return out.join(""); +return "\x1b[39;49m"; Compiling set_foreground: "\u001b[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m" var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[3");if ((stack.push(v = params[0]), v),(stack.push(v = 1), v),(stack.push(v = (stack.pop() === stack.pop())), v)) {out.push("4")} else if ((stack.push(v = params[0]), v),(stack.push(v = 3), v),(stack.push(v = (stack.pop() === stack.pop())), v)) {out.push("6")} else if ((stack.push(v = params[0]), v),(stack.push(v = 4), v),(stack.push(v = (stack.pop() === stack.pop())), v)) {out.push("1")} else if ((stack.push(v = params[0]), v),(stack.push(v = 6), v),(stack.push(v = (stack.pop() === stack.pop())), v)) {out.push("3")} else {(stack.push(v = params[0]), v),out.push(stack.pop())}out.push("m");return out.join(""); Compiling set_background: "\u001b[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m" var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[4");if ((stack.push(v = params[0]), v),(stack.push(v = 1), v),(stack.push(v = (stack.pop() === stack.pop())), v)) {out.push("4")} else if ((stack.push(v = params[0]), v),(stack.push(v = 3), v),(stack.push(v = (stack.pop() === stack.pop())), v)) {out.push("6")} else if ((stack.push(v = params[0]), v),(stack.push(v = 4), v),(stack.push(v = (stack.pop() === stack.pop())), v)) {out.push("1")} else if ((stack.push(v = params[0]), v),(stack.push(v = 6), v),(stack.push(v = (stack.pop() === stack.pop())), v)) {out.push("3")} else {(stack.push(v = params[0]), v),out.push(stack.pop())}out.push("m");return out.join(""); Compiling key_mouse: "\u001b[M" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[M");return out.join(""); +return "\x1b[M"; Compiling set_a_foreground: "\u001b[3%p1%dm" var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[3"),(stack.push(v = params[0]), v),out.push(stack.pop()),out.push("m");return out.join(""); Compiling set_a_background: "\u001b[4%p1%dm" var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1b[4"),(stack.push(v = params[0]), v),out.push(stack.pop()),out.push("m");return out.join(""); Compiling memory_lock: "\u001bl" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bl");return out.join(""); +return "\x1bl"; Compiling memory_unlock: "\u001bm" -var v, dyn = {}, stat = {}, stack = [], out = [];out.push("\x1bm");return out.join(""); +return "\x1bm"; diff --git a/lib/tput.js b/lib/tput.js index d78cd4e..16564b8 100644 --- a/lib/tput.js +++ b/lib/tput.js @@ -332,7 +332,11 @@ Tput.prototype._compile = function(val) { if (buff) { //code += 'out.push(' + JSON.stringify(buff) + '),'; code += 'out.push("'; - code += buff.replace(/([\r\n"])/g, '\\$1'); + code += buff + .replace(/"/g, '\\"') + .replace(/\x1b/g, '\\x1b') + .replace(/\r/g, '\\r') + .replace(/\n/g, '\\n'); code += '"),'; buff = ''; } @@ -762,8 +766,21 @@ Tput.prototype._compile = function(val) { stmt(); code += ';return out.join("");'; + // Optimize + // ... out.push("foo");return out.join(""); + // To: + // return "foo"; + v = code.split(/out = \[\];out\.push\(|\);return out/); + if (v.length === 3 && /^"[^"]+"$/.test(v[1])) { + code = 'return ' + v[1] + ';'; + } + if (this.debug) { - console.log(code.replace(/\x1b/g, '\\x1b')); + v = code + .replace(/\x1b/g, '\\x1b') + .replace(/\r/g, '\\r') + .replace(/\n/g, '\\n'); + process.stdout.write(v + '\n'); } try {