vedeu 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b30006037c42b5b8edf6c8dadb382342a593a509
4
- data.tar.gz: 14c1db8169f22fa1266dfd249942d7aca7ddbe69
3
+ metadata.gz: 2e5e01aa9e53954f48c2dec1ab53d3cbf2bdbe9f
4
+ data.tar.gz: 3ee412af2d4751e6e7cf7def63f59b049283fc89
5
5
  SHA512:
6
- metadata.gz: f5b66b1fb91bb76e83defef25c99f79af93c36297e3607a592e8302a5165c0a2c076b31325d803c19a74f1613493a9fba26772ecf98e13d2f49f842a4981d4f3
7
- data.tar.gz: 9b090b685842e11c0f45aa2c341ae8eb99234a0fcade6c58f5b0e6b4fda1c16afb75b3df01d95006a715a24e6f892e331fdee6a0ef7a53a55b49e95c1458e9d0
6
+ metadata.gz: ce32b74810f69dcbf687a527f2399d05f908095113a9fda6d213c49ddc9d0ef372f3dc70d78e1cf4aa8658330c3d6a8ad73042c94308ecc4c338200f23c9070a
7
+ data.tar.gz: 853a70f364f8876adec5284120a18f4ddc85027db12decf0b3a8d2a17a4dd621076f73c68e73958a89551357ac6c10a2528f2f6b119a1d6de884575599f53e65
data/lib/vedeu.rb CHANGED
@@ -7,6 +7,7 @@ require 'vedeu/api/line'
7
7
  require 'vedeu/api/store'
8
8
  require 'vedeu/api/stream'
9
9
  require 'vedeu/api/view'
10
+ require 'vedeu/output/view'
10
11
 
11
12
  require 'vedeu/support/menu'
12
13
  require 'vedeu/launcher'
@@ -17,6 +17,7 @@ module Vedeu
17
17
  on(:_log_) { |message| Vedeu.log(message) }
18
18
  on(:_mode_switch_) { fail ModeSwitch }
19
19
  on(:_clear_) { Terminal.output(Esc.string('clear')) }
20
+ on(:_refresh_) { Buffers.refresh_all }
20
21
 
21
22
  on(:_keypress_) do |key|
22
23
  trigger(:key, key)
@@ -1,4 +1,5 @@
1
1
  require 'vedeu/models/geometry'
2
+ require 'vedeu/models/composition'
2
3
  require 'vedeu/api/grid'
3
4
  require 'vedeu/api/store'
4
5
  require 'vedeu/support/terminal'
@@ -27,8 +28,23 @@ module Vedeu
27
28
  self.instance_eval(&block) if block_given?
28
29
 
29
30
  stored_attributes = Store.create(attributes)
31
+ interface = Vedeu::Interface.new(stored_attributes)
30
32
 
31
- Vedeu::Interface.new(stored_attributes)
33
+ Vedeu::Buffers.create(interface.name, interface.clear)
34
+
35
+ Vedeu.events.on("_refresh_#{interface.name}_".to_sym, interface.delay) do
36
+ Vedeu::Buffers.refresh(interface.name)
37
+ end
38
+
39
+ # TODO:
40
+ # cannot do group at this time
41
+ # unless interface.group.nil? || interface.group.empty?
42
+ # Vedeu.events.on("_refresh_group_#{interface.group}_".to_sym, interface.delay) do
43
+ # buffer.refresh_group(interface.group)
44
+ # end
45
+ # end
46
+
47
+ interface
32
48
  end
33
49
 
34
50
  private
@@ -19,7 +19,7 @@ module Vedeu
19
19
  end
20
20
 
21
21
  def initialize(name = '')
22
- fail Vedeu::API::InterfaceNotSpecified if name.nil? || name.empty?
22
+ fail InterfaceNotSpecified if name.nil? || name.empty?
23
23
 
24
24
  @name = name.to_s
25
25
  end
@@ -33,7 +33,7 @@ module Vedeu
33
33
  end
34
34
 
35
35
  def line(&block)
36
- attributes[:lines] << API::Line.build(&block)
36
+ attributes[:lines] << Line.build(&block)
37
37
  end
38
38
 
39
39
  def attributes
