diff --git a/app/models/frame_diff.rb b/app/models/frame_diff.rb index 7cd5cc9..d2322f0 100644 --- a/app/models/frame_diff.rb +++ b/app/models/frame_diff.rb @@ -7,7 +7,7 @@ class FrameDiff def as_json(*) json = {} - json[:lines] = optimized_line_changes unless line_changes.blank? + json[:lines] = line_changes unless line_changes.blank? json[:cursor] = cursor_changes unless cursor_changes.blank? json @@ -17,12 +17,4 @@ class FrameDiff attr_reader :line_changes, :cursor_changes - def optimized_line_changes - line_optimizer = LineOptimizer.new - - line_changes.each_with_object({}) do |(k, v), h| - h[k] = line_optimizer.optimize(v) - end - end - end diff --git a/spec/models/frame_diff_spec.rb b/spec/models/frame_diff_spec.rb index 23f0501..ce56a69 100644 --- a/spec/models/frame_diff_spec.rb +++ b/spec/models/frame_diff_spec.rb @@ -7,24 +7,12 @@ describe FrameDiff do let(:cursor_changes) { { x: 1 } } let(:line_0) { double('line_0') } let(:line_2) { double('line_2') } - let(:line_optimizer) { double('line_optimizer') } - let(:optimized_line_0) { double('optimized_line_0') } - let(:optimized_line_2) { double('optimized_line_2') } describe '#as_json' do subject { frame_diff.as_json } - before do - allow(LineOptimizer).to receive(:new) { line_optimizer } - allow(line_optimizer).to receive(:optimize). - with(line_0) { optimized_line_0 } - allow(line_optimizer).to receive(:optimize). - with(line_2) { optimized_line_2 } - end - it 'includes line changes and cursor changes' do - expect(subject).to eq({ :lines => { 0 => optimized_line_0, - 2 => optimized_line_2 }, + expect(subject).to eq({ :lines => { 0 => line_0, 2 => line_2 }, :cursor => cursor_changes }) end diff --git a/spec/models/terminal_spec.rb b/spec/models/terminal_spec.rb index 42ff1ef..f8ce82e 100644 --- a/spec/models/terminal_spec.rb +++ b/spec/models/terminal_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' describe Terminal do - let(:terminal) { Terminal.new(4, 3) } + let(:terminal) { Terminal.new(6, 3) } let(:first_line_text) { subject.as_json.first.map(&:first).join.strip } before do @@ -20,24 +20,29 @@ describe Terminal do describe '#snapshot' do subject { terminal.snapshot } - let(:data) { ["f\e[31mo\e[42mo\n", "\rb\e[0ma\e[1;4;5;7ms"] } + let(:data) { ["fo\e[31mo\e[42mba\n", "\rr\e[0mb\e[1;4;5;7maz"] } it 'returns an instance of Snapshot' do expect(subject).to be_kind_of(Snapshot) end - it "returns each screen cell with its character attributes" do + it "returns screen cells groupped by the character attributes" do expect(subject.as_json).to eq([ [ - ['f', {}], ['o', fg: 1], ['o', fg: 1, bg: 2], [' ', {}], + ['fo', {}], + ['o', fg: 1], + ['ba', fg: 1, bg: 2], + [' ', {}], ], [ - ['b', fg: 1, bg: 2], ['a', {}], ['s', bold: true, underline: true, - inverse: true, blink: true], - [' ', inverse: true] # <- cursor here + ['r', fg: 1, bg: 2], + ['b', {}], + ['az', bold: true, underline: true, inverse: true, blink: true], + [' ', inverse: true], # <- cursor here + [' ', {}] ], [ - [' ', {}], [' ', {}], [' ', {}], [' ', {}] + [' ', {}] ] ]) end