X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=terminal.coffee;h=c7dbd7f59970a3eade4b86b7d3b05e43dd7d6e97;hb=e80ebd564e2216cf66d839520e91c4d17ec9e177;hp=360fb1ad57c8ce3d8ab9771f57b5b93603836e60;hpb=1700d1f6d76490cd696f9072bf28d595a4e484c5;p=watch-my-terminal.git diff --git a/terminal.coffee b/terminal.coffee index 360fb1a..c7dbd7f 100644 --- a/terminal.coffee +++ b/terminal.coffee @@ -1,5 +1,11 @@ -async = require 'async' -fs = require 'fs' +# this file is used by the client and server. + +# work around lack of module system in the browser: +if exports? + my_exports = exports +else + window.terminal = {} + my_exports = window.terminal class Terminal # public: @@ -100,62 +106,67 @@ class Terminal csi_m: default: "0", go: -> for i in arguments - switch i - when '0' + fixed = i + while fixed[0] is '0' + fixed = fixed.substr 1 + switch fixed + when '' @set_attribute_bits 0xffffff, 0 when '1' # bold - @set_attribute_bits 0x100, 1 + @set_attribute_bits 0x10000, 0x10000 when '4' # underline - @set_attribute_bits 0x200, 1 + @set_attribute_bits 0x20000, 0x20000 when '5' # blink - @set_attribute_bits 0x400, 1 + @set_attribute_bits 0x40000, 0x40000 when '8' # invisible - @set_attribute_bits 0x800, 1 + @set_attribute_bits 0x80000, 0x80000 when '22' # not bold... according to a page - @set_attribute_bits 0x100, 0 + @set_attribute_bits 0x10000, 0 when '21' # ... though this would make more sense for "not bold" - @set_attribute_bits 0x100, 0 + @set_attribute_bits 0x10000, 0 when '24' # not underline - @set_attribute_bits 0x200, 0 + @set_attribute_bits 0x20000, 0 when '25' # not blink - @set_attribute_bits 0x400, 0 + @set_attribute_bits 0x40000, 0 when '28' # not invisible - @set_attribute_bits 0x800, 0 + @set_attribute_bits 0x80000, 0 when '30' # fg black - @set_attribute_bits 0xff, 0 + @set_attribute_bits 0xff, 0x00 when '31' # fg red - @set_attribute_bits 0xff, 0xe0 + @set_attribute_bits 0xff, 0x01 when '32' # fg green - @set_attribute_bits 0xff, 0x1c + @set_attribute_bits 0xff, 0x02 when '33' # fg yellow - @set_attribute_bits 0xff, 0xfc + @set_attribute_bits 0xff, 0x03 when '34' # fg blue - @set_attribute_bits 0xff, 0x02 + @set_attribute_bits 0xff, 0x04 when '35' # fg magenta - @set_attribute_bits 0xff, 0xe2 + @set_attribute_bits 0xff, 0x05 when '36' # fg cyan - @set_attribute_bits 0xff, 0x1f + @set_attribute_bits 0xff, 0x06 when '37', '39' # fg white (39 is default) - @set_attribute_bits 0xff, 0xff + @set_attribute_bits 0xff, 0x07 when '40' # bg black - @set_attribute_bits 0xff00, 0 + @set_attribute_bits 0xff00, 0x0000 when '41' # bg red - @set_attribute_bits 0xff00, 0xe000 + @set_attribute_bits 0xff00, 0x0100 when '42' # bg green - @set_attribute_bits 0xff00, 0x1c00 + @set_attribute_bits 0xff00, 0x0200 when '43' # bg yellow - @set_attribute_bits 0xff00, 0xfc00 + @set_attribute_bits 0xff00, 0x0300 when '44' # bg blue - @set_attribute_bits 0xff00, 0x0200 + @set_attribute_bits 0xff00, 0x0400 when '45' # bg magenta - @set_attribute_bits 0xff00, 0xe200 + @set_attribute_bits 0xff00, 0x0500 when '46' # bg cyan - @set_attribute_bits 0xff00, 0x1f00 - when '47', '49' # bg white (49 is default) - @set_attribute_bits 0xff00, 0xff + @set_attribute_bits 0xff00, 0x0600 + when '47' # bg white + @set_attribute_bits 0xff00, 0x0700 + when '49' # bg default + @set_attribute_bits 0xff00, 0x0000 else # if we don't recognize the style, go back to default @@ -186,5 +197,5 @@ class Terminal return -1 unless parts? return parts[0].length -exports.new = (width, height) -> +my_exports.new = (width, height) -> return new Terminal width, height