@@ -1,5 +1,6 @@
1
1
  require 'virtus'
2
2
 
3
+ require 'vedeu/models/interface'
3
4
  require 'vedeu/api/store'
4
5
 
5
6
  module Vedeu
@@ -1,8 +1,7 @@
1
1
  require 'virtus'
2
2
 
3
3
  require 'vedeu/models/attributes/interface_collection'
4
-
5
- # Todo: mutation (interfaces)
4
+ require 'vedeu/output/buffers'
6
5
 
7
6
  module Vedeu
8
7
  class Composition
@@ -15,7 +14,9 @@ module Vedeu
15
14
  end
16
15
 
17
16
  def enqueue
18
- interfaces.map(&:enqueue)
17
+ interfaces.map do |interface|
18
+ Buffers.enqueue(interface.name, interface.to_s)
19
+ end
19
20
  end
20
21
 
21
22
  def to_s
@@ -1,16 +1,12 @@
1
1
  require 'forwardable'
2
2
  require 'virtus'
3
3
 
4
- require 'vedeu'
5
4
  require 'vedeu/models/attributes/line_collection'
6
5
  require 'vedeu/models/colour'
7
6
  require 'vedeu/models/style'
8
7
  require 'vedeu/output/clear'
9
8
  require 'vedeu/output/render'
10
9
  require 'vedeu/models/geometry'
11
- require 'vedeu/support/terminal'
12
-
13
- # Todo: mutation (events, current)
14
10
 
15
11
  module Vedeu
16
12
  class Interface
@@ -23,66 +19,19 @@ module Vedeu
23
19
  attribute :colour, Colour, default: Colour.new
24
20
  attribute :style, Style, default: ''
25
21
  attribute :geometry, Geometry, default: Geometry.new
26
- attribute :current, String, default: ''
27
22
  attribute :cursor, Boolean, default: true
28
23
  attribute :delay, Float, default: 0
29
- attribute :buffer, Array, default: []
30
24
 
31
25
  def_delegators :@geometry, :north, :east, :south, :west,
32
26
  :top, :right, :bottom, :left,
33
27
  :width, :height, :origin
34
28
 
35
- def initialize(attributes = {})
36
- super
37
-
38
- Vedeu.events.on(:_refresh_, self.delay) { refresh }
39
- Vedeu.events.on("_refresh_#{name}_".to_sym, self.delay) { refresh }
40
-
41
- unless group.nil? || group.empty?
42
- Vedeu.events.on("_refresh_group_#{group}_".to_sym, self.delay) do
43
- refresh
44
- end
45
- end
46
-
47
- self
48
- end
49
-
50
29
  def clear
51
30
  @_clear ||= Clear.call(self)
52
31
  end
53
32
 
54
- def dequeue
55
- buffer.pop
56
- end
57
-
58
- def enqueue
59
- buffer.unshift(self.to_s)
60
- end
61
-
62
- def refresh
63
- if buffer.any?
64
- self.current = buffer.pop
65
-
66
- elsif no_content?
67
- self.current = clear
68
-
69
- else
70
- self.current
71
-
72
- end
73
- Terminal.output(self.current)
74
-
75
- self.current
76
- end
77
-
78
33
  def to_s
79
34
  Render.call(self)
80
35
  end
81
-
82
- private
83
-
84
- def no_content?
85
- self.current.nil? || self.current.empty?
86
- end
87
36
  end
88
37
  end
@@ -0,0 +1,51 @@
1
+ require 'vedeu/support/terminal'
2
+
3
+ module Vedeu
4
+ RefreshFailed = Class.new(StandardError)
5
+
6
+ module Buffers
7
+ extend self
8
+
9
+ def create(name, sequence)
10
+ buffers[name][:clear] = sequence
11
+ end
12
+
13
+ def enqueue(name, sequence)
14
+ buffers[name][:next].unshift(sequence)
15
+ end
16
+
17
+ def refresh(name)
18
+ data = buffers.fetch(name) do
19
+ fail RefreshFailed, 'Cannot refresh non-existent interface.'
20
+ end
21
+
22
+ sequence = if data[:next].any?
23
+ data[:current] = data[:next].pop
24
+
25
+ elsif data[:current].empty?
26
+ data[:clear]
27
+
28
+ else
29
+ data[:current]
30
+
31
+ end
32
+ Terminal.output(sequence)
33
+ end
34
+
35
+ def refresh_all
36
+ buffers.keys.map { |name| refresh(name) }
37
+ end
38
+
39
+ def reset
40
+ @buffers = {}
41
+ end
42
+
43
+ private
44
+
45
+ def buffers
46
+ @buffers ||= Hash.new do |hash, key|
47
+ hash[key] = { current: '', next: [], clear: '' }
48
+ end
49
+ end
50
+ end
51
+ end
@@ -26,33 +26,44 @@ module Vedeu
26
26
 
