From ea3cfbb65a7346492ff967133494585c2dde17bc Mon Sep 17 00:00:00 2001 From: Marcin Kulik Date: Sat, 1 Dec 2012 15:50:27 +0100 Subject: [PATCH] Limit function calls number between AnsiInterpreter and VT --- .../javascripts/player/vt/ansi_interpreter.js.coffee | 10 +++++++--- app/assets/javascripts/player/vt/vt.js.coffee | 11 ++++++----- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/player/vt/ansi_interpreter.js.coffee b/app/assets/javascripts/player/vt/ansi_interpreter.js.coffee index f753456..3d8bd1e 100644 --- a/app/assets/javascripts/player/vt/ansi_interpreter.js.coffee +++ b/app/assets/javascripts/player/vt/ansi_interpreter.js.coffee @@ -1,10 +1,11 @@ class AsciiIo.AnsiInterpreter - constructor: (@callback) -> - @cb = @callback + constructor: -> @sgrInterpreter = new AsciiIo.SgrInterpreter() parse: (data) -> + @commands = [] + while data.length > 0 processed = @handleData data @@ -14,7 +15,10 @@ class AsciiIo.AnsiInterpreter data = data.slice processed - data + [@commands, data] + + cb: -> + @commands.push arguments handleData: (data) -> if data.match(/^\x1b[\x00-\x1f]/) diff --git a/app/assets/javascripts/player/vt/vt.js.coffee b/app/assets/javascripts/player/vt/vt.js.coffee index 2db54ee..40811a7 100644 --- a/app/assets/javascripts/player/vt/vt.js.coffee +++ b/app/assets/javascripts/player/vt/vt.js.coffee @@ -2,15 +2,16 @@ class AsciiIo.VT constructor: (@cols, @lines) -> _.extend(this, Backbone.Events) - @interpreter = new AsciiIo.AnsiInterpreter @onChange + @interpreter = new AsciiIo.AnsiInterpreter @reset() - onChange: (action, args...) => - @[action](args...) - feed: (data) -> @data += data - @data = @interpreter.parse @data + [commands, @data] = @interpreter.parse @data + + for command in commands + [name, args...] = command + @[name].apply this, args @data.length is 0