vedeu 0.4.13 → 0.4.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -1
- data/.travis.yml +2 -1
- data/Guardfile +6 -5
- data/README.md +3 -30
- data/Rakefile +5 -5
- data/bin/vedeu_drb_client +1 -1
- data/bin/vedeu_drb_server +91 -89
- data/bin/vedeu_test +4 -0
- data/config/rubocop_enabled.yml +5 -10
- data/examples/borders_app.rb +2 -1
- data/examples/colours_app.rb +13 -8
- data/examples/configuration_app.rb +3 -2
- data/examples/cursor_app.rb +16 -11
- data/examples/drb_app.rb +88 -89
- data/examples/focus_app.rb +31 -32
- data/examples/geometry_app.rb +2 -1
- data/examples/hello_world.rb +2 -1
- data/examples/lines_app.rb +2 -1
- data/examples/material_colours_app.rb +126 -0
- data/examples/typed_commands/typed_commands_app.rb +5 -1
- data/examples/view_templates_app/view_templates_app.rb +6 -3
- data/lib/vedeu/all.rb +1 -1
- data/lib/vedeu/api.rb +18 -10
- data/lib/vedeu/application.rb +0 -1
- data/lib/vedeu/bindings.rb +77 -16
- data/lib/vedeu/buffers/all.rb +2 -5
- data/lib/vedeu/buffers/buffer.rb +69 -25
- data/lib/vedeu/buffers/display_buffer.rb +3 -7
- data/lib/vedeu/configuration/all.rb +3 -6
- data/lib/vedeu/configuration/api.rb +28 -4
- data/lib/vedeu/configuration/cli.rb +9 -9
- data/lib/vedeu/configuration/configuration.rb +11 -7
- data/lib/vedeu/cursor/all.rb +3 -6
- data/lib/vedeu/cursor/cursor.rb +22 -14
- data/lib/vedeu/cursor/move.rb +32 -22
- data/lib/vedeu/cursor/refresh_cursor.rb +1 -1
- data/lib/vedeu/debug.rb +2 -1
- data/lib/vedeu/distributed/client.rb +1 -7
- data/lib/vedeu/distributed/server.rb +0 -4
- data/lib/vedeu/distributed/subprocess.rb +1 -1
- data/lib/vedeu/distributed/templates/default_configuration.vedeu +1 -1
- data/lib/vedeu/distributed/test_application.rb +3 -5
- data/lib/vedeu/distributed/uri.rb +2 -2
- data/lib/vedeu/dsl/all.rb +6 -6
- data/lib/vedeu/dsl/components/all.rb +0 -3
- data/lib/vedeu/dsl/components/border.rb +20 -12
- data/lib/vedeu/dsl/components/geometry.rb +68 -3
- data/lib/vedeu/dsl/components/keymap.rb +1 -2
- data/lib/vedeu/dsl/composition.rb +8 -1
- data/lib/vedeu/dsl/interface.rb +61 -11
- data/lib/vedeu/dsl/line.rb +12 -12
- data/lib/vedeu/dsl/shared/all.rb +4 -7
- data/lib/vedeu/dsl/shared/colour.rb +2 -2
- data/lib/vedeu/dsl/shared/text.rb +2 -35
- data/lib/vedeu/dsl/shared/use.rb +2 -2
- data/lib/vedeu/dsl/view.rb +4 -4
- data/lib/vedeu/events/all.rb +3 -5
- data/lib/vedeu/events/event.rb +5 -5
- data/lib/vedeu/geometry/all.rb +11 -16
- data/lib/vedeu/geometry/area.rb +2 -5
- data/lib/vedeu/geometry/canvas.rb +12 -16
- data/lib/vedeu/geometry/dimension.rb +20 -22
- data/lib/vedeu/geometry/geometry.rb +28 -30
- data/lib/vedeu/geometry/grid.rb +1 -1
- data/lib/vedeu/geometry/index_position.rb +7 -0
- data/lib/vedeu/geometry/null_geometry.rb +61 -0
- data/lib/vedeu/geometry/position.rb +0 -3
- data/lib/vedeu/geometry/position_index.rb +7 -0
- data/lib/vedeu/geometry/position_validator.rb +44 -33
- data/lib/vedeu/input/all.rb +5 -4
- data/lib/vedeu/input/keymap.rb +0 -1
- data/lib/vedeu/input/mapper.rb +1 -3
- data/lib/vedeu/launcher.rb +6 -7
- data/lib/vedeu/main_loop.rb +1 -2
- data/lib/vedeu/models/all.rb +1 -0
- data/lib/vedeu/models/cell.rb +5 -8
- data/lib/vedeu/models/char.rb +50 -15
- data/lib/vedeu/models/composition.rb +8 -1
- data/lib/vedeu/models/focus.rb +4 -4
- data/lib/vedeu/models/group.rb +3 -3
- data/lib/vedeu/models/interface.rb +62 -46
- data/lib/vedeu/models/line.rb +1 -1
- data/lib/vedeu/models/null.rb +48 -0
- data/lib/vedeu/models/stream.rb +5 -5
- data/lib/vedeu/output/all.rb +20 -30
- data/lib/vedeu/output/border.rb +93 -40
- data/lib/vedeu/output/clear.rb +100 -15
- data/lib/vedeu/output/colour.rb +56 -12
- data/lib/vedeu/output/compressor.rb +59 -0
- data/lib/vedeu/output/html_char.rb +4 -2
- data/lib/vedeu/output/null_border.rb +16 -4
- data/lib/vedeu/output/output.rb +13 -21
- data/lib/vedeu/output/presentation.rb +28 -23
- data/lib/vedeu/output/refresh.rb +2 -2
- data/lib/vedeu/output/renderers/all.rb +80 -3
- data/lib/vedeu/output/renderers/file_renderer.rb +38 -2
- data/lib/vedeu/output/renderers/html_renderer.rb +6 -4
- data/lib/vedeu/output/renderers/json_renderer.rb +52 -0
- data/lib/vedeu/output/renderers/null_renderer.rb +14 -0
- data/lib/vedeu/output/renderers/terminal_renderer.rb +2 -12
- data/lib/vedeu/output/style.rb +33 -3
- data/lib/vedeu/output/text.rb +98 -1
- data/lib/vedeu/output/translator.rb +30 -7
- data/lib/vedeu/output/viewport.rb +43 -79
- data/lib/vedeu/output/wordwrap.rb +4 -4
- data/lib/vedeu/repositories/all.rb +22 -179
- data/lib/vedeu/repositories/collection.rb +11 -13
- data/lib/vedeu/repositories/collections/all.rb +8 -0
- data/lib/vedeu/repositories/collections/chars.rb +9 -0
- data/lib/vedeu/repositories/collections/events.rb +9 -0
- data/lib/vedeu/repositories/collections/interfaces.rb +9 -0
- data/lib/vedeu/repositories/collections/keys.rb +9 -0
- data/lib/vedeu/repositories/collections/lines.rb +9 -0
- data/lib/vedeu/repositories/collections/streams.rb +9 -0
- data/lib/vedeu/repositories/model.rb +7 -2
- data/lib/vedeu/repositories/repositories/all.rb +14 -0
- data/lib/vedeu/repositories/repositories/background_colours.rb +14 -0
- data/lib/vedeu/repositories/repositories/borders.rb +38 -0
- data/lib/vedeu/repositories/repositories/buffers.rb +36 -0
- data/lib/vedeu/repositories/repositories/colours.rb +63 -0
- data/lib/vedeu/repositories/repositories/cursors.rb +29 -0
- data/lib/vedeu/repositories/repositories/events_repository.rb +24 -0
- data/lib/vedeu/repositories/repositories/foreground_colours.rb +14 -0
- data/lib/vedeu/repositories/repositories/geometries.rb +37 -0
- data/lib/vedeu/repositories/repositories/groups.rb +24 -0
- data/lib/vedeu/repositories/repositories/interfaces_repository.rb +24 -0
- data/lib/vedeu/repositories/repositories/keymaps.rb +24 -0
- data/lib/vedeu/repositories/repositories/menus.rb +24 -0
- data/lib/vedeu/repositories/repository.rb +29 -47
- data/lib/vedeu/storage/all.rb +6 -0
- data/lib/vedeu/storage/associative_store.rb +47 -0
- data/lib/vedeu/storage/conveyor_store.rb +69 -0
- data/lib/vedeu/storage/fifo_store.rb +37 -0
- data/lib/vedeu/storage/store.rb +58 -0
- data/lib/vedeu/support/all.rb +5 -10
- data/lib/vedeu/support/common.rb +0 -8
- data/lib/vedeu/support/log.rb +13 -24
- data/lib/vedeu/support/template.rb +4 -1
- data/lib/vedeu/support/terminal.rb +10 -10
- data/lib/vedeu/support/trace.rb +15 -88
- data/lib/vedeu/support/visibility.rb +73 -0
- data/lib/vedeu.rb +37 -0
- data/test/lib/vedeu/api_test.rb +7 -3
- data/test/lib/vedeu/application_test.rb +9 -3
- data/test/lib/vedeu/bindings_test.rb +21 -0
- data/test/lib/vedeu/buffers/buffer_test.rb +110 -134
- data/test/lib/vedeu/buffers/display_buffer_test.rb +8 -0
- data/test/lib/vedeu/configuration/api_test.rb +5 -1
- data/test/lib/vedeu/configuration/configuration_test.rb +4 -6
- data/test/lib/vedeu/cursor/cursor_test.rb +25 -17
- data/test/lib/vedeu/cursor/move_test.rb +7 -7
- data/test/lib/vedeu/distributed/client_test.rb +1 -1
- data/test/lib/vedeu/distributed/subprocess_test.rb +3 -1
- data/test/lib/vedeu/distributed/uri_test.rb +5 -5
- data/test/lib/vedeu/dsl/components/geometry_test.rb +43 -0
- data/test/lib/vedeu/dsl/components/keymap_test.rb +1 -1
- data/test/lib/vedeu/dsl/composition_test.rb +6 -5
- data/test/lib/vedeu/dsl/interface_test.rb +81 -16
- data/test/lib/vedeu/dsl/shared/colour_test.rb +4 -4
- data/test/lib/vedeu/dsl/shared/text_test.rb +87 -9
- data/test/lib/vedeu/dsl/stream_test.rb +1 -1
- data/test/lib/vedeu/events/event_test.rb +3 -1
- data/test/lib/vedeu/events/trigger_test.rb +8 -4
- data/test/lib/vedeu/geometry/dimension_test.rb +1 -1
- data/test/lib/vedeu/geometry/geometry_test.rb +5 -3
- data/test/lib/vedeu/geometry/index_position_test.rb +30 -7
- data/test/lib/vedeu/geometry/null_geometry_test.rb +57 -0
- data/test/lib/vedeu/geometry/position_index_test.rb +14 -0
- data/test/lib/vedeu/geometry/position_validator_test.rb +17 -3
- data/test/lib/vedeu/input/keymap_test.rb +3 -1
- data/test/lib/vedeu/input/mapper_test.rb +8 -4
- data/test/lib/vedeu/launcher_test.rb +1 -1
- data/test/lib/vedeu/models/cell_test.rb +10 -8
- data/test/lib/vedeu/models/char_test.rb +52 -28
- data/test/lib/vedeu/models/composition_test.rb +26 -4
- data/test/lib/vedeu/models/group_test.rb +11 -5
- data/test/lib/vedeu/models/interface_test.rb +32 -19
- data/test/lib/vedeu/models/line_test.rb +21 -25
- data/test/lib/vedeu/models/menu_test.rb +10 -6
- data/test/lib/vedeu/models/null_test.rb +66 -0
- data/test/lib/vedeu/models/stream_test.rb +13 -10
- data/test/lib/vedeu/output/border_test.rb +29 -8
- data/test/lib/vedeu/output/clear_test.rb +23 -4
- data/test/lib/vedeu/output/colour_test.rb +20 -4
- data/test/lib/vedeu/output/compressor_test.rb +43 -0
- data/test/lib/vedeu/output/html_char_test.rb +29 -17
- data/test/lib/vedeu/output/null_border_test.rb +2 -1
- data/test/lib/vedeu/output/output_test.rb +20 -30
- data/test/lib/vedeu/output/presentation_test.rb +39 -16
- data/test/lib/vedeu/output/refresh_test.rb +14 -10
- data/test/lib/vedeu/output/renderers/all_test.rb +96 -0
- data/test/lib/vedeu/output/renderers/file_renderer_test.rb +1 -1
- data/test/lib/vedeu/output/renderers/html_renderer_test.rb +13 -9
- data/test/lib/vedeu/output/renderers/json_renderer_test.rb +52 -0
- data/test/lib/vedeu/output/renderers/null_renderer_test.rb +19 -0
- data/test/lib/vedeu/output/style_test.rb +41 -1
- data/test/lib/vedeu/output/text_test.rb +61 -10
- data/test/lib/vedeu/output/translator_test.rb +14 -0
- data/test/lib/vedeu/output/viewport_test.rb +22 -3
- data/test/lib/vedeu/output/virtual_terminal_test.rb +3 -3
- data/test/lib/vedeu/output/wordwrap_test.rb +58 -45
- data/test/lib/vedeu/repositories/collections/chars_test.rb +16 -0
- data/test/lib/vedeu/repositories/collections/events_test.rb +16 -0
- data/test/lib/vedeu/repositories/collections/interfaces_test.rb +16 -0
- data/test/lib/vedeu/repositories/collections/keys_test.rb +16 -0
- data/test/lib/vedeu/repositories/collections/lines_test.rb +16 -0
- data/test/lib/vedeu/repositories/collections/streams_test.rb +16 -0
- data/test/lib/vedeu/repositories/repositories/background_colours_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/borders_test.rb +51 -0
- data/test/lib/vedeu/repositories/repositories/buffers_test.rb +52 -0
- data/test/lib/vedeu/repositories/repositories/colours_test.rb +16 -0
- data/test/lib/vedeu/repositories/repositories/cursors_test.rb +39 -0
- data/test/lib/vedeu/repositories/repositories/events_repository_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/foreground_colours_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/geometries_test.rb +42 -0
- data/test/lib/vedeu/repositories/repositories/groups_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/interfaces_repositories_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/keymaps_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/menus_test.rb +17 -0
- data/test/lib/vedeu/repositories/repository_test.rb +16 -36
- data/test/lib/vedeu/storage/associative_store_test.rb +69 -0
- data/test/lib/vedeu/storage/conveyor_store_test.rb +135 -0
- data/test/lib/vedeu/storage/fifo_store_test.rb +47 -0
- data/test/lib/vedeu/storage/store_test.rb +123 -0
- data/test/lib/vedeu/support/common_test.rb +0 -9
- data/test/lib/vedeu/support/terminal_test.rb +78 -55
- data/test/lib/vedeu/support/visibility_test.rb +80 -0
- data/test/test_helper.rb +13 -11
- data/vedeu.gemspec +4 -3
- metadata +92 -32
- data/lib/vedeu/cursor/toggle.rb +0 -55
- data/lib/vedeu/exceptions.rb +0 -37
- data/lib/vedeu/geometry/centre.rb +0 -85
- data/lib/vedeu/geometry/content.rb +0 -70
- data/lib/vedeu/geometry/limit.rb +0 -58
- data/lib/vedeu/output/compositor.rb +0 -62
- data/lib/vedeu/repositories/collections.rb +0 -41
- data/lib/vedeu/support/coercions.rb +0 -60
- data/lib/vedeu/support/sentence.rb +0 -91
- data/lib/vedeu/support/visible.rb +0 -90
- data/test/lib/vedeu/cursor/toggle_test.rb +0 -63
- data/test/lib/vedeu/geometry/centre_test.rb +0 -58
- data/test/lib/vedeu/geometry/content_test.rb +0 -98
- data/test/lib/vedeu/geometry/limit_test.rb +0 -30
- data/test/lib/vedeu/output/compositor_test.rb +0 -48
- data/test/lib/vedeu/repositories/all_test.rb +0 -135
- data/test/lib/vedeu/repositories/collections_test.rb +0 -71
- data/test/lib/vedeu/support/coercions_test.rb +0 -84
- data/test/lib/vedeu/support/sentence_test.rb +0 -56
- data/test/lib/vedeu/support/visible_test.rb +0 -161
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'vedeu/repositories/collection'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
|
5
|
-
# A collection of {Vedeu::Char} instances.
|
6
|
-
#
|
7
|
-
class Chars < Vedeu::Collection
|
8
|
-
|
9
|
-
end # Chars
|
10
|
-
|
11
|
-
# A collection of {Vedeu::Event} instances.
|
12
|
-
#
|
13
|
-
class Events < Vedeu::Collection
|
14
|
-
|
15
|
-
end # Events
|
16
|
-
|
17
|
-
# A collection of {Vedeu::Interface} instances.
|
18
|
-
#
|
19
|
-
class Interfaces < Vedeu::Collection
|
20
|
-
|
21
|
-
end # Interfaces
|
22
|
-
|
23
|
-
# A collection of {Vedeu::Key} instances.
|
24
|
-
#
|
25
|
-
class Keys < Vedeu::Collection
|
26
|
-
|
27
|
-
end # Keys
|
28
|
-
|
29
|
-
# A collection of {Vedeu::Line} instances.
|
30
|
-
#
|
31
|
-
class Lines < Vedeu::Collection
|
32
|
-
|
33
|
-
end # Lines
|
34
|
-
|
35
|
-
# A collection of {Vedeu::Stream} instances.
|
36
|
-
#
|
37
|
-
class Streams < Vedeu::Collection
|
38
|
-
|
39
|
-
end # Streams
|
40
|
-
|
41
|
-
end # Vedeu
|
@@ -1,60 +0,0 @@
|
|
1
|
-
require 'vedeu/support/common'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
|
5
|
-
# Provides means to convert attributes into the correct model.
|
6
|
-
#
|
7
|
-
module Coercions
|
8
|
-
|
9
|
-
include Vedeu::Common
|
10
|
-
|
11
|
-
# Produces new objects of the correct class from the value, ignores objects
|
12
|
-
# that have already been coerced.
|
13
|
-
#
|
14
|
-
# @param value [Object|NilClass]
|
15
|
-
# @return [Object]
|
16
|
-
def coerce(value)
|
17
|
-
if value.nil?
|
18
|
-
new
|
19
|
-
|
20
|
-
elsif value.is_a?(self)
|
21
|
-
value
|
22
|
-
|
23
|
-
else
|
24
|
-
new(value)
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
# Produces new objects of the correct class from attributes hashes,
|
30
|
-
# ignores objects that have already been coerced.
|
31
|
-
#
|
32
|
-
# @param values [Array|Hash]
|
33
|
-
# @return [Array]
|
34
|
-
def coercer(values)
|
35
|
-
return [] unless defined_value?(values)
|
36
|
-
|
37
|
-
[values].flatten.map do |value|
|
38
|
-
if value.is_a?(self)
|
39
|
-
value
|
40
|
-
|
41
|
-
else
|
42
|
-
new(value)
|
43
|
-
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# Whenever this module {Vedeu::Coercions} is included in another class or
|
49
|
-
# module, make its methods into class methods, so they may be called
|
50
|
-
# directly.
|
51
|
-
#
|
52
|
-
# @param receiver [Class] The class in which this module is included.
|
53
|
-
# @return [void]
|
54
|
-
def self.included(receiver)
|
55
|
-
receiver.extend(self)
|
56
|
-
end
|
57
|
-
|
58
|
-
end # Coercions
|
59
|
-
|
60
|
-
end # Vedeu
|
@@ -1,91 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
# Take a collection of words (elements) and form a sentence from them.
|
4
|
-
#
|
5
|
-
# @example
|
6
|
-
# elements = ['Hydrogen', 'Helium', 'Lithium']
|
7
|
-
# Vedeu::Sentence.construct(elements) # => 'Hydrogen, Helium and Lithium'
|
8
|
-
#
|
9
|
-
class Sentence
|
10
|
-
|
11
|
-
# @param elements [Array]
|
12
|
-
# @param label [String]
|
13
|
-
# @return [String]
|
14
|
-
def self.construct(elements, label = 'elements')
|
15
|
-
new(elements, label).construct
|
16
|
-
end
|
17
|
-
|
18
|
-
# Returns a new instance of Vedeu::Sentence.
|
19
|
-
#
|
20
|
-
# @param elements [Array]
|
21
|
-
# @param label [String]
|
22
|
-
# @return [Vedeu::Sentence]
|
23
|
-
def initialize(elements, label)
|
24
|
-
@elements, @label = elements, label
|
25
|
-
end
|
26
|
-
|
27
|
-
# @return [String]
|
28
|
-
def construct
|
29
|
-
if one?
|
30
|
-
first
|
31
|
-
|
32
|
-
elsif two?
|
33
|
-
elements.join(' and ')
|
34
|
-
|
35
|
-
elsif many?
|
36
|
-
[but_last, last].join(' and ')
|
37
|
-
|
38
|
-
else
|
39
|
-
"No #{label} have been assigned."
|
40
|
-
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
# @!attribute [r] elements
|
47
|
-
# @return [Array]
|
48
|
-
attr_reader :elements
|
49
|
-
|
50
|
-
# @!attribute [r] label
|
51
|
-
# @return [String]
|
52
|
-
attr_reader :label
|
53
|
-
|
54
|
-
# @return [Boolean]
|
55
|
-
def one?
|
56
|
-
count == 1
|
57
|
-
end
|
58
|
-
|
59
|
-
# @return [Boolean]
|
60
|
-
def two?
|
61
|
-
count == 2
|
62
|
-
end
|
63
|
-
|
64
|
-
# @return [Boolean]
|
65
|
-
def many?
|
66
|
-
count > 2
|
67
|
-
end
|
68
|
-
|
69
|
-
# @return [String]
|
70
|
-
def but_last
|
71
|
-
elements[0...-1].join(', ')
|
72
|
-
end
|
73
|
-
|
74
|
-
# @return [String]
|
75
|
-
def first
|
76
|
-
elements.first
|
77
|
-
end
|
78
|
-
|
79
|
-
# @return [String]
|
80
|
-
def last
|
81
|
-
elements[-1]
|
82
|
-
end
|
83
|
-
|
84
|
-
# @return [Fixnum]
|
85
|
-
def count
|
86
|
-
elements.size
|
87
|
-
end
|
88
|
-
|
89
|
-
end # Sentence
|
90
|
-
|
91
|
-
end # Vedeu
|
@@ -1,90 +0,0 @@
|
|
1
|
-
require 'vedeu/output/esc'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
|
5
|
-
# Represents the concept of a visible or invisible attribute.
|
6
|
-
#
|
7
|
-
class Visible
|
8
|
-
|
9
|
-
# @param value [Boolean|Symbol]
|
10
|
-
# @return [Visible]
|
11
|
-
def self.coerce(value)
|
12
|
-
if value.is_a?(self)
|
13
|
-
value
|
14
|
-
|
15
|
-
else
|
16
|
-
new(value)
|
17
|
-
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
# Returns a new instance of Vedeu::Visible
|
22
|
-
#
|
23
|
-
# @param visible [Boolean|Symbol]
|
24
|
-
# @return [Visible]
|
25
|
-
def initialize(visible = nil)
|
26
|
-
@visible = visible
|
27
|
-
end
|
28
|
-
|
29
|
-
# @return [String]
|
30
|
-
def to_s
|
31
|
-
visible? ? 'visible' : 'invisible'
|
32
|
-
end
|
33
|
-
|
34
|
-
# @return [String]
|
35
|
-
def cursor
|
36
|
-
if visible?
|
37
|
-
Vedeu::Esc.string('show_cursor')
|
38
|
-
|
39
|
-
else
|
40
|
-
Vedeu::Esc.string('hide_cursor')
|
41
|
-
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# Returns a boolean indicating whether the instance is visible.
|
46
|
-
#
|
47
|
-
# @return [Boolean]
|
48
|
-
def visible?
|
49
|
-
visible
|
50
|
-
end
|
51
|
-
|
52
|
-
# Returns a boolean indicating whether the instance is invisible.
|
53
|
-
#
|
54
|
-
# @return [Boolean]
|
55
|
-
def invisible?
|
56
|
-
!visible
|
57
|
-
end
|
58
|
-
|
59
|
-
# @return [Visible]
|
60
|
-
def hide
|
61
|
-
Vedeu::Visible.new(false)
|
62
|
-
end
|
63
|
-
|
64
|
-
# @return [Visible]
|
65
|
-
def show
|
66
|
-
Vedeu::Visible.new(true)
|
67
|
-
end
|
68
|
-
|
69
|
-
# @return [Visible]
|
70
|
-
def toggle
|
71
|
-
visible? ? hide : show
|
72
|
-
end
|
73
|
-
|
74
|
-
# @return [Boolean]
|
75
|
-
def visible
|
76
|
-
if @visible == :hide || @visible == false
|
77
|
-
false
|
78
|
-
|
79
|
-
elsif @visible == :show || @visible == true
|
80
|
-
true
|
81
|
-
|
82
|
-
else
|
83
|
-
!!@visible
|
84
|
-
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
end # Visible
|
89
|
-
|
90
|
-
end # Vedeu
|
@@ -1,63 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
|
5
|
-
describe Toggle do
|
6
|
-
|
7
|
-
let(:described) { Toggle.new(cursor) }
|
8
|
-
let(:cursor) { Cursor.new({ name: 'vanadium',
|
9
|
-
ox: 1,
|
10
|
-
oy: 1,
|
11
|
-
state: state,
|
12
|
-
x: 1,
|
13
|
-
y: 1 }) }
|
14
|
-
let(:state) { true }
|
15
|
-
|
16
|
-
describe '#initialize' do
|
17
|
-
it { described.must_be_instance_of(Toggle) }
|
18
|
-
it { described.instance_variable_get('@cursor').must_equal(cursor) }
|
19
|
-
end
|
20
|
-
|
21
|
-
describe '.hide' do
|
22
|
-
subject { Toggle.hide(cursor) }
|
23
|
-
|
24
|
-
it { subject.must_be_instance_of(Cursor) }
|
25
|
-
|
26
|
-
context 'when the cursor is visible' do
|
27
|
-
it 'returns a new cursor' do
|
28
|
-
subject.wont_equal(cursor)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
context 'when the cursor is invisible' do
|
33
|
-
let(:state) { false }
|
34
|
-
|
35
|
-
it 'returns the cursor' do
|
36
|
-
subject.must_equal(cursor)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
describe '.show' do
|
42
|
-
subject { Toggle.show(cursor) }
|
43
|
-
|
44
|
-
it { subject.must_be_instance_of(Cursor) }
|
45
|
-
|
46
|
-
context 'when the cursor is visible' do
|
47
|
-
it 'returns the cursor' do
|
48
|
-
subject.must_equal(cursor)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
context 'when the cursor is invisible' do
|
53
|
-
let(:state) { false }
|
54
|
-
|
55
|
-
it 'returns a new cursor' do
|
56
|
-
subject.wont_equal(cursor)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
end # Toggle
|
62
|
-
|
63
|
-
end # Vedeu
|
@@ -1,58 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
|
5
|
-
describe Centre do
|
6
|
-
|
7
|
-
let(:described) { Vedeu::Centre }
|
8
|
-
let(:instance) { described.new(attributes) }
|
9
|
-
let(:attributes) {
|
10
|
-
{
|
11
|
-
v: v,
|
12
|
-
vn: vn,
|
13
|
-
value: value,
|
14
|
-
}
|
15
|
-
}
|
16
|
-
let(:v) { 2 }
|
17
|
-
let(:vn) { 47 }
|
18
|
-
let(:value) { 30 }
|
19
|
-
|
20
|
-
describe '#initialize' do
|
21
|
-
it { instance.must_be_instance_of(Vedeu::Centre) }
|
22
|
-
it { instance.instance_variable_get('@v').must_equal(v) }
|
23
|
-
it { instance.instance_variable_get('@vn').must_equal(vn) }
|
24
|
-
it { instance.instance_variable_get('@value').must_equal(value) }
|
25
|
-
end
|
26
|
-
|
27
|
-
describe '#centre' do
|
28
|
-
subject { instance.centre }
|
29
|
-
|
30
|
-
it { subject.must_be_instance_of(Fixnum) }
|
31
|
-
|
32
|
-
context 'when the value is given' do
|
33
|
-
it { subject.must_equal(15) }
|
34
|
-
end
|
35
|
-
|
36
|
-
context 'when the value is not given' do
|
37
|
-
let(:value) {}
|
38
|
-
|
39
|
-
it { subject.must_equal(24) }
|
40
|
-
|
41
|
-
context 'when either v or vn is missing' do
|
42
|
-
let(:vn) {}
|
43
|
-
|
44
|
-
it { proc { subject }.must_raise(InvalidSyntax) }
|
45
|
-
end
|
46
|
-
|
47
|
-
context 'when vn < v' do
|
48
|
-
let(:vn) { 15 }
|
49
|
-
let(:v) { 32 }
|
50
|
-
|
51
|
-
it { proc { subject }.must_raise(InvalidSyntax) }
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
end # Centre
|
57
|
-
|
58
|
-
end # Vedeu
|
@@ -1,98 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
|
5
|
-
describe Content do
|
6
|
-
|
7
|
-
let(:described) { Vedeu::Content }
|
8
|
-
let(:instance) { described.new(interface) }
|
9
|
-
let(:interface) {
|
10
|
-
Vedeu.interface 'content_geometry' do
|
11
|
-
geometry do
|
12
|
-
height 3
|
13
|
-
width 5
|
14
|
-
end
|
15
|
-
end
|
16
|
-
}
|
17
|
-
let(:lines) { [] }
|
18
|
-
|
19
|
-
before do
|
20
|
-
Vedeu.interfaces.reset
|
21
|
-
interface.stubs(:lines).returns(lines)
|
22
|
-
end
|
23
|
-
|
24
|
-
describe '#initialize' do
|
25
|
-
it { instance.must_be_instance_of(described) }
|
26
|
-
it { instance.instance_variable_get('@interface').must_equal(interface) }
|
27
|
-
end
|
28
|
-
|
29
|
-
describe '#yn' do
|
30
|
-
subject { instance.yn }
|
31
|
-
|
32
|
-
it { subject.must_be_instance_of(Fixnum) }
|
33
|
-
|
34
|
-
context 'when the interface has content' do
|
35
|
-
context 'when there is more lines than height' do
|
36
|
-
let(:lines) {
|
37
|
-
[
|
38
|
-
[:line_1],
|
39
|
-
[:line_2],
|
40
|
-
[:line_3],
|
41
|
-
[:line_4]
|
42
|
-
]
|
43
|
-
}
|
44
|
-
|
45
|
-
it { subject.must_equal(4) }
|
46
|
-
end
|
47
|
-
|
48
|
-
context 'when there is less lines than height' do
|
49
|
-
it { subject.must_equal(3) }
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
context 'when the interface does not have content' do
|
54
|
-
it { subject.must_equal(3) }
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
describe '#xn' do
|
59
|
-
subject { instance.xn }
|
60
|
-
|
61
|
-
it { subject.must_be_instance_of(Fixnum) }
|
62
|
-
|
63
|
-
context 'when the interface has content' do
|
64
|
-
context 'when there are more characters than width' do
|
65
|
-
let(:lines) {
|
66
|
-
[
|
67
|
-
['S', 'o', 'm', 'e', ' ', 't', 'e', 'x', 't', '.'],
|
68
|
-
['S', 'o', 'm', 'e'],
|
69
|
-
['S', 'o', 'm', 'e', ' ', 't', 'e', 'x', 't', '.', '.', '.'],
|
70
|
-
['S', 'o', 'm', 'e', ' ', 't', 'e'],
|
71
|
-
]
|
72
|
-
}
|
73
|
-
|
74
|
-
it { subject.must_equal(12) }
|
75
|
-
end
|
76
|
-
|
77
|
-
context 'when there are less characters than width' do
|
78
|
-
let(:lines) {
|
79
|
-
[
|
80
|
-
['S', 'o', 'm', 'e'],
|
81
|
-
['S', 'o', 'm', 'e'],
|
82
|
-
['S', 'o', 'm', 'e'],
|
83
|
-
['S', 'o', 'm', 'e'],
|
84
|
-
]
|
85
|
-
}
|
86
|
-
|
87
|
-
it { subject.must_equal(5) }
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
context 'when the interface does not have content' do
|
92
|
-
it { subject.must_equal(5) }
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
end # Content
|
97
|
-
|
98
|
-
end # Vedeu
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
|
5
|
-
describe Limit do
|
6
|
-
|
7
|
-
let(:described) { Vedeu::Limit }
|
8
|
-
let(:instance) { described.new(v, vn, max, min) }
|
9
|
-
let(:v) {}
|
10
|
-
let(:vn) {}
|
11
|
-
let(:max) {}
|
12
|
-
let(:min) { 2 }
|
13
|
-
|
14
|
-
describe '#initialize' do
|
15
|
-
it { instance.must_be_instance_of(Vedeu::Limit) }
|
16
|
-
it { instance.instance_variable_get('@v').must_equal(v) }
|
17
|
-
it { instance.instance_variable_get('@vn').must_equal(vn) }
|
18
|
-
it { instance.instance_variable_get('@max').must_equal(max) }
|
19
|
-
it { instance.instance_variable_get('@min').must_equal(min) }
|
20
|
-
|
21
|
-
context 'when min is nil' do
|
22
|
-
let(:min) {}
|
23
|
-
|
24
|
-
it { instance.instance_variable_get('@min').must_equal(1) }
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
end # Limit
|
29
|
-
|
30
|
-
end # Vedeu
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
|
5
|
-
# TODO: Leak detected. (GL 2015-01-28)
|
6
|
-
|
7
|
-
describe Compositor do
|
8
|
-
|
9
|
-
let(:described) { Vedeu::Compositor }
|
10
|
-
let(:instance) { described.new(_name) }
|
11
|
-
let(:_name) { 'compositor' }
|
12
|
-
let(:buffer) { Buffer.new(_name, interface) }
|
13
|
-
let(:interface) {
|
14
|
-
Vedeu.interface(_name) do
|
15
|
-
border!
|
16
|
-
geometry do
|
17
|
-
height 5
|
18
|
-
width 10
|
19
|
-
end
|
20
|
-
lines do
|
21
|
-
line 'Some text.'
|
22
|
-
end
|
23
|
-
end
|
24
|
-
}
|
25
|
-
|
26
|
-
before do
|
27
|
-
IO.console.stubs(:print)
|
28
|
-
|
29
|
-
Vedeu.buffers.reset
|
30
|
-
Vedeu.interfaces.reset
|
31
|
-
Buffer.new(_name, interface).store
|
32
|
-
end
|
33
|
-
|
34
|
-
describe '#initialize' do
|
35
|
-
it { instance.must_be_instance_of(described) }
|
36
|
-
it { instance.instance_variable_get('@name').must_equal(_name) }
|
37
|
-
end
|
38
|
-
|
39
|
-
describe '.compose' do
|
40
|
-
subject { described.compose(_name) }
|
41
|
-
|
42
|
-
it { subject.must_be_instance_of(Array) }
|
43
|
-
it { subject.first.must_be_instance_of(Vedeu::Interface) }
|
44
|
-
end
|
45
|
-
|
46
|
-
end # Compositor
|
47
|
-
|
48
|
-
end # Vedeu
|
@@ -1,135 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
|
5
|
-
describe Borders do
|
6
|
-
|
7
|
-
let(:described) { Vedeu::Borders }
|
8
|
-
|
9
|
-
describe '.borders' do
|
10
|
-
subject { described.borders }
|
11
|
-
|
12
|
-
it { subject.must_be_instance_of(described) }
|
13
|
-
end
|
14
|
-
|
15
|
-
end # Borders
|
16
|
-
|
17
|
-
describe Buffers do
|
18
|
-
|
19
|
-
let(:described) { Vedeu::Buffers }
|
20
|
-
|
21
|
-
describe '.buffers' do
|
22
|
-
subject { described.buffers }
|
23
|
-
|
24
|
-
it { subject.must_be_instance_of(described) }
|
25
|
-
end
|
26
|
-
|
27
|
-
end # Buffers
|
28
|
-
|
29
|
-
describe Cursors do
|
30
|
-
|
31
|
-
let(:described) { Vedeu::Cursors }
|
32
|
-
|
33
|
-
describe '.cursors' do
|
34
|
-
subject { described.cursors }
|
35
|
-
|
36
|
-
it { subject.must_be_instance_of(described) }
|
37
|
-
end
|
38
|
-
|
39
|
-
describe '.cursor' do
|
40
|
-
subject { Vedeu.cursor }
|
41
|
-
|
42
|
-
context 'when there are cursors are defined' do
|
43
|
-
before do
|
44
|
-
Vedeu::Focus.add('Vedeu.cursor')
|
45
|
-
Vedeu::Cursor.new({ name: 'Vedeu.cursor' }).store
|
46
|
-
end
|
47
|
-
|
48
|
-
it { subject.must_be_instance_of(Vedeu::Cursor) }
|
49
|
-
end
|
50
|
-
|
51
|
-
context 'when there are no cursors defined' do
|
52
|
-
before do
|
53
|
-
Vedeu::Focus.reset
|
54
|
-
Vedeu.cursors.reset
|
55
|
-
end
|
56
|
-
|
57
|
-
it { subject.must_be_instance_of(NilClass) }
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
end # Cursors
|
62
|
-
|
63
|
-
describe EventsRepository do
|
64
|
-
|
65
|
-
let(:described) { Vedeu::EventsRepository }
|
66
|
-
|
67
|
-
describe '.events' do
|
68
|
-
subject { described.events }
|
69
|
-
|
70
|
-
it { subject.must_be_instance_of(described) }
|
71
|
-
end
|
72
|
-
|
73
|
-
end # EventsRepository
|
74
|
-
|
75
|
-
describe Geometries do
|
76
|
-
|
77
|
-
let(:described) { Vedeu::Geometries }
|
78
|
-
|
79
|
-
describe '.geometries' do
|
80
|
-
subject { described.geometries }
|
81
|
-
|
82
|
-
it { subject.must_be_instance_of(described) }
|
83
|
-
end
|
84
|
-
|
85
|
-
end # Geometries
|
86
|
-
|
87
|
-
describe Groups do
|
88
|
-
|
89
|
-
let(:described) { Vedeu::Groups }
|
90
|
-
|
91
|
-
describe '.groups' do
|
92
|
-
subject { described.groups }
|
93
|
-
|
94
|
-
it { subject.must_be_instance_of(described) }
|
95
|
-
end
|
96
|
-
|
97
|
-
end # Groups
|
98
|
-
|
99
|
-
describe InterfacesRepository do
|
100
|
-
|
101
|
-
let(:described) { Vedeu::InterfacesRepository }
|
102
|
-
|
103
|
-
describe '.interfaces' do
|
104
|
-
subject { described.interfaces }
|
105
|
-
|
106
|
-
it { subject.must_be_instance_of(described) }
|
107
|
-
end
|
108
|
-
|
109
|
-
end # InterfacesRepository
|
110
|
-
|
111
|
-
describe Keymaps do
|
112
|
-
|
113
|
-
let(:described) { Vedeu::Keymaps }
|
114
|
-
|
115
|
-
describe '.keymaps' do
|
116
|
-
subject { described.keymaps }
|
117
|
-
|
118
|
-
it { subject.must_be_instance_of(described) }
|
119
|
-
end
|
120
|
-
|
121
|
-
end # Keymaps
|
122
|
-
|
123
|
-
describe Menus do
|
124
|
-
|
125
|
-
let(:described) { Vedeu::Menus }
|
126
|
-
|
127
|
-
describe '.menus' do
|
128
|
-
subject { described.menus }
|
129
|
-
|
130
|
-
it { subject.must_be_instance_of(described) }
|
131
|
-
end
|
132
|
-
|
133
|
-
end # Menus
|
134
|
-
|
135
|
-
end # Vedeu
|