27
27
  attr_reader :interface
28
28
 
29
+ # The client application may have created a line that us too long for the
30
+ # interface. This code tries to truncate streams whilst preserving styles
31
+ # and colours.
29
32
  def processed_lines
30
33
  return [] unless lines.any? { |line| line.streams.any? }
31
34
 
32
35
  lines.map do |line|
33
- line_length = 0
34
- streams = line.streams.inject([]) do |processed, stream|
35
- next if stream.text.empty?
36
+ if exceeds_width?(line)
37
+ line_length = 0
38
+ processed = []
39
+ line.streams.each do |stream|
40
+ next if stream.text.empty?
36
41
 
37
- if (line_length += stream.text.size) >= width
38
- remainder = width - line_length
42
+ if (line_length += stream.text.size) >= width
43
+ remainder = width - line_length
39
44
 
40
- processed << Stream.new(text: truncate(stream.text, remainder),
41
- style: stream.style,
42
- colour: stream.colour)
45
+ processed << Stream.new(text: truncate(stream.text, remainder),
46
+ style: stream.style,
47
+ colour: stream.colour)
43
48
 
44
- else
45
- processed << stream
49
+ else
50
+ processed << stream
46
51
 
52
+ end
47
53
  end
48
- end
49
54
 
50
- Line.new(streams: streams,
51
- style: line.style,
52
- colour: line.colour)
55
+ Line.new(streams: processed, style: line.style, colour: line.colour)
56
+ else
57
+ line
58
+ end
53
59
  end
54
60
  end
55
61
 
62
+ def exceeds_width?(line)
63
+ content = line.streams.map(&:text).join
64
+ content.size > width
65
+ end
66
+
56
67
  def truncate(text, value)
57
68
  text.chomp.slice(0...value)
58
69
  end
@@ -1,10 +1,10 @@
1
1
  require 'test_helper'
2
2
 
3
+ require 'vedeu'
3
4
  require 'vedeu/models/composition'
4
5
  require 'vedeu/models/attributes/interface_collection'
5
6
  require 'vedeu/api/store'
6
7
 
7
-
8
8
  module Vedeu
9
9
  describe InterfaceCollection do
10
10
  describe '#coerce' do
@@ -4,6 +4,7 @@ require 'json'
4
4
 
5
5
  require 'vedeu/models/composition'
6
6
  require 'vedeu/api/store'
7
+ require 'vedeu'
7
8
 
8
9
  module Vedeu
9
10
  describe Composition do
@@ -116,7 +117,7 @@ module Vedeu
116
117
  "\e[3;3H \e[3;3H" \
117
118
  "\e[4;3H \e[4;3H" \
118
119
  "\e[5;3H \e[5;3H" \
119
- "\e[3;3H\e[38;5;16m\e[48;5;21mSome text...\e[38;5;226m\e[48;5;46m \e[38;5;231m\e[48;5;201mmore text..."
120
+ "\e[3;3H\e[38;5;16m\e[48;5;21m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;5;226m\e[48;5;46m\e[24m\e[21m\e[27m \e[38;5;231m\e[48;5;201m\e[1mmore text..."
120
121
  )
121
122
  end
122
123
 
@@ -256,13 +257,13 @@ module Vedeu
256
257
  "\e[3;3H \e[3;3H" \
257
258
  "\e[4;3H \e[4;3H" \
258
259
  "\e[5;3H \e[5;3H" \
