vedeu 0.8.13 → 0.8.14
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 +4 -4
- data/.rubocop.yml +3 -0
- data/lib/vedeu/buffers/empty.rb +1 -2
- data/lib/vedeu/buffers/view.rb +13 -26
- data/lib/vedeu/cells/border.rb +0 -1
- data/lib/vedeu/cells/empty.rb +1 -4
- data/lib/vedeu/coercers/editor_lines.rb +1 -1
- data/lib/vedeu/coercers/page.rb +2 -2
- data/lib/vedeu/coercers/position.rb +2 -7
- data/lib/vedeu/coercers/row.rb +1 -1
- data/lib/vedeu/coercers/style.rb +1 -1
- data/lib/vedeu/common.rb +8 -0
- data/lib/vedeu/configuration/api.rb +2 -2
- data/lib/vedeu/configuration/configuration.rb +58 -3
- data/lib/vedeu/editor/delete.rb +1 -1
- data/lib/vedeu/interfaces/dsl.rb +1 -1
- data/lib/vedeu/logging/debug.rb +1 -1
- data/lib/vedeu/logging/log.rb +5 -54
- data/lib/vedeu/presentation/colour.rb +9 -0
- data/lib/vedeu/presentation/position.rb +10 -0
- data/lib/vedeu/presentation/presentation.rb +0 -28
- data/lib/vedeu/presentation/styles.rb +11 -0
- data/lib/vedeu/renderers/all.rb +3 -2
- data/lib/vedeu/renderers/{file.rb → support/file.rb} +0 -0
- data/lib/vedeu/renderers/{options.rb → support/options.rb} +0 -0
- data/lib/vedeu/repositories/collection.rb +1 -0
- data/lib/vedeu/repositories/repository.rb +1 -1
- data/lib/vedeu/repositories/store.rb +1 -1
- data/lib/vedeu/version.rb +1 -1
- data/lib/vedeu/views/chars.rb +39 -33
- data/lib/vedeu/views/lines.rb +31 -25
- data/lib/vedeu/views/streams.rb +35 -29
- data/test/lib/vedeu/cells/empty_test.rb +6 -4
- data/test/lib/vedeu/common_test.rb +16 -0
- data/test/lib/vedeu/configuration/api_test.rb +2 -11
- data/test/lib/vedeu/configuration/configuration_test.rb +56 -28
- data/test/lib/vedeu/renderers/{file_test.rb → support/file_test.rb} +0 -0
- data/test/lib/vedeu/renderers/{options_test.rb → support/options_test.rb} +0 -0
- data/test/lib/vedeu/repositories/repository_test.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34e3c347f479d6c178f4aacae2dd5cee4018d555
|
4
|
+
data.tar.gz: 92cb71dfedee65fb74c2808c843bea8222802808
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 338a4fd459b7f6d89e56e3247921aa215069b5bf30b947084fbd55c5aec2a42d44cecaf6d8a4a5ca7e38fd0084b5908239bffe9a760c444476ff336e1c51ef16
|
7
|
+
data.tar.gz: a84a360d6c8f4153ca61aa89ea819178d866d9e9d4b306b23da5a9da57bba8146840155b24626a24108bd1a3a6addcdde33a93c0b8582379933a1462ab7f83a2
|
data/.rubocop.yml
CHANGED
data/lib/vedeu/buffers/empty.rb
CHANGED
@@ -57,8 +57,7 @@ module Vedeu
|
|
57
57
|
def empty
|
58
58
|
Array.new(height) do |h|
|
59
59
|
Array.new(width) do |w|
|
60
|
-
|
61
|
-
Vedeu::Cells::Empty.new(name: name, position: position)
|
60
|
+
Vedeu::Cells::Empty.new(name: name, position: [(y + h), (x + w)])
|
62
61
|
end
|
63
62
|
end
|
64
63
|
end
|
data/lib/vedeu/buffers/view.rb
CHANGED
@@ -48,7 +48,9 @@ module Vedeu
|
|
48
48
|
# Vedeu::Cells::Char]
|
49
49
|
# @return [Vedeu::Buffers::View]
|
50
50
|
def update(value_or_values)
|
51
|
-
Array(value_or_values).flatten.each
|
51
|
+
Array(value_or_values).flatten.each do |value|
|
52
|
+
write(value) if positionable?(value)
|
53
|
+
end
|
52
54
|
|
53
55
|
self
|
54
56
|
end
|
@@ -61,6 +63,12 @@ module Vedeu
|
|
61
63
|
|
62
64
|
private
|
63
65
|
|
66
|
+
# @param value [void]
|
67
|
+
# @return [Fixnum]
|
68
|
+
def column(value)
|
69
|
+
Vedeu::Point.coerce(value: value.position.x, min: bx, max: bxn).value
|
70
|
+
end
|
71
|
+
|
64
72
|
# @return [Array<Vedeu::Cells::Empty>]
|
65
73
|
def current
|
66
74
|
@current ||= Vedeu::Buffers::Empty.new(height: bordered_height,
|
@@ -82,31 +90,10 @@ module Vedeu
|
|
82
90
|
@_geometry ||= Vedeu.geometries.by_name(name)
|
83
91
|
end
|
84
92
|
|
85
|
-
# Returns a boolean indicating the value has a position
|
86
|
-
# attribute and is within the terminal boundary.
|
87
|
-
#
|
88
93
|
# @param value [void]
|
89
|
-
# @return [
|
90
|
-
def
|
91
|
-
|
92
|
-
valid_y?(value.position.y) &&
|
93
|
-
valid_x?(value.position.x)
|
94
|
-
end
|
95
|
-
|
96
|
-
# Returns a boolean indicating whether the x position of the
|
97
|
-
# value object is valid for this geometry.
|
98
|
-
#
|
99
|
-
# @return [Boolean]
|
100
|
-
def valid_x?(x)
|
101
|
-
Vedeu::Point.valid?(value: x, min: bx, max: bxn)
|
102
|
-
end
|
103
|
-
|
104
|
-
# Returns a boolean indicating whether the y position of the
|
105
|
-
# value object is valid for this geometry.
|
106
|
-
#
|
107
|
-
# @return [Boolean]
|
108
|
-
def valid_y?(y)
|
109
|
-
Vedeu::Point.valid?(value: y, min: by, max: byn)
|
94
|
+
# @return [Fixnum]
|
95
|
+
def row(value)
|
96
|
+
Vedeu::Point.coerce(value: value.position.y, min: by, max: byn).value
|
110
97
|
end
|
111
98
|
|
112
99
|
# Write the value into the respective cell as defined by the
|
@@ -115,7 +102,7 @@ module Vedeu
|
|
115
102
|
# @param value [void]
|
116
103
|
# @return [NilClass|void]
|
117
104
|
def write(value)
|
118
|
-
current[value
|
105
|
+
current[row(value)][column(value)] = value
|
119
106
|
end
|
120
107
|
|
121
108
|
end # View
|
data/lib/vedeu/cells/border.rb
CHANGED
data/lib/vedeu/cells/empty.rb
CHANGED
@@ -38,10 +38,7 @@ module Vedeu
|
|
38
38
|
# @param other [void]
|
39
39
|
# @return [Boolean]
|
40
40
|
def eql?(other)
|
41
|
-
self.class.equal?(other.class) &&
|
42
|
-
position == other.position &&
|
43
|
-
value == other.value &&
|
44
|
-
colour == other.colour
|
41
|
+
self.class.equal?(other.class) && position == other.position
|
45
42
|
end
|
46
43
|
alias == eql?
|
47
44
|
|
data/lib/vedeu/coercers/page.rb
CHANGED
@@ -20,10 +20,10 @@ module Vedeu
|
|
20
20
|
elsif value.is_a?(Vedeu::Models::Row)
|
21
21
|
klass.new([value])
|
22
22
|
|
23
|
-
elsif
|
23
|
+
elsif array?(value) && value.empty?
|
24
24
|
klass.new([Vedeu::Models::Row.coerce(value)])
|
25
25
|
|
26
|
-
elsif
|
26
|
+
elsif array?(value) || value.is_a?(Vedeu::Buffers::View)
|
27
27
|
values = value.map { |v| Vedeu::Models::Row.coerce(v) }
|
28
28
|
|
29
29
|
klass.new(values)
|
@@ -20,7 +20,7 @@ module Vedeu
|
|
20
20
|
elsif tuple?
|
21
21
|
klass.new(*value)
|
22
22
|
|
23
|
-
elsif hash?
|
23
|
+
elsif hash?(value)
|
24
24
|
klass.new(value.fetch(:y, 1), value.fetch(:x, 1))
|
25
25
|
|
26
26
|
elsif numeric?(value)
|
@@ -34,11 +34,6 @@ module Vedeu
|
|
34
34
|
|
35
35
|
private
|
36
36
|
|
37
|
-
# @return [Boolean]
|
38
|
-
def hash?
|
39
|
-
value.is_a?(Hash)
|
40
|
-
end
|
41
|
-
|
42
37
|
# @return [Class]
|
43
38
|
def klass
|
44
39
|
Vedeu::Geometries::Position
|
@@ -47,7 +42,7 @@ module Vedeu
|
|
47
42
|
# @macro raise_fatal
|
48
43
|
# @return [Boolean]
|
49
44
|
def tuple?
|
50
|
-
return false unless
|
45
|
+
return false unless array?(value)
|
51
46
|
return true if value.size == 2
|
52
47
|
|
53
48
|
raise Vedeu::Error::Fatal,
|
data/lib/vedeu/coercers/row.rb
CHANGED
data/lib/vedeu/coercers/style.rb
CHANGED
data/lib/vedeu/common.rb
CHANGED
@@ -17,6 +17,14 @@ module Vedeu
|
|
17
17
|
!present?(variable)
|
18
18
|
end
|
19
19
|
|
20
|
+
# Returns a boolean indicating whether the value is an Array.
|
21
|
+
#
|
22
|
+
# @param value [Array|void]
|
23
|
+
# @return [Boolean]
|
24
|
+
def array?(value)
|
25
|
+
value.is_a?(Array)
|
26
|
+
end
|
27
|
+
|
20
28
|
# Returns a boolean indicating the value was a boolean.
|
21
29
|
#
|
22
30
|
# @param value [void]
|
@@ -243,7 +243,7 @@ module Vedeu
|
|
243
243
|
|
244
244
|
# Log specific message types except those given. A complete list
|
245
245
|
# of message types can be found at
|
246
|
-
# {Vedeu::
|
246
|
+
# {Vedeu::Configuration.log_types}.
|
247
247
|
#
|
248
248
|
# Vedeu.configure do
|
249
249
|
# log_except :debug, :event
|
@@ -262,7 +262,7 @@ module Vedeu
|
|
262
262
|
end
|
263
263
|
|
264
264
|
# Only log specific message types. A complete list of message
|
265
|
-
# types can be found at {Vedeu::
|
265
|
+
# types can be found at {Vedeu::Configuration.log_types}.
|
266
266
|
#
|
267
267
|
# Vedeu.configure do
|
268
268
|
# log_only :debug, :event
|
@@ -180,12 +180,54 @@ module Vedeu
|
|
180
180
|
|
181
181
|
# @return [Array<Symbol>]
|
182
182
|
def log_except
|
183
|
-
instance.options[:log_except]
|
183
|
+
instance.options[:log_except]
|
184
184
|
end
|
185
185
|
|
186
186
|
# @return [Array<Symbol>]
|
187
187
|
def log_only
|
188
|
-
instance.options[:log_only]
|
188
|
+
instance.options[:log_only]
|
189
|
+
end
|
190
|
+
|
191
|
+
# The defined message types for Vedeu with their respective
|
192
|
+
# colours. When used, produces a log entry of the format:
|
193
|
+
#
|
194
|
+
# [type] message
|
195
|
+
#
|
196
|
+
# The 'type' will be shown as the first colour defined in the
|
197
|
+
# value array, whilst the 'message' will be shown using the
|
198
|
+
# last colour.
|
199
|
+
#
|
200
|
+
# @return [Hash<Symbol => Array<Symbol>>]
|
201
|
+
def log_types
|
202
|
+
{
|
203
|
+
blue: [:light_blue, :blue],
|
204
|
+
buffer: [:light_green, :green],
|
205
|
+
compress: [:white, :light_grey],
|
206
|
+
config: [:light_blue, :blue],
|
207
|
+
create: [:light_cyan, :cyan],
|
208
|
+
cursor: [:light_green, :green],
|
209
|
+
cyan: [:light_cyan, :cyan],
|
210
|
+
debug: [:white, :light_grey],
|
211
|
+
drb: [:light_blue, :blue],
|
212
|
+
dsl: [:light_blue, :blue],
|
213
|
+
editor: [:light_blue, :blue],
|
214
|
+
error: [:light_red, :red],
|
215
|
+
event: [:light_magenta, :magenta],
|
216
|
+
green: [:light_green, :green],
|
217
|
+
info: [:white, :light_grey],
|
218
|
+
input: [:light_yellow, :yellow],
|
219
|
+
magenta: [:light_magenta, :magenta],
|
220
|
+
output: [:light_yellow, :yellow],
|
221
|
+
red: [:light_red, :red],
|
222
|
+
render: [:light_green, :green],
|
223
|
+
reset: [:light_cyan, :cyan],
|
224
|
+
store: [:light_cyan, :cyan],
|
225
|
+
test: [:white, :light_grey],
|
226
|
+
timer: [:light_blue, :blue],
|
227
|
+
update: [:light_cyan, :cyan],
|
228
|
+
white: [:white, :light_grey],
|
229
|
+
yellow: [:light_yellow, :yellow],
|
230
|
+
}
|
189
231
|
end
|
190
232
|
|
191
233
|
# Returns true if the given type was included in the :log_only
|
@@ -195,7 +237,20 @@ module Vedeu
|
|
195
237
|
# @param type [Symbol]
|
196
238
|
# @return [Boolean]
|
197
239
|
def loggable?(type)
|
198
|
-
|
240
|
+
return false unless log_types.keys.include?(type)
|
241
|
+
return true if log_only.empty? && log_except.empty?
|
242
|
+
|
243
|
+
types = if log_except.any?
|
244
|
+
log_types.keys - log_except
|
245
|
+
else
|
246
|
+
log_types.keys
|
247
|
+
end
|
248
|
+
|
249
|
+
if log_only.any?
|
250
|
+
log_only.include?(type)
|
251
|
+
else
|
252
|
+
types.include?(type) ? true : false
|
253
|
+
end
|
199
254
|
end
|
200
255
|
|
201
256
|
# Returns whether mouse support was enabled or disabled.
|
data/lib/vedeu/editor/delete.rb
CHANGED
data/lib/vedeu/interfaces/dsl.rb
CHANGED
data/lib/vedeu/logging/debug.rb
CHANGED
@@ -65,7 +65,7 @@ module Vedeu
|
|
65
65
|
# - Creates a HTML visualization of the Ruby stack
|
66
66
|
::RubyProf::CallStackPrinter.new(result).print(file)
|
67
67
|
|
68
|
-
# Used with
|
68
|
+
# Used with KCachegrind to analyse performance.
|
69
69
|
# ::RubyProf::CallTreePrinter.new(result).print(file)
|
70
70
|
|
71
71
|
# Creates a flat report in text format
|
data/lib/vedeu/logging/log.rb
CHANGED
@@ -27,7 +27,8 @@ module Vedeu
|
|
27
27
|
# to write to the log file regardless of the Configuration
|
28
28
|
# setting.
|
29
29
|
# @param type [Symbol] Colour code messages in the log file
|
30
|
-
# depending on their source. See
|
30
|
+
# depending on their source. See
|
31
|
+
# {Vedeu::Configuration.log_types}
|
31
32
|
#
|
32
33
|
# @return [String]
|
33
34
|
def log(message:, force: false, type: :info)
|
@@ -40,7 +41,7 @@ module Vedeu
|
|
40
41
|
|
41
42
|
# {include:file:docs/dsl/by_method/log_stdout.md}
|
42
43
|
# @macro vedeu_logging_log_param_message
|
43
|
-
# @param type [Symbol] See {Vedeu::
|
44
|
+
# @param type [Symbol] See {Vedeu::Configuration.log_types}
|
44
45
|
# for valid values.
|
45
46
|
# @return [String]
|
46
47
|
def log_stdout(message:, type: :info)
|
@@ -51,7 +52,7 @@ module Vedeu
|
|
51
52
|
|
52
53
|
# {include:file:docs/dsl/by_method/log_stderr.md}
|
53
54
|
# @macro vedeu_logging_log_param_message
|
54
|
-
# @param type [Symbol] See {Vedeu::Logging::Log.
|
55
|
+
# @param type [Symbol] See {Vedeu::Logging::Log.types}
|
55
56
|
# for valid values.
|
56
57
|
# @return [String]
|
57
58
|
def log_stderr(message:, type: :error)
|
@@ -102,7 +103,7 @@ module Vedeu
|
|
102
103
|
# @macro vedeu_logging_log_param_message
|
103
104
|
# @return [String]
|
104
105
|
def log_entry(type, message)
|
105
|
-
colours =
|
106
|
+
colours = Vedeu.config.log_types.fetch(type, [:default, :default])
|
106
107
|
|
107
108
|
[
|
108
109
|
Vedeu.esc.colour(colours[0]) { "[#{type}]".ljust(11) },
|
@@ -110,56 +111,6 @@ module Vedeu
|
|
110
111
|
].join
|
111
112
|
end
|
112
113
|
|
113
|
-
# The defined message types for Vedeu with their respective
|
114
|
-
# colours. When used, produces a log entry of the format:
|
115
|
-
#
|
116
|
-
# [type] message
|
117
|
-
#
|
118
|
-
# The 'type' will be shown as the first colour defined in the
|
119
|
-
# value array, whilst the 'message' will be shown using the
|
120
|
-
# last colour.
|
121
|
-
#
|
122
|
-
# @return [Hash<Symbol => Array<Symbol>>]
|
123
|
-
def message_types
|
124
|
-
{
|
125
|
-
create: [:light_cyan, :cyan],
|
126
|
-
store: [:light_cyan, :cyan],
|
127
|
-
update: [:light_cyan, :cyan],
|
128
|
-
reset: [:light_cyan, :cyan],
|
129
|
-
|
130
|
-
event: [:light_magenta, :magenta],
|
131
|
-
|
132
|
-
timer: [:light_blue, :blue],
|
133
|
-
|
134
|
-
info: [:white, :light_grey],
|
135
|
-
test: [:white, :light_grey],
|
136
|
-
debug: [:white, :light_grey],
|
137
|
-
compress: [:white, :light_grey],
|
138
|
-
|
139
|
-
input: [:light_yellow, :yellow],
|
140
|
-
output: [:light_yellow, :yellow],
|
141
|
-
|
142
|
-
cursor: [:light_green, :green],
|
143
|
-
buffer: [:light_green, :green],
|
144
|
-
render: [:light_green, :green],
|
145
|
-
|
146
|
-
error: [:light_red, :red],
|
147
|
-
|
148
|
-
config: [:light_blue, :blue],
|
149
|
-
dsl: [:light_blue, :blue],
|
150
|
-
editor: [:light_blue, :blue],
|
151
|
-
drb: [:light_blue, :blue],
|
152
|
-
|
153
|
-
blue: [:light_blue, :blue],
|
154
|
-
cyan: [:light_cyan, :cyan],
|
155
|
-
green: [:light_green, :green],
|
156
|
-
magenta: [:light_magenta, :magenta],
|
157
|
-
red: [:light_red, :red],
|
158
|
-
white: [:white, :light_grey],
|
159
|
-
yellow: [:light_yellow, :yellow],
|
160
|
-
}
|
161
|
-
end
|
162
|
-
|
163
114
|
end # Eigenclass
|
164
115
|
|
165
116
|
end # Log
|
@@ -140,6 +140,15 @@ module Vedeu
|
|
140
140
|
present?(parent) && parent.respond_to?(:colour?)
|
141
141
|
end
|
142
142
|
|
143
|
+
# Renders the colour attributes of the receiver and yields (to
|
144
|
+
# then render the styles).
|
145
|
+
#
|
146
|
+
# @param block [Proc]
|
147
|
+
# @return [String]
|
148
|
+
def render_colour(&block)
|
149
|
+
"#{colour}#{yield}"
|
150
|
+
end
|
151
|
+
|
143
152
|
end # Colour
|
144
153
|
|
145
154
|
end # Presentation
|
@@ -50,6 +50,16 @@ module Vedeu
|
|
50
50
|
position.y if position?
|
51
51
|
end
|
52
52
|
|
53
|
+
private
|
54
|
+
|
55
|
+
# @param block [Proc]
|
56
|
+
# @return [String]
|
57
|
+
def render_position(&block)
|
58
|
+
return position.to_s { yield } if position?
|
59
|
+
|
60
|
+
yield
|
61
|
+
end
|
62
|
+
|
53
63
|
end # Position
|
54
64
|
|
55
65
|
end # Presentation
|
@@ -18,34 +18,6 @@ module Vedeu
|
|
18
18
|
end
|
19
19
|
alias to_str to_s
|
20
20
|
|
21
|
-
private
|
22
|
-
|
23
|
-
# Renders the colour attributes of the receiver and yields (to
|
24
|
-
# then render the styles).
|
25
|
-
#
|
26
|
-
# @param block [Proc]
|
27
|
-
# @return [String]
|
28
|
-
def render_colour(&block)
|
29
|
-
"#{colour}#{yield}"
|
30
|
-
end
|
31
|
-
|
32
|
-
# @param block [Proc]
|
33
|
-
# @return [String]
|
34
|
-
def render_position(&block)
|
35
|
-
return position.to_s { yield } if position?
|
36
|
-
|
37
|
-
yield
|
38
|
-
end
|
39
|
-
|
40
|
-
# Renders the style attributes of the receiver and yields (to
|
41
|
-
# then render the next model, or finally, the content).
|
42
|
-
#
|
43
|
-
# @param block [Proc]
|
44
|
-
# @return [String]
|
45
|
-
def render_style(&block)
|
46
|
-
"#{style}#{yield}"
|
47
|
-
end
|
48
|
-
|
49
21
|
end # Presentation
|
50
22
|
|
51
23
|
end # Vedeu
|
@@ -52,6 +52,17 @@ module Vedeu
|
|
52
52
|
@_style = @style = Vedeu::Presentation::Style.coerce(value)
|
53
53
|
end
|
54
54
|
|
55
|
+
private
|
56
|
+
|
57
|
+
# Renders the style attributes of the receiver and yields (to
|
58
|
+
# then render the next model, or finally, the content).
|
59
|
+
#
|
60
|
+
# @param block [Proc]
|
61
|
+
# @return [String]
|
62
|
+
def render_style(&block)
|
63
|
+
"#{style}#{yield}"
|
64
|
+
end
|
65
|
+
|
55
66
|
end # Style
|
56
67
|
|
57
68
|
end # Presentation
|
data/lib/vedeu/renderers/all.rb
CHANGED
@@ -132,8 +132,9 @@ module Vedeu
|
|
132
132
|
|
133
133
|
end # Vedeu
|
134
134
|
|
135
|
-
require 'vedeu/renderers/options'
|
136
|
-
require 'vedeu/renderers/file'
|
135
|
+
require 'vedeu/renderers/support/options'
|
136
|
+
require 'vedeu/renderers/support/file'
|
137
|
+
|
137
138
|
require 'vedeu/renderers/escape'
|
138
139
|
require 'vedeu/renderers/html'
|
139
140
|
require 'vedeu/renderers/json'
|
File without changes
|
File without changes
|
data/lib/vedeu/version.rb
CHANGED
data/lib/vedeu/views/chars.rb
CHANGED
@@ -10,47 +10,53 @@ module Vedeu
|
|
10
10
|
#
|
11
11
|
class Chars < Vedeu::Repositories::Collection
|
12
12
|
|
13
|
-
|
14
|
-
# @param parent [Vedeu::Views::Stream]
|
15
|
-
# @param name [NilClass|Symbol|String]
|
16
|
-
# @macro raise_invalid_syntax
|
17
|
-
# @return [Vedeu::Views::Chars]
|
18
|
-
def self.coerce(collection = [], parent = nil, name = nil)
|
19
|
-
if collection.is_a?(Vedeu::Views::Chars)
|
20
|
-
collection
|
21
|
-
|
22
|
-
elsif collection.is_a?(Array)
|
23
|
-
return new(collection, parent, name) if collection.empty?
|
24
|
-
|
25
|
-
coerced_collection = []
|
26
|
-
collection.each do |element|
|
27
|
-
coerced_collection << element if element.is_a?(Vedeu::Cells::Char)
|
28
|
-
end
|
13
|
+
class << self
|
29
14
|
|
30
|
-
|
15
|
+
include Vedeu::Common
|
31
16
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
17
|
+
# @param collection [void]
|
18
|
+
# @param parent [Vedeu::Views::Stream]
|
19
|
+
# @param name [NilClass|Symbol|String]
|
20
|
+
# @macro raise_invalid_syntax
|
21
|
+
# @return [Vedeu::Views::Chars]
|
22
|
+
def coerce(collection = [], parent = nil, name = nil)
|
23
|
+
if collection.is_a?(Vedeu::Views::Chars)
|
24
|
+
collection
|
36
25
|
|
37
|
-
|
38
|
-
|
26
|
+
elsif array?(collection)
|
27
|
+
return new(collection, parent, name) if collection.empty?
|
39
28
|
|
40
|
-
|
41
|
-
|
42
|
-
|
29
|
+
coerced_collection = []
|
30
|
+
collection.each do |element|
|
31
|
+
coerced_collection << element if element.is_a?(Vedeu::Cells::Char)
|
32
|
+
end
|
43
33
|
|
44
|
-
new(
|
45
|
-
|
34
|
+
new(coerced_collection, parent, name)
|
35
|
+
|
36
|
+
elsif collection.is_a?(Vedeu::Views::Stream)
|
37
|
+
Vedeu::Views::Chars.coerce(collection.value,
|
38
|
+
collection.parent,
|
39
|
+
collection.name)
|
40
|
+
|
41
|
+
elsif string?(collection)
|
42
|
+
return new([], parent, name) if collection.empty?
|
46
43
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
'unrecognised.'
|
44
|
+
if parent && parent.attributes
|
45
|
+
new_collection = Vedeu::DSL::Text.new(collection,
|
46
|
+
parent.attributes).chars
|
51
47
|
|
48
|
+
new(new_collection, parent, name)
|
49
|
+
end
|
50
|
+
|
51
|
+
else
|
52
|
+
raise Vedeu::Error::InvalidSyntax,
|
53
|
+
'Cannot coerce for Vedeu::View::Chars, as collection is ' \
|
54
|
+
'unrecognised.'
|
55
|
+
|
56
|
+
end
|
52
57
|
end
|
53
|
-
|
58
|
+
|
59
|
+
end # Eigenclass
|
54
60
|
|
55
61
|
alias chars value
|
56
62
|
|
data/lib/vedeu/views/lines.rb
CHANGED
@@ -10,38 +10,44 @@ module Vedeu
|
|
10
10
|
#
|
11
11
|
class Lines < Vedeu::Repositories::Collection
|
12
12
|
|
13
|
-
|
14
|
-
# @macro raise_invalid_syntax
|
15
|
-
# @return [Vedeu::Views::Lines]
|
16
|
-
def self.coerce(collection = [], parent = nil, name = nil)
|
17
|
-
if collection.is_a?(Vedeu::Views::Lines)
|
18
|
-
collection
|
19
|
-
|
20
|
-
elsif collection.is_a?(Vedeu::Views::Streams)
|
21
|
-
if collection.empty?
|
22
|
-
# @todo Investigate whether this is being used.
|
23
|
-
end
|
13
|
+
class << self
|
24
14
|
|
25
|
-
|
26
|
-
return new(collection, parent, name) if collection.empty?
|
15
|
+
include Vedeu::Common
|
27
16
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
17
|
+
# @param (see Vedeu::Repositories::Collection#initialize)
|
18
|
+
# @macro raise_invalid_syntax
|
19
|
+
# @return [Vedeu::Views::Lines]
|
20
|
+
def coerce(collection = [], parent = nil, name = nil)
|
21
|
+
if collection.is_a?(Vedeu::Views::Lines)
|
22
|
+
collection
|
23
|
+
|
24
|
+
elsif collection.is_a?(Vedeu::Views::Streams)
|
25
|
+
if collection.empty?
|
26
|
+
# @todo Investigate whether this is being used.
|
27
|
+
end
|
28
|
+
|
29
|
+
elsif array?(collection)
|
30
|
+
return new(collection, parent, name) if collection.empty?
|
32
31
|
|
33
|
-
|
32
|
+
coerced_collection = []
|
33
|
+
collection.each do |element|
|
34
|
+
coerced_collection << element if element.is_a?(Vedeu::Views::Line)
|
35
|
+
end
|
34
36
|
|
35
|
-
|
36
|
-
new([collection], parent, name)
|
37
|
+
new(coerced_collection, parent, name)
|
37
38
|
|
38
|
-
|
39
|
-
|
40
|
-
'Cannot coerce for Vedeu::View::Lines, as collection ' \
|
41
|
-
'unrecognised.'
|
39
|
+
elsif collection.is_a?(Vedeu::Views::Line)
|
40
|
+
new([collection], parent, name)
|
42
41
|
|
42
|
+
else
|
43
|
+
raise Vedeu::Error::InvalidSyntax,
|
44
|
+
'Cannot coerce for Vedeu::View::Lines, as collection ' \
|
45
|
+
'unrecognised.'
|
46
|
+
|
47
|
+
end
|
43
48
|
end
|
44
|
-
|
49
|
+
|
50
|
+
end # Eigenclass
|
45
51
|
|
46
52
|
alias lines value
|
47
53
|
|
data/lib/vedeu/views/streams.rb
CHANGED
@@ -10,49 +10,55 @@ module Vedeu
|
|
10
10
|
#
|
11
11
|
class Streams < Vedeu::Repositories::Collection
|
12
12
|
|
13
|
-
|
14
|
-
# @macro raise_invalid_syntax
|
15
|
-
# @return [Vedeu::Views::Streams]
|
16
|
-
def self.coerce(collection = [], parent = nil, name = nil)
|
17
|
-
if collection.is_a?(Vedeu::Views::Streams)
|
18
|
-
collection
|
13
|
+
class << self
|
19
14
|
|
20
|
-
|
21
|
-
return new(collection, parent, name) if collection.empty?
|
15
|
+
include Vedeu::Common
|
22
16
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
17
|
+
# @param (see Vedeu::Repositories::Collection#initialize)
|
18
|
+
# @macro raise_invalid_syntax
|
19
|
+
# @return [Vedeu::Views::Streams]
|
20
|
+
def coerce(collection = [], parent = nil, name = nil)
|
21
|
+
if collection.is_a?(Vedeu::Views::Streams)
|
22
|
+
collection
|
27
23
|
|
28
|
-
|
29
|
-
|
24
|
+
elsif array?(collection)
|
25
|
+
return new(collection, parent, name) if collection.empty?
|
30
26
|
|
27
|
+
coerced_collection = []
|
28
|
+
collection.each do |element|
|
29
|
+
if element.is_a?(Vedeu::Views::Stream)
|
30
|
+
coerced_collection << element
|
31
|
+
|
32
|
+
elsif string?(element)
|
33
|
+
coerced_collection << Vedeu::Views::Stream.new(value: element)
|
34
|
+
|
35
|
+
end
|
31
36
|
end
|
32
|
-
end
|
33
37
|
|
34
|
-
|
38
|
+
new(coerced_collection, parent, name)
|
35
39
|
|
36
|
-
|
37
|
-
|
40
|
+
elsif collection.is_a?(Vedeu::Views::Stream)
|
41
|
+
new([collection], parent, name)
|
38
42
|
|
39
|
-
|
40
|
-
|
43
|
+
elsif collection.is_a?(Vedeu::Views::Chars)
|
44
|
+
return new([], parent, name) if collection.empty?
|
41
45
|
|
42
|
-
|
46
|
+
new([Vedeu::Views::Stream.new(value: collection)], parent, name)
|
43
47
|
|
44
|
-
|
45
|
-
|
48
|
+
elsif string?(collection)
|
49
|
+
return new([], parent, name) if collection.empty?
|
46
50
|
|
47
|
-
|
51
|
+
new([Vedeu::Views::Stream.new(value: collection)], parent, name)
|
48
52
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
+
else
|
54
|
+
raise Vedeu::Error::InvalidSyntax,
|
55
|
+
'Cannot coerce for Vedeu::View::Streams, as collection ' \
|
56
|
+
"unrecognised. (#{collection.class.name})"
|
53
57
|
|
58
|
+
end
|
54
59
|
end
|
55
|
-
|
60
|
+
|
61
|
+
end # Eigenclass
|
56
62
|
|
57
63
|
alias streams value
|
58
64
|
|
@@ -21,7 +21,7 @@ module Vedeu
|
|
21
21
|
}
|
22
22
|
let(:colour) { {} }
|
23
23
|
let(:_name) { '' }
|
24
|
-
let(:position) {}
|
24
|
+
let(:position) { Vedeu::Geometries::Position.new(1, 1) }
|
25
25
|
let(:style) { '' }
|
26
26
|
let(:_value) { '' }
|
27
27
|
|
@@ -47,7 +47,9 @@ module Vedeu
|
|
47
47
|
it { subject.must_equal(true) }
|
48
48
|
|
49
49
|
context 'when different to other' do
|
50
|
-
let(:other) {
|
50
|
+
let(:other) {
|
51
|
+
described.new(position: Vedeu::Geometries::Position.new(1, 2))
|
52
|
+
}
|
51
53
|
|
52
54
|
it { subject.must_equal(false) }
|
53
55
|
end
|
@@ -64,7 +66,6 @@ module Vedeu
|
|
64
66
|
end
|
65
67
|
|
66
68
|
describe '#to_h' do
|
67
|
-
let(:position) { Vedeu::Geometries::Position.new(1, 1) }
|
68
69
|
let(:colour) { Vedeu::Colours::Colour.new(background: '#000000') }
|
69
70
|
let(:expected) {
|
70
71
|
{
|
@@ -101,7 +102,8 @@ module Vedeu
|
|
101
102
|
end
|
102
103
|
|
103
104
|
describe '#to_s' do
|
104
|
-
let(:
|
105
|
+
let(:position) {}
|
106
|
+
let(:_value) { 'a' }
|
105
107
|
|
106
108
|
subject { instance.to_s }
|
107
109
|
|
@@ -63,6 +63,22 @@ module Vedeu
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
+
describe '#array?' do
|
67
|
+
let(:_value) {}
|
68
|
+
|
69
|
+
subject { instance.array?(_value) }
|
70
|
+
|
71
|
+
context 'when the value is an Array' do
|
72
|
+
let(:_value) { [:hydrogen] }
|
73
|
+
|
74
|
+
it { subject.must_equal(true) }
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'when the value is not an Array' do
|
78
|
+
it { subject.must_equal(false) }
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
66
82
|
describe '#boolean' do
|
67
83
|
subject { instance.boolean(_value) }
|
68
84
|
|
@@ -264,12 +264,8 @@ module Vedeu
|
|
264
264
|
describe '#log_except' do
|
265
265
|
it 'sets the options to the desired value' do
|
266
266
|
configuration = Vedeu.configure { log_except :debug, :store }
|
267
|
-
configuration.log_except.
|
268
|
-
|
269
|
-
|
270
|
-
it 'sets the options to the desired value' do
|
271
|
-
configuration = Vedeu.configure { log_except [:debug, :info] }
|
272
|
-
configuration.log_except.must_equal([:debug, :info])
|
267
|
+
configuration.log_except.must_include(:debug)
|
268
|
+
configuration.log_except.must_include(:store)
|
273
269
|
end
|
274
270
|
end
|
275
271
|
|
@@ -278,11 +274,6 @@ module Vedeu
|
|
278
274
|
configuration = Vedeu.configure { log_only :debug, :store }
|
279
275
|
configuration.log_only.must_equal([:debug, :store])
|
280
276
|
end
|
281
|
-
|
282
|
-
it 'sets the options to the desired value' do
|
283
|
-
configuration = Vedeu.configure { log_only [:debug, :info] }
|
284
|
-
configuration.log_only.must_equal([:debug, :info])
|
285
|
-
end
|
286
277
|
end
|
287
278
|
|
288
279
|
describe '#renderer' do
|
@@ -107,7 +107,8 @@ module Vedeu
|
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
110
|
-
it { described.log_except.
|
110
|
+
it { described.log_except.must_include(:timer) }
|
111
|
+
it { described.log_except.must_include(:event) }
|
111
112
|
end
|
112
113
|
end
|
113
114
|
|
@@ -123,49 +124,76 @@ module Vedeu
|
|
123
124
|
end
|
124
125
|
end
|
125
126
|
|
126
|
-
it { described.log_only.
|
127
|
+
it { described.log_only.must_include(:timer) }
|
128
|
+
it { described.log_only.must_include(:event) }
|
127
129
|
end
|
128
130
|
end
|
129
131
|
|
130
|
-
describe '.
|
131
|
-
|
132
|
+
describe '.log_types' do
|
133
|
+
subject { described.log_types }
|
134
|
+
|
135
|
+
it { subject.must_be_instance_of(Hash) }
|
136
|
+
end
|
132
137
|
|
138
|
+
describe '.loggable?' do
|
133
139
|
subject { described.loggable?(type) }
|
134
140
|
|
135
|
-
context 'when the type
|
136
|
-
|
137
|
-
described.stubs(:log_only).returns([:hydrogen])
|
138
|
-
described.stubs(:log_except).returns([:hydrogen])
|
139
|
-
end
|
141
|
+
context 'when the type is invalid' do
|
142
|
+
let(:type) { :hydrogen }
|
140
143
|
|
141
|
-
it { subject.must_equal(
|
144
|
+
it { subject.must_equal(false) }
|
142
145
|
end
|
143
146
|
|
144
|
-
context 'when the type
|
145
|
-
|
146
|
-
|
147
|
-
|
147
|
+
context 'when the type is valid' do
|
148
|
+
let(:type) { :debug }
|
149
|
+
|
150
|
+
context 'when log_only and log_except are both empty' do
|
151
|
+
it { subject.must_equal(true) }
|
148
152
|
end
|
149
153
|
|
150
|
-
|
151
|
-
|
154
|
+
context 'when log_only contains entries' do
|
155
|
+
context 'when log_only includes the type' do
|
156
|
+
before do
|
157
|
+
Vedeu.configure do
|
158
|
+
log_only [:info, :debug, :error]
|
159
|
+
end
|
160
|
+
end
|
152
161
|
|
153
|
-
|
154
|
-
|
155
|
-
described.stubs(:log_only).returns([])
|
156
|
-
described.stubs(:log_except).returns([:hydrogen])
|
157
|
-
end
|
162
|
+
it { subject.must_equal(true) }
|
163
|
+
end
|
158
164
|
|
159
|
-
|
160
|
-
|
165
|
+
context 'when log_only does not include the type' do
|
166
|
+
before do
|
167
|
+
Vedeu.configure do
|
168
|
+
log_only [:info, :error]
|
169
|
+
end
|
170
|
+
end
|
161
171
|
|
162
|
-
|
163
|
-
|
164
|
-
described.stubs(:log_only).returns([])
|
165
|
-
described.stubs(:log_except).returns([])
|
172
|
+
it { subject.must_equal(false) }
|
173
|
+
end
|
166
174
|
end
|
167
175
|
|
168
|
-
|
176
|
+
context 'when log_except contains entries' do
|
177
|
+
context 'when log_except includes the type' do
|
178
|
+
before do
|
179
|
+
Vedeu.configure do
|
180
|
+
log_except [:info, :debug, :error]
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
it { subject.must_equal(false) }
|
185
|
+
end
|
186
|
+
|
187
|
+
context 'when log_except does not include the type' do
|
188
|
+
before do
|
189
|
+
Vedeu.configure do
|
190
|
+
log_only [:info, :error]
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
it { subject.must_equal(false) }
|
195
|
+
end
|
196
|
+
end
|
169
197
|
end
|
170
198
|
end
|
171
199
|
|
File without changes
|
File without changes
|
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.8.
|
4
|
+
version: 0.8.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Laking
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: guard
|
@@ -783,10 +783,10 @@ files:
|
|
783
783
|
- lib/vedeu/presentation/styles.rb
|
784
784
|
- lib/vedeu/renderers/all.rb
|
785
785
|
- lib/vedeu/renderers/escape.rb
|
786
|
-
- lib/vedeu/renderers/file.rb
|
787
786
|
- lib/vedeu/renderers/html.rb
|
788
787
|
- lib/vedeu/renderers/json.rb
|
789
|
-
- lib/vedeu/renderers/
|
788
|
+
- lib/vedeu/renderers/support/file.rb
|
789
|
+
- lib/vedeu/renderers/support/options.rb
|
790
790
|
- lib/vedeu/renderers/templates/html_renderer.vedeu
|
791
791
|
- lib/vedeu/renderers/terminal.rb
|
792
792
|
- lib/vedeu/renderers/text.rb
|
@@ -1010,10 +1010,10 @@ files:
|
|
1010
1010
|
- test/lib/vedeu/presentation/styles_test.rb
|
1011
1011
|
- test/lib/vedeu/renderers/all_test.rb
|
1012
1012
|
- test/lib/vedeu/renderers/escape_test.rb
|
1013
|
-
- test/lib/vedeu/renderers/file_test.rb
|
1014
1013
|
- test/lib/vedeu/renderers/html_test.rb
|
1015
1014
|
- test/lib/vedeu/renderers/json_test.rb
|
1016
|
-
- test/lib/vedeu/renderers/
|
1015
|
+
- test/lib/vedeu/renderers/support/file_test.rb
|
1016
|
+
- test/lib/vedeu/renderers/support/options_test.rb
|
1017
1017
|
- test/lib/vedeu/renderers/terminal_test.rb
|
1018
1018
|
- test/lib/vedeu/renderers/text_test.rb
|
1019
1019
|
- test/lib/vedeu/repositories/assemblage_test.rb
|
@@ -1275,10 +1275,10 @@ test_files:
|
|
1275
1275
|
- test/lib/vedeu/presentation/styles_test.rb
|
1276
1276
|
- test/lib/vedeu/renderers/all_test.rb
|
1277
1277
|
- test/lib/vedeu/renderers/escape_test.rb
|
1278
|
-
- test/lib/vedeu/renderers/file_test.rb
|
1279
1278
|
- test/lib/vedeu/renderers/html_test.rb
|
1280
1279
|
- test/lib/vedeu/renderers/json_test.rb
|
1281
|
-
- test/lib/vedeu/renderers/
|
1280
|
+
- test/lib/vedeu/renderers/support/file_test.rb
|
1281
|
+
- test/lib/vedeu/renderers/support/options_test.rb
|
1282
1282
|
- test/lib/vedeu/renderers/terminal_test.rb
|
1283
1283
|
- test/lib/vedeu/renderers/text_test.rb
|
1284
1284
|
- test/lib/vedeu/repositories/assemblage_test.rb
|