JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
bump version number to 1.0
[watch-my-terminal.git] / server.coffee
index bf3a750..f1e208a 100644 (file)
@@ -1,3 +1,9 @@
+# SETTINGS
+term_lines = 32
+term_columns = 104
+http_port = 2218
+
+
 handler = (req, res) ->
        reply_err = (req, res, msg) ->
                res.writeHead(200, 'Content-Type': 'text/plain')
@@ -35,9 +41,8 @@ io = require('socket.io').listen(app)
 fs = require('fs')
 terminal = require('./terminal.coffee')
 
-# SETTINGS
-app.listen(2218)
-term = terminal.new(104, 66)
+app.listen(http_port)
+term = terminal.new(term_columns, term_lines)
 
 sockets = []
 
@@ -77,11 +82,15 @@ io.sockets.on 'connection', (socket) ->
        encode_screen = (height, width, text, attributes) ->
                state = ''
                for y in [0...height]
-                       for x in [0...width]
-                               if attributes[y][x] isnt a
-                                       state += attr_diff a, attributes[y][x]
-                                       a = attributes[y][x]
-                               state += text[y][x]
+                       max = width - 1
+                       while max >= 0 and text[y][max] is ' ' and (attributes[y][max] & 0x08ff00) is 0
+                               max -= 1
+                       if max >= 0
+                               for x in [0..max]
+                                       if attributes[y][x] isnt a
+                                               state += attr_diff a, attributes[y][x]
+                                               a = attributes[y][x]
+                                       state += text[y][x]
                        if y < height - 1
                                state += '\n'
                return state