259
- "\e[3;3H\e[38;5;16m\e[48;5;21mSome text...\e[38;5;226m\e[48;5;46m \e[38;5;231m\e[48;5;201mmore text..." \
260
- "\e[4;3H\e[38;5;16m\e[48;5;21mSome text...\e[38;5;226m\e[48;5;46m \e[38;5;231m\e[48;5;201mmore text..." \
260
+ "\e[3;3H\e[38;5;16m\e[48;5;21m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;5;226m\e[48;5;46m\e[24m\e[21m\e[27m \e[38;5;231m\e[48;5;201m\e[1mmore text..." \
261
+ "\e[4;3H\e[38;5;16m\e[48;5;21m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;5;226m\e[48;5;46m\e[24m\e[21m\e[27m \e[38;5;231m\e[48;5;201m\e[1mmore text..." \
261
262
  "\e[6;6H \e[6;6H" \
262
263
  "\e[7;6H \e[7;6H" \
263
264
  "\e[8;6H \e[8;6H" \
264
- "\e[6;6H\e[38;5;16m\e[48;5;21mSome text...\e[38;5;226m\e[48;5;46m \e[38;5;231m\e[48;5;201mmore text..." \
265
- "\e[7;6H\e[38;5;16m\e[48;5;21mSome text...\e[38;5;226m\e[48;5;46m \e[38;5;231m\e[48;5;201mmore text..."
265
+ "\e[6;6H\e[38;5;16m\e[48;5;21m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;5;226m\e[48;5;46m\e[24m\e[21m\e[27m \e[38;5;231m\e[48;5;201m\e[1mmore text..." \
266
+ "\e[7;6H\e[38;5;16m\e[48;5;21m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;5;226m\e[48;5;46m\e[24m\e[21m\e[27m \e[38;5;231m\e[48;5;201m\e[1mmore text..."
266
267
  )
267
268
  end
268
269
  end
@@ -46,10 +46,6 @@ module Vedeu
46
46
  interface.geometry.must_be_instance_of(Geometry)
47
47
  end
48
48
 
49
- it 'has a current attribute' do
50
- interface.current.must_equal("\e[1;1H#initialize")
51
- end
52
-
53
49
  it 'has a cursor attribute' do
54
50
  interface.cursor.must_equal(true)
55
51
  Interface.new({ cursor: false }).cursor.must_equal(false)
@@ -59,121 +55,6 @@ module Vedeu
59
55
  interface.delay.must_equal(0.0)
60
56
  end
61
57
 
62
- describe '#enqueue' do
63
- it 'delegates to the Queue class to enqueue itself' do
64
- interface = Interface.new({
65
- name: 'Interface#enqueue',
66
- geometry: {
67
- width: 8,
68
- height: 2,
69
- },
70
- lines: [ { streams: { text: 'a8f39' } } ]
71
- })
72
- interface.enqueue
73
- interface.dequeue.must_equal(
74
- "\e[1;1H \e[1;1H" \
75
- "\e[2;1H \e[2;1H" \
76
- "\e[1;1Ha8f39"
77
- )
78
- end
79
- end
80
-
81
- describe '#refresh' do
82
- let(:attributes) {
83
- {
84
- name: '#refresh',
85
- lines: [],
86
- colour: {
87
- foreground: '#ff0000',
88
- background: '#000000'
89
- },
90
- geometry: {
91
- width: 3,
92
- height: 3
93
- }
94
- }
95
- }
96
-
97
- it 'returns a blank interface when there is no content to display (initial state)' do
98
- Terminal.stub(:output, nil) do
99
- Interface.new(attributes).refresh.must_equal(
100
- "\e[38;5;196m\e[48;5;16m" \
101
- "\e[1;1H \e[1;1H" \
102
- "\e[2;1H \e[2;1H" \
103
- "\e[3;1H \e[3;1H"
104
- )
105
- end
106
- end
107
-
108
- it 'returns the fresh content when content is queued up to be displayed' do
109
- attributes = {
110
- name: '#refresh',
111
- lines: [
112
- { streams: [{ text: '#refresh' }] },
113
- { streams: [{ text: '#refresh' }] },
114
- { streams: [{ text: '#refresh' }] }
115
- ],
116
- colour: {
117
- foreground: '#ff0000',
118
- background: '#000000'
119
- },
120
- geometry: {
121
- width: 11,
122
- height: 3
123
- }
124
- }
125
- interface = Interface.new(attributes)
126
- diode = interface.enqueue
127
-
128
- Terminal.stub(:output, nil) do
129
- interface.refresh.must_equal(
130
- "\e[38;5;196m\e[48;5;16m" \
131
- "\e[1;1H \e[1;1H" \
132
- "\e[2;1H \e[2;1H" \
133
- "\e[3;1H \e[3;1H" \
134
- "\e[1;1H#refresh" \
135
- "\e[2;1H#refresh" \
136
- "\e[3;1H#refresh"
137
- )
138
- end
139
- end
140
-
141
- it 'returns the previously shown content when there is stale content from last run' do
142
- attributes = {
143
- name: '#refresh',
144
- lines: [],
145
- colour: {
146
- foreground: '#ff0000',
147
- background: '#000000'
148
- },
149
- geometry: {
150
- width: 11,
151
- height: 3
152
- }
153
- }
154
- interface = Interface.new(attributes)
155
- interface.current = "\e[38;5;196m\e[48;5;16m" \
156
- "\e[1;1H \e[1;1H" \
157
- "\e[2;1H \e[2;1H" \
158
- "\e[3;1H \e[3;1H" \
159
- "\e[1;1H#refresh" \
160
- "\e[2;1H#refresh" \
161
- "\e[3;1H#refresh"
162
-
163
- Terminal.stub(:output, nil) do
164
- interface.refresh.must_equal(
165
- "\e[38;5;196m\e[48;5;16m" \
166
- "\e[1;1H \e[1;1H" \
167
- "\e[2;1H \e[2;1H" \
168
- "\e[3;1H \e[3;1H" \
169
- "\e[1;1H#refresh" \
170
- "\e[2;1H#refresh" \
171
- "\e[3;1H#refresh"
172
- )
173
- end
174
- end
175
- end
176
-
177
58
  describe '#to_s' do
178
59
  it 'returns an string' do
179
60
  Interface.new({
@@ -0,0 +1,128 @@
1
+ require 'test_helper'
2
+
3
+ require 'vedeu/output/buffers'
4
+
5
+ module Vedeu
6
+ describe Buffers do
7
+ describe '.create' do
8
+ it 'creates an entry for the interface, and saves :clear' do
9
+ end
10
+ end
11
+
12
+ describe '.enqueue' do
13
+ it 'saves the new sequence for the interface into :next' do
14
+ end
15
+ end
16
+
17
+ describe '.refresh' do
18
+ it 'raises an exception if the interface cannot be found by name' do
19
+ end
20
+
21
+ # describe '#refresh' do
22
+ # let(:attributes) {
23
+ # {
24
+ # name: '#refresh',
25
+ # lines: [],
26
+ # colour: {
27
+ # foreground: '#ff0000',
28
+ # background: '#000000'
29
+ # },
30
+ # geometry: {
31
+ # width: 3,
32
+ # height: 3
33
+ # }
34
+ # }
35
+ # }
36
+
37
+ # it 'returns a blank interface when there is no content to display (initial state)' do
38
+ # Terminal.stub(:output, nil) do
39
+ # Interface.new(attributes).refresh.must_equal(
40
+ # "\e[38;5;196m\e[48;5;16m" \
41
+ # "\e[1;1H \e[1;1H" \
42
+ # "\e[2;1H \e[2;1H" \
43
+ # "\e[3;1H \e[3;1H"
44
+ # )
45
+ # end
46
+ # end
47
+
48
+ # it 'returns the fresh content when content is queued up to be displayed' do
49
+ # attributes = {
50
+ # name: '#refresh',
51
+ # lines: [
52
+ # { streams: [{ text: '#refresh' }] },
53
+ # { streams: [{ text: '#refresh' }] },
54
+ # { streams: [{ text: '#refresh' }] }
55
+ # ],
56
+ # colour: {
57
+ # foreground: '#ff0000',
58
+ # background: '#000000'
59
+ # },
60
+ # geometry: {
61
+ # width: 11,
62
+ # height: 3
63
+ # }
64
+ # }
65
+ # interface = Interface.new(attributes)
66
+ # diode = interface.enqueue
67
+
68
+ # Terminal.stub(:output, nil) do
69
+ # interface.refresh.must_equal(
70
+ # "\e[38;5;196m\e[48;5;16m" \
71
+ # "\e[1;1H \e[1;1H" \
72
+ # "\e[2;1H \e[2;1H" \
73
+ # "\e[3;1H \e[3;1H" \
74
+ # "\e[1;1H#refresh" \
75
+ # "\e[2;1H#refresh" \
76
+ # "\e[3;1H#refresh"
77
+ # )
78
+ # end
79
+ # end
80
+
81
+ # it 'returns the previously shown content when there is stale content from last run' do
82
+ # attributes = {
83
+ # name: '#refresh',
84
+ # lines: [],
85
+ # colour: {
86
+ # foreground: '#ff0000',
87
+ # background: '#000000'
88
+ # },
89
+ # geometry: {
90
+ # width: 11,
91
+ # height: 3
92
+ # }
93
+ # }
94
+ # interface = Interface.new(attributes)
95
+ # interface.current = "\e[38;5;196m\e[48;5;16m" \
96
+ # "\e[1;1H \e[1;1H" \
97
+ # "\e[2;1H \e[2;1H" \
98
+ # "\e[3;1H \e[3;1H" \
99
+ # "\e[1;1H#refresh" \
100
+ # "\e[2;1H#refresh" \
101
+ # "\e[3;1H#refresh"
102
+
103
+ # Terminal.stub(:output, nil) do
104
+ # interface.refresh.must_equal(
105
+ # "\e[38;5;196m\e[48;5;16m" \
106
+ # "\e[1;1H \e[1;1H" \
107
+ # "\e[2;1H \e[2;1H" \
108
+ # "\e[3;1H \e[3;1H" \
109
+ # "\e[1;1H#refresh" \
110
+ # "\e[2;1H#refresh" \
111
+ # "\e[3;1H#refresh"
112
+ # )
113
+ # end
114
+ # end
115
+ # end
116
+ end
117
+
118
+ describe '.refresh_all' do
119
+ it 'requests each stored interface to be refreshed' do
120
+ end
121
+ end
122
+
123
+ describe '.reset' do
124
+ it 'destroys all saved buffers' do
125
+ end
126
+ end
127
+ end
128
+ end
@@ -48,7 +48,9 @@ module Vedeu
48
48
 
49
49
  it 'switches the terminal mode when escape is pressed' do
50
50
  Terminal.stub :input, "\e" do
51
- proc { Input.capture }.must_raise(ModeSwitch)
51
+ Vedeu.stub :log, nil do
52
+ proc { Input.capture }.must_raise(ModeSwitch)
53
+ end
52
54
  end
53
55
  end
54
56
  end
data/vedeu.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'vedeu'
7
- spec.version = '0.1.8'
7
+ spec.version = '0.1.9'
8
8
  spec.authors = ['Gavin Laking']
9
9
  spec.email = ['gavinlaking@gmail.com']
10
10
  spec.summary = %q{A terminal case of wonderland.}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vedeu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Laking
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-10 00:00:00.000000000 Z
11
+ date: 2014-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -183,7 +183,6 @@ files:
183
183
  - Rakefile
184
184
  - bin/log
185
185
  - bin/vedeu
186
- - deps.md
187
186
  - lib/vedeu.rb
188
187
  - lib/vedeu/api/base.rb
189
188
  - lib/vedeu/api/events.rb
@@ -211,6 +210,7 @@ files:
211
210
  - lib/vedeu/models/line.rb
212
211
  - lib/vedeu/models/stream.rb
213
212
  - lib/vedeu/models/style.rb
213
+ - lib/vedeu/output/buffers.rb
214
214
  - lib/vedeu/output/clear.rb
215
215
  - lib/vedeu/output/render.rb
216
216
  - lib/vedeu/output/view.rb
@@ -245,6 +245,7 @@ files:
245
245
  - test/lib/vedeu/models/line_test.rb
246
246
  - test/lib/vedeu/models/stream_test.rb
247
247
  - test/lib/vedeu/models/style_test.rb
248
+ - test/lib/vedeu/output/buffers_test.rb
248
249
  - test/lib/vedeu/output/clear_test.rb
249
250
  - test/lib/vedeu/output/render_test.rb
250
251
  - test/lib/vedeu/output/view_test.rb
@@ -257,14 +258,6 @@ files:
257
258
  - test/stats.sh
258
259
  - test/support/bench.rb
259
260
  - test/support/colours.rb
260
- - test/support/dummy_interface.rb
261
- - test/support/erb/colour.erb
262
- - test/support/erb/colour_style.erb
263
- - test/support/erb/line.erb
264
- - test/support/erb/line_2x.erb
265
- - test/support/erb/line_foreground.erb
266
- - test/support/erb/line_foreground_2x.erb
267
- - test/support/erb/style.erb
268
261
  - test/support/json/int1_lin1_str1.json
269
262
  - test/support/json/int1_lin1_str3.json
270
263
  - test/support/json/int1_lin2_str1.json
@@ -275,7 +268,6 @@ files:
275
268
  - test/support/json/int2_lin2_str1.json
276
269
  - test/support/json/int2_lin2_str3.json
277
270
  - test/support/json/int2_lin2_str3_styles.json
278
- - test/support/template.erb
279
271
  - test/test_helper.rb
280
272
  - vedeu.gemspec
281
273
  homepage: https://github.com/gavinlaking/vedeu
@@ -328,6 +320,7 @@ test_files:
328
320
  - test/lib/vedeu/models/line_test.rb
329
321
  - test/lib/vedeu/models/stream_test.rb
330
322
  - test/lib/vedeu/models/style_test.rb
323
+ - test/lib/vedeu/output/buffers_test.rb
331
324
  - test/lib/vedeu/output/clear_test.rb
332
325
  - test/lib/vedeu/output/render_test.rb
333
326
  - test/lib/vedeu/output/view_test.rb
@@ -340,14 +333,6 @@ test_files:
340
333
  - test/stats.sh
341
334
  - test/support/bench.rb
342
335
  - test/support/colours.rb
343
- - test/support/dummy_interface.rb
344
- - test/support/erb/colour.erb
345
- - test/support/erb/colour_style.erb
346
- - test/support/erb/line.erb
347
- - test/support/erb/line_2x.erb
348
- - test/support/erb/line_foreground.erb
349
- - test/support/erb/line_foreground_2x.erb
350
- - test/support/erb/style.erb
351
336
  - test/support/json/int1_lin1_str1.json
352
337
  - test/support/json/int1_lin1_str3.json
353
338
  - test/support/json/int1_lin2_str1.json
@@ -358,5 +343,4 @@ test_files:
358
343
  - test/support/json/int2_lin2_str1.json
359
344
  - test/support/json/int2_lin2_str3.json
360
345
  - test/support/json/int2_lin2_str3_styles.json
361
- - test/support/template.erb
362
346
  - test/test_helper.rb
data/deps.md DELETED
@@ -1,191 +0,0 @@
1
- ----------------------------------------------------------------------
2
- By class
3
- ----------------------------------------------------------------------
4
-
5
- StandardError
6
- API::InterfaceNotSpecified
7
- EntityNotFound
8
- InvalidHeight
9
- InvalidWidth
10
- ModeSwitch
11
- OutOfRange
12
- XOutOfBounds
13
- YOutOfBounds
14
-
15
- API::Base
16
- API::Stream
17
-
18
- API::Grid
19
- Terminal
20
-
21
- API::Interface
22
- API::Grid
23
- Geometry
24
- Interface
25
- API::Store
26
- Terminal
27
-
28
- API::Line
29
- API::Base
30
- API::Stream
31
-
32
- API::Stream
33
- API::Base
34
-
35
- API::View
36
- API::Line
37
- API::Store
38
-
39
- Application
40
- Input
41
- Terminal
42
-
43
- Clear
44
-
45
- Collection
46
-
47
- Colour
48
- Background
49
- ColourTranslator
50
- Foreground
51
- ColourTranslator
52
-
53
- Composition
54
- InterfaceCollection
55
-
56
- Configuration
57
-
58
- DSLParser
59
-
60
- Geometry
61
- Esc
62
- Terminal
63
-
64
- Esc
65
-
66
- API::Events
67
-
68
- Input
69
- API::Events
70
- Terminal
71
-
72
- Instrumentation
73
- Log
74
- Trace
75
-
76
- Interface
77
- Clear
78
- Colour
79
- Geometry
80
- LineCollection
81
- Render
82
- Style
83
- Terminal
84
-
85
- InterfaceCollection
86
- API::Store
87
-
88
- Launcher
89
- Application
90
- Configuration
91
-
92
- Line
93
- Colour
94
- StreamCollection
95
- Style
96
-
97
- LineCollection
98
- Collection
99
- Line
100
-
101
- Menu
102
- API::Events
103
-
104
- API::Store
105
- Interface
106
-
107
- Render
108
- Line
109
- Stream
110
-
111
- Stream
112
- Colour
113
- Style
114
-
115
- StreamCollection
116
- Collection
117
- Stream
118
-
119
- Style
120
- Esc
121
-
122
- Terminal
123
- Esc
124
- Application
125
-
126
- TextAdaptor
127
-
128
- View
129
- Composition
130
- DSLParser
131
-
132
- ColourTranslator
133
-
134
- Wordwrap
135
-
136
-
137
- ----------------------------------------------------------------------
138
- Grouped
139
- ----------------------------------------------------------------------
140
-
141
- API::Interface
142
- Interface
143
- Geometry
144
- API::Store
145
-
146
- Launcher
147
- Application
148
- Events
149
- Input
150
- Events
151
- Terminal
152
- Esc
153
- Configuration
154
-
155
- View
156
- Composition
157
- InterfaceCollection
158
- API::Store
159
- Interface
160
- Clear
161
- Colour
162
- Background
163
- Foreground
164
- Geometry
165
- Esc
166
- Terminal
167
- Esc
168
- LineCollection
169
- Collection
170
- Line
171
- Colour
172
- Background
173
- Foreground
174
- StreamCollection
175
- Collection
176
- Stream
177
- Colour
178
- Background
179
- Foreground
180
- Style
181
- Esc
182
- Style
183
- Esc
184
- Render
185
- Line
186
- Stream
187
- Style
188
- Esc
189
- Terminal
190
- Esc
191
- DSLParser
@@ -1,5 +0,0 @@
1
- module Vedeu
2
- class DummyInterface
3
- attr_accessor :name
4
- end
5
- end
@@ -1,3 +0,0 @@
1
- <%= foreground('#5a0000') -%>Dark red text on default background.
2
- <%= background('#ff00ff') -%>Default text on magenta background.
3
- <%= foreground('#ff0000') -%><%= background('#00005a') -%>Red text on dark blue background.
@@ -1 +0,0 @@
1
- <%= foreground('#0000ff') -%><%= style('underline') -%><%= background('#00005a') -%>Blue underline text on dark blue background.
@@ -1,4 +0,0 @@
1
- <%- line do -%>
2
- This is line one.
3
- This is line two.
4
- <%- end -%>
@@ -1,10 +0,0 @@
1
- <%- lines do -%>
2
- <%- line do -%>
3
- This is line one.
4
- This is line two.
5
- <%- end -%>
6
- <%- line do -%>
7
- This is line three.
8
- This is line four.
9
- <%- end -%>
10
- <%- end -%>
@@ -1,4 +0,0 @@
1
- <%- line do -%>
2
- <%= foreground('#ffff00') { "This is line one." } -%>
3
- This is line two.
4
- <%- end -%>
@@ -1,5 +0,0 @@
1
- <%- line do -%>
2
- <%= foreground('#ffff00') { "This is line one." } -%>
3
- <%= foreground('#ff0000') { "This is line two." } -%>
4
- This is line three.
5
- <%- end -%>
@@ -1,3 +0,0 @@
1
- <%= style('') -%>Empty style leads to nothing.
2
- <%= style('underline') -%>Underlined text.
3
- <%= style('unknown') -%>Unknown style leads to nothing.
@@ -1,8 +0,0 @@
1
- This is the test template.
2
-
3
- <%= foreground('#5f00af') %><%= object.value %>
4
- <%= background('#ffff00') %><%= object.value %>
5
- <%= foreground('#ff8700') %><%= background('#ffff00') %><%= object.value %>
6
- <%= style('underline') %><%= object.value %>
7
-
8
- Some more content...