vedeu 0.4.18 → 0.4.19
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 +1 -1
- data/Rakefile +1 -0
- data/bin/vedeu_drb_server +0 -1
- data/bin/vedeu_test +0 -1
- data/config/rubocop_enabled.yml +1 -1
- data/examples/borders_app.rb +0 -1
- data/examples/colours_app.rb +0 -1
- data/examples/cursor_app.rb +0 -1
- data/examples/drb_app.rb +0 -1
- data/examples/geometry_app.rb +0 -1
- data/examples/hello_world.rb +0 -1
- data/examples/lines_app.rb +0 -1
- data/examples/material_colours_app.rb +0 -1
- data/examples/typed_commands/typed_commands_app.rb +0 -1
- data/examples/view_templates_app/view_templates_app.rb +0 -1
- data/lib/vedeu/api.rb +2 -1
- data/lib/vedeu/application.rb +3 -2
- data/lib/vedeu/bindings.rb +3 -5
- data/lib/vedeu/buffers/buffer.rb +8 -11
- data/lib/vedeu/buffers/display_buffer.rb +0 -2
- data/lib/vedeu/configuration/api.rb +1 -4
- data/lib/vedeu/configuration/cli.rb +153 -74
- data/lib/vedeu/configuration/configuration.rb +1 -2
- data/lib/vedeu/cursor/cursor.rb +0 -4
- data/lib/vedeu/cursor/move.rb +3 -6
- data/lib/vedeu/cursor/refresh_cursor.rb +12 -2
- data/lib/vedeu/distributed/client.rb +3 -2
- data/lib/vedeu/distributed/server.rb +4 -3
- data/lib/vedeu/distributed/subprocess.rb +3 -4
- data/lib/vedeu/distributed/test_application.rb +0 -1
- data/lib/vedeu/distributed/uri.rb +0 -1
- data/lib/vedeu/dsl/components/border.rb +3 -4
- data/lib/vedeu/dsl/components/geometry.rb +1 -5
- data/lib/vedeu/dsl/components/keymap.rb +1 -3
- data/lib/vedeu/dsl/components/menu.rb +1 -2
- data/lib/vedeu/dsl/composition.rb +3 -4
- data/lib/vedeu/dsl/group.rb +1 -4
- data/lib/vedeu/dsl/interface.rb +3 -10
- data/lib/vedeu/dsl/line.rb +3 -4
- data/lib/vedeu/dsl/shared/text.rb +0 -3
- data/lib/vedeu/dsl/stream.rb +3 -4
- data/lib/vedeu/dsl/view.rb +0 -3
- data/lib/vedeu/events/event.rb +3 -3
- data/lib/vedeu/events/trigger.rb +3 -2
- data/lib/vedeu/geometry/area.rb +0 -1
- data/lib/vedeu/geometry/canvas.rb +0 -1
- data/lib/vedeu/geometry/coordinate.rb +6 -7
- data/lib/vedeu/geometry/dimension.rb +3 -2
- data/lib/vedeu/geometry/geometry.rb +0 -6
- data/lib/vedeu/geometry/grid.rb +3 -2
- data/lib/vedeu/geometry/index_position.rb +0 -1
- data/lib/vedeu/geometry/position.rb +0 -1
- data/lib/vedeu/geometry/position_index.rb +0 -1
- data/lib/vedeu/geometry/position_validator.rb +6 -68
- data/lib/vedeu/input/all.rb +0 -2
- data/lib/vedeu/input/input.rb +3 -2
- data/lib/vedeu/input/key.rb +0 -1
- data/lib/vedeu/input/keymap.rb +4 -7
- data/lib/vedeu/input/mapper.rb +3 -2
- data/lib/vedeu/launcher.rb +3 -2
- data/lib/vedeu/main_loop.rb +1 -1
- data/lib/vedeu/models/cell.rb +0 -1
- data/lib/vedeu/models/char.rb +0 -1
- data/lib/vedeu/models/composition.rb +1 -7
- data/lib/vedeu/models/group.rb +0 -3
- data/lib/vedeu/models/interface.rb +0 -3
- data/lib/vedeu/models/line.rb +0 -4
- data/lib/vedeu/models/menu.rb +5 -8
- data/lib/vedeu/models/stream.rb +0 -4
- data/lib/vedeu/null/all.rb +11 -0
- data/lib/vedeu/null/border.rb +3 -1
- data/lib/vedeu/null/buffer.rb +0 -1
- data/lib/vedeu/null/generic.rb +4 -1
- data/lib/vedeu/null/geometry.rb +0 -1
- data/lib/vedeu/null/interface.rb +36 -7
- data/lib/vedeu/output/background.rb +0 -1
- data/lib/vedeu/output/border.rb +1 -6
- data/lib/vedeu/output/clear.rb +3 -2
- data/lib/vedeu/output/colour.rb +6 -18
- data/lib/vedeu/output/compressor.rb +5 -2
- data/lib/vedeu/output/esc.rb +4 -1
- data/lib/vedeu/output/foreground.rb +0 -5
- data/lib/vedeu/output/html_char.rb +3 -2
- data/lib/vedeu/output/output.rb +1 -5
- data/lib/vedeu/output/refresh.rb +1 -1
- data/lib/vedeu/output/renderers/all.rb +0 -1
- data/lib/vedeu/output/renderers/escape_sequence.rb +3 -2
- data/lib/vedeu/output/renderers/file.rb +85 -80
- data/lib/vedeu/output/renderers/html.rb +77 -72
- data/lib/vedeu/output/renderers/json.rb +45 -42
- data/lib/vedeu/output/renderers/null.rb +11 -8
- data/lib/vedeu/output/renderers/terminal.rb +41 -36
- data/lib/vedeu/output/renderers/text.rb +41 -36
- data/lib/vedeu/output/style.rb +0 -3
- data/lib/vedeu/output/text.rb +3 -2
- data/lib/vedeu/output/viewport.rb +3 -2
- data/lib/vedeu/output/virtual_terminal.rb +0 -1
- data/lib/vedeu/output/wordwrap.rb +3 -2
- data/lib/vedeu/repositories/all.rb +7 -6
- data/lib/vedeu/repositories/collection.rb +0 -1
- data/lib/vedeu/repositories/collections/chars.rb +0 -1
- data/lib/vedeu/repositories/collections/events.rb +0 -1
- data/lib/vedeu/repositories/collections/interfaces.rb +0 -1
- data/lib/vedeu/repositories/collections/keys.rb +0 -1
- data/lib/vedeu/repositories/collections/lines.rb +0 -1
- data/lib/vedeu/repositories/collections/streams.rb +0 -1
- data/lib/vedeu/repositories/model.rb +0 -1
- data/lib/vedeu/repositories/registerable.rb +29 -0
- data/lib/vedeu/repositories/repositories/background_colours.rb +0 -1
- data/lib/vedeu/repositories/repositories/borders.rb +2 -13
- data/lib/vedeu/repositories/repositories/buffers.rb +2 -13
- data/lib/vedeu/repositories/repositories/colours.rb +0 -1
- data/lib/vedeu/repositories/repositories/cursors.rb +1 -2
- data/lib/vedeu/repositories/repositories/events_repository.rb +0 -1
- data/lib/vedeu/repositories/repositories/foreground_colours.rb +0 -1
- data/lib/vedeu/repositories/repositories/geometries.rb +2 -13
- data/lib/vedeu/repositories/repositories/groups.rb +1 -2
- data/lib/vedeu/repositories/repositories/interfaces_repository.rb +2 -14
- data/lib/vedeu/repositories/repositories/keymaps.rb +1 -2
- data/lib/vedeu/repositories/repositories/menus.rb +1 -2
- data/lib/vedeu/repositories/repository.rb +14 -5
- data/lib/vedeu/storage/all.rb +0 -1
- data/lib/vedeu/storage/associative_store.rb +0 -1
- data/lib/vedeu/storage/conveyor_store.rb +0 -1
- data/lib/vedeu/storage/fifo_store.rb +0 -1
- data/lib/vedeu/support/log.rb +0 -3
- data/lib/vedeu/support/options.rb +3 -2
- data/lib/vedeu/support/template.rb +3 -4
- data/lib/vedeu/support/terminal.rb +0 -2
- data/lib/vedeu/support/trace.rb +6 -7
- data/lib/vedeu/support/visibility.rb +1 -2
- data/lib/vedeu.rb +3 -5
- data/test/lib/vedeu/buffers/buffer_test.rb +48 -13
- data/test/lib/vedeu/configuration/cli_test.rb +5 -4
- data/test/lib/vedeu/cursor/refresh_cursor_test.rb +37 -15
- data/test/lib/vedeu/distributed/subprocess_test.rb +1 -0
- data/test/lib/vedeu/dsl/shared/use_test.rb +1 -6
- data/test/lib/vedeu/main_loop_test.rb +11 -0
- data/test/lib/vedeu/null/interface_test.rb +27 -0
- data/test/lib/vedeu/output/output_test.rb +17 -10
- data/test/lib/vedeu/output/presentation_test.rb +35 -7
- data/test/lib/vedeu/output/renderers/escape_sequence_test.rb +50 -0
- data/test/lib/vedeu/output/renderers/file_test.rb +34 -30
- data/test/lib/vedeu/output/renderers/html_test.rb +61 -57
- data/test/lib/vedeu/output/renderers/json_test.rb +40 -36
- data/test/lib/vedeu/output/renderers/null_test.rb +12 -8
- data/test/lib/vedeu/output/renderers/terminal_test.rb +17 -13
- data/test/lib/vedeu/output/renderers/text_test.rb +17 -13
- data/test/lib/vedeu/repositories/model_test.rb +1 -1
- data/test/lib/vedeu/repositories/registerable_test.rb +28 -0
- data/test/lib/vedeu/storage/associative_store_test.rb +7 -0
- data/test/lib/vedeu/storage/conveyor_store_test.rb +7 -0
- data/test/lib/vedeu/storage/fifo_store_test.rb +7 -0
- data/test/support/helpers/model_test_class.rb +6 -2
- data/test/test_helper.rb +2 -0
- data/vedeu.gemspec +3 -2
- metadata +23 -6
- data/test/lib/vedeu/output/renderers/escape_sequence_renderer_test.rb +0 -46
data/lib/vedeu/input/keymap.rb
CHANGED
@@ -1,11 +1,8 @@
|
|
1
|
-
require 'vedeu/
|
2
|
-
require 'vedeu/dsl/components/all'
|
3
|
-
require 'vedeu/input/key'
|
1
|
+
require 'vedeu/dsl/components/keymap'
|
4
2
|
|
5
3
|
module Vedeu
|
6
4
|
|
7
5
|
# A container class for keys associated with a particular interface.
|
8
|
-
#
|
9
6
|
class Keymap
|
10
7
|
|
11
8
|
include Vedeu::Model
|
@@ -27,9 +24,9 @@ module Vedeu
|
|
27
24
|
def initialize(attributes = {})
|
28
25
|
@attributes = defaults.merge!(attributes)
|
29
26
|
|
30
|
-
@
|
31
|
-
|
32
|
-
|
27
|
+
@attributes.each do |key, value|
|
28
|
+
instance_variable_set("@#{key}", value)
|
29
|
+
end
|
33
30
|
end
|
34
31
|
|
35
32
|
# @param key [Key]
|
data/lib/vedeu/input/mapper.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
module Vedeu
|
2
2
|
|
3
3
|
# Maps keys to keymaps.
|
4
|
-
#
|
5
4
|
class Mapper
|
6
5
|
|
7
6
|
# Takes a key as a keypress and sends it to registered keymaps. If found,
|
@@ -65,7 +64,7 @@ module Vedeu
|
|
65
64
|
true
|
66
65
|
end
|
67
66
|
|
68
|
-
|
67
|
+
protected
|
69
68
|
|
70
69
|
# @!attribute [r] key
|
71
70
|
# @return [String|Symbol]
|
@@ -75,6 +74,8 @@ module Vedeu
|
|
75
74
|
# @return [Vedeu::Repository]
|
76
75
|
attr_reader :repository
|
77
76
|
|
77
|
+
private
|
78
|
+
|
78
79
|
# Is the key a global key?
|
79
80
|
#
|
80
81
|
# @return [Boolean]
|
data/lib/vedeu/launcher.rb
CHANGED
@@ -6,7 +6,6 @@ module Vedeu
|
|
6
6
|
# finally the exiting of the application with the correct exit code.
|
7
7
|
#
|
8
8
|
# @api public
|
9
|
-
#
|
10
9
|
class Launcher
|
11
10
|
|
12
11
|
# @!attribute [r] exit_code
|
@@ -70,12 +69,14 @@ module Vedeu
|
|
70
69
|
puts uncaught_exception.backtrace.join("\n") if configuration.debug?
|
71
70
|
end
|
72
71
|
|
73
|
-
|
72
|
+
protected
|
74
73
|
|
75
74
|
# @!attribute [r] argv
|
76
75
|
# @return [Array<String>] The command line arguments provided.
|
77
76
|
attr_reader :argv
|
78
77
|
|
78
|
+
private
|
79
|
+
|
79
80
|
# Terminates the application after resetting $stdin, $stdout and $stderr.
|
80
81
|
#
|
81
82
|
# @return [void]
|
data/lib/vedeu/main_loop.rb
CHANGED
@@ -5,7 +5,6 @@ module Vedeu
|
|
5
5
|
# Each time Vedeu starts one cycle in the application loop, it triggers the
|
6
6
|
# `:tick` event. A completion of that cycle will trigger `:tock`. This can be
|
7
7
|
# used by the client application for timing amongst other things.
|
8
|
-
#
|
9
8
|
class MainLoop
|
10
9
|
|
11
10
|
trap('SIGTERM') { stop! }
|
@@ -27,6 +26,7 @@ module Vedeu
|
|
27
26
|
safe_exit_point!
|
28
27
|
end
|
29
28
|
rescue VedeuInterrupt
|
29
|
+
Vedeu.log(type: :debug, message: 'Vedeu execution interrupted, exiting.')
|
30
30
|
end
|
31
31
|
# :nocov:
|
32
32
|
|
data/lib/vedeu/models/cell.rb
CHANGED
data/lib/vedeu/models/char.rb
CHANGED
@@ -1,12 +1,6 @@
|
|
1
|
-
require 'vedeu/dsl/composition'
|
2
|
-
require 'vedeu/repositories/all'
|
3
|
-
require 'vedeu/output/presentation'
|
4
|
-
require 'vedeu/support/common'
|
5
|
-
|
6
1
|
module Vedeu
|
7
2
|
|
8
3
|
# A composition is a collection of interfaces.
|
9
|
-
#
|
10
4
|
class Composition
|
11
5
|
|
12
6
|
include Vedeu::Model
|
@@ -30,7 +24,6 @@ module Vedeu
|
|
30
24
|
@attributes = defaults.merge!(attributes)
|
31
25
|
|
32
26
|
@interfaces = @attributes[:interfaces]
|
33
|
-
@repository = Vedeu.interfaces
|
34
27
|
end
|
35
28
|
|
36
29
|
# @param child [Vedeu::Interface]
|
@@ -62,6 +55,7 @@ module Vedeu
|
|
62
55
|
client: nil,
|
63
56
|
colour: nil,
|
64
57
|
interfaces: [],
|
58
|
+
repository: Vedeu.interfaces,
|
65
59
|
style: nil,
|
66
60
|
}
|
67
61
|
end
|
data/lib/vedeu/models/group.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'vedeu/models/all'
|
2
|
-
require 'vedeu/output/presentation'
|
3
1
|
require 'vedeu/buffers/display_buffer'
|
4
2
|
|
5
3
|
module Vedeu
|
@@ -7,7 +5,6 @@ module Vedeu
|
|
7
5
|
# An Interface represents a portion of the terminal defined by
|
8
6
|
# {Vedeu::Geometry}. It is a container for {Vedeu::Line} and {Vedeu::Stream}
|
9
7
|
# objects.
|
10
|
-
#
|
11
8
|
class Interface
|
12
9
|
|
13
10
|
extend Forwardable
|
data/lib/vedeu/models/line.rb
CHANGED
@@ -1,12 +1,8 @@
|
|
1
|
-
require 'vedeu/output/presentation'
|
2
|
-
require 'vedeu/models/all'
|
3
|
-
|
4
1
|
module Vedeu
|
5
2
|
|
6
3
|
# A Line represents a single row of the terminal. It is a container for
|
7
4
|
# {Vedeu::Stream} objects. A line's width is determined by the
|
8
5
|
# {Vedeu::Interface} it belongs to.
|
9
|
-
#
|
10
6
|
class Line
|
11
7
|
|
12
8
|
include Vedeu::Model
|
data/lib/vedeu/models/menu.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
|
-
require 'vedeu/repositories/model'
|
2
|
-
|
3
1
|
module Vedeu
|
4
2
|
|
5
3
|
# Converts the collection passed into a list of menu items which can be
|
6
4
|
# navigated using the instance methods or events provided.
|
7
|
-
#
|
8
5
|
class Menu
|
9
6
|
|
10
7
|
include Vedeu::Model
|
@@ -67,11 +64,10 @@ module Vedeu
|
|
67
64
|
# @return [Menu]
|
68
65
|
def initialize(attributes = {})
|
69
66
|
@attributes = defaults.merge!(attributes)
|
70
|
-
|
71
|
-
@
|
72
|
-
|
73
|
-
|
74
|
-
@selected = @attributes[:selected]
|
67
|
+
|
68
|
+
@attributes.each do |key, value|
|
69
|
+
instance_variable_set("@#{key}", value)
|
70
|
+
end
|
75
71
|
end
|
76
72
|
|
77
73
|
# Returns the item from the collection which shares the same index as the
|
@@ -210,6 +206,7 @@ module Vedeu
|
|
210
206
|
collection: [],
|
211
207
|
current: 0,
|
212
208
|
name: '',
|
209
|
+
repository: Vedeu.menus,
|
213
210
|
selected: nil,
|
214
211
|
}
|
215
212
|
end
|
data/lib/vedeu/models/stream.rb
CHANGED
@@ -1,12 +1,8 @@
|
|
1
|
-
require 'vedeu/output/presentation'
|
2
|
-
require 'vedeu/models/all'
|
3
|
-
|
4
1
|
module Vedeu
|
5
2
|
|
6
3
|
# A Stream can represent a character or collection of characters as part of a
|
7
4
|
# {Vedeu::Line} which you wish to colour and style independently of the other
|
8
5
|
# characters in that line.
|
9
|
-
#
|
10
6
|
class Stream
|
11
7
|
|
12
8
|
include Vedeu::Model
|
data/lib/vedeu/null/all.rb
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
module Vedeu
|
2
|
+
|
3
|
+
# A group of objects that serve to intercept messages destined for their
|
4
|
+
# real counterpart. In most cases the call is muted or returns a generic
|
5
|
+
# value that does not halt processing.
|
6
|
+
module Null
|
7
|
+
|
8
|
+
end
|
9
|
+
|
10
|
+
end
|
11
|
+
|
1
12
|
require_relative 'border'
|
2
13
|
require_relative 'buffer'
|
3
14
|
require_relative 'generic'
|
data/lib/vedeu/null/border.rb
CHANGED
@@ -4,7 +4,6 @@ module Vedeu
|
|
4
4
|
|
5
5
|
# Provides a non-existent Vedeu::Border that acts like the real thing, but
|
6
6
|
# does nothing.
|
7
|
-
#
|
8
7
|
class Border
|
9
8
|
|
10
9
|
# @!attribute [r] name
|
@@ -43,6 +42,9 @@ module Vedeu
|
|
43
42
|
end
|
44
43
|
alias_method :yn, :byn
|
45
44
|
|
45
|
+
# The null border should not be enabled, so that named geometry
|
46
|
+
# or null geometry is used.
|
47
|
+
#
|
46
48
|
# @return [FalseClass]
|
47
49
|
def enabled?
|
48
50
|
false
|
data/lib/vedeu/null/buffer.rb
CHANGED
data/lib/vedeu/null/generic.rb
CHANGED
@@ -3,9 +3,10 @@ module Vedeu
|
|
3
3
|
module Null
|
4
4
|
|
5
5
|
# Provides a non-existent model to swallow messages.
|
6
|
-
#
|
7
6
|
class Generic
|
8
7
|
|
8
|
+
# Returns an instance of the Vedeu::Null::Generic class.
|
9
|
+
#
|
9
10
|
# @return [Vedeu::Null::Generic]
|
10
11
|
def initialize; end
|
11
12
|
|
@@ -34,6 +35,8 @@ module Vedeu
|
|
34
35
|
nil
|
35
36
|
end
|
36
37
|
|
38
|
+
# The generic null should not be visible.
|
39
|
+
#
|
37
40
|
# @return [FalseClass]
|
38
41
|
def visible?
|
39
42
|
false
|
data/lib/vedeu/null/geometry.rb
CHANGED
data/lib/vedeu/null/interface.rb
CHANGED
@@ -3,19 +3,48 @@ module Vedeu
|
|
3
3
|
module Null
|
4
4
|
|
5
5
|
# Provides a non-existent model to swallow messages.
|
6
|
-
#
|
7
6
|
class Interface
|
8
7
|
|
9
|
-
#
|
10
|
-
# @return [
|
11
|
-
|
8
|
+
# @param name [String]
|
9
|
+
# @return [Vedeu::Null::Interface]
|
10
|
+
def initialize(name = nil)
|
11
|
+
@name = name
|
12
|
+
end
|
12
13
|
|
13
|
-
# @
|
14
|
+
# @return [Hash<Symbol => String>]
|
15
|
+
def attributes
|
16
|
+
{
|
17
|
+
name: name,
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
# Pretend to store this model in the repository.
|
22
|
+
#
|
14
23
|
# @return [Vedeu::Null::Interface]
|
15
|
-
def
|
16
|
-
|
24
|
+
def store
|
25
|
+
self
|
26
|
+
end
|
27
|
+
|
28
|
+
# The null interface should not be visible.
|
29
|
+
#
|
30
|
+
# @return [FalseClass]
|
31
|
+
def visible?
|
32
|
+
false
|
33
|
+
end
|
34
|
+
|
35
|
+
# Override the visible= setter usually found on a Vedeu::Interface.
|
36
|
+
#
|
37
|
+
# @return [FalseClass]
|
38
|
+
def visible=(*)
|
39
|
+
false
|
17
40
|
end
|
18
41
|
|
42
|
+
protected
|
43
|
+
|
44
|
+
# @!attribute [r] name
|
45
|
+
# @return [String]
|
46
|
+
attr_reader :name
|
47
|
+
|
19
48
|
end # Interface
|
20
49
|
|
21
50
|
end # Null
|
data/lib/vedeu/output/border.rb
CHANGED
@@ -1,6 +1,3 @@
|
|
1
|
-
require 'vedeu/repositories/all'
|
2
|
-
require 'vedeu/dsl/components/all'
|
3
|
-
|
4
1
|
module Vedeu
|
5
2
|
|
6
3
|
# Provides the mechanism to decorate an interface with a border on all edges,
|
@@ -10,7 +7,6 @@ module Vedeu
|
|
10
7
|
#
|
11
8
|
# @note Refer to UTF-8 U+2500 to U+257F for border characters. More details
|
12
9
|
# can be found at: http://en.wikipedia.org/wiki/Box-drawing_character
|
13
|
-
#
|
14
10
|
class Border
|
15
11
|
|
16
12
|
extend Forwardable
|
@@ -241,9 +237,8 @@ module Vedeu
|
|
241
237
|
# @param position [Symbol] Either :top_horizontal, or :bottom_horizontal.
|
242
238
|
# @return [Array<Vedeu::Char>]
|
243
239
|
def horizontal_border(position)
|
244
|
-
width.times.
|
240
|
+
width.times.each_with_object([]) do |ix, a|
|
245
241
|
a << border(horizontal, position, nil, ix)
|
246
|
-
a
|
247
242
|
end
|
248
243
|
end
|
249
244
|
|
data/lib/vedeu/output/clear.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
module Vedeu
|
2
2
|
|
3
3
|
# Clears the area defined by an interface.
|
4
|
-
#
|
5
4
|
class Clear
|
6
5
|
|
7
6
|
extend Forwardable
|
@@ -84,12 +83,14 @@ module Vedeu
|
|
84
83
|
Vedeu::Output.render(rendered)
|
85
84
|
end
|
86
85
|
|
87
|
-
|
86
|
+
protected
|
88
87
|
|
89
88
|
# @!attribute [r] interface
|
90
89
|
# @return [Interface]
|
91
90
|
attr_reader :interface
|
92
91
|
|
92
|
+
private
|
93
|
+
|
93
94
|
# @return (see Vedeu::Borders#by_name)
|
94
95
|
def border
|
95
96
|
@border ||= Vedeu.borders.by_name(name)
|
data/lib/vedeu/output/colour.rb
CHANGED
@@ -30,7 +30,6 @@ module Vedeu
|
|
30
30
|
# area needs more work in Vedeu.
|
31
31
|
#
|
32
32
|
# @todo Fix colours in all terminals. (GL: 2015-04-13)
|
33
|
-
#
|
34
33
|
class Colour
|
35
34
|
|
36
35
|
# @!attribute [r] attributes
|
@@ -42,21 +41,12 @@ module Vedeu
|
|
42
41
|
def self.coerce(value)
|
43
42
|
return value if value.is_a?(self)
|
44
43
|
return new unless value.is_a?(Hash)
|
45
|
-
return new unless value[:colour] ||
|
46
|
-
value[:background] ||
|
47
|
-
value[:foreground]
|
48
44
|
|
49
45
|
if value[:colour]
|
50
46
|
return value[:colour] if value[:colour].is_a?(self)
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
new(value[:colour])
|
55
|
-
|
56
|
-
else
|
57
|
-
new
|
58
|
-
|
59
|
-
end
|
47
|
+
return new unless value[:colour].is_a?(Hash)
|
48
|
+
return new(value[:colour]) if value[:colour][:background] ||
|
49
|
+
value[:colour][:foreground]
|
60
50
|
|
61
51
|
elsif value[:background] || value[:foreground]
|
62
52
|
new(value)
|
@@ -72,7 +62,7 @@ module Vedeu
|
|
72
62
|
# @param attributes [Hash]
|
73
63
|
# @option attributes background [String]
|
74
64
|
# @option attributes foreground [String]
|
75
|
-
# @return [Colour]
|
65
|
+
# @return [Vedeu::Colour]
|
76
66
|
def initialize(attributes = {})
|
77
67
|
@attributes = defaults.merge!(attributes)
|
78
68
|
end
|
@@ -89,8 +79,7 @@ module Vedeu
|
|
89
79
|
# @param value [String]
|
90
80
|
# @return [String]
|
91
81
|
def background=(value)
|
92
|
-
@attributes[:background] = value
|
93
|
-
@background = Vedeu::Background.coerce(value)
|
82
|
+
@background = @attributes[:background] = Vedeu::Background.coerce(value)
|
94
83
|
end
|
95
84
|
|
96
85
|
# @param other [Vedeu::Char]
|
@@ -113,8 +102,7 @@ module Vedeu
|
|
113
102
|
# @param value [String]
|
114
103
|
# @return [String]
|
115
104
|
def foreground=(value)
|
116
|
-
@attributes[:foreground] = value
|
117
|
-
@foreground = Vedeu::Foreground.coerce(value)
|
105
|
+
@foreground = @attributes[:foreground] = Vedeu::Foreground.coerce(value)
|
118
106
|
end
|
119
107
|
|
120
108
|
# Returns both or either of the converted attributes into a single escape
|
@@ -3,7 +3,6 @@ module Vedeu
|
|
3
3
|
# During the conversion of a Vedeu::Char object into a string of escape
|
4
4
|
# sequences, this class removes multiple occurences of the same escape
|
5
5
|
# sequence, resulting in a smaller payload being sent to the renderer.
|
6
|
-
#
|
7
6
|
class Compressor
|
8
7
|
|
9
8
|
# @param output [Array<Array<Vedeu::Char>>]
|
@@ -32,10 +31,14 @@ module Vedeu
|
|
32
31
|
end.join
|
33
32
|
end
|
34
33
|
|
35
|
-
|
34
|
+
protected
|
36
35
|
|
36
|
+
# @!attribute [r] output
|
37
|
+
# @return [Array<Array<Vedeu::Char>>]
|
37
38
|
attr_reader :output
|
38
39
|
|
40
|
+
private
|
41
|
+
|
39
42
|
# @param char [Vedeu::Char]
|
40
43
|
# @return [String]
|
41
44
|
def colour_for(char)
|
data/lib/vedeu/output/esc.rb
CHANGED
@@ -1,12 +1,7 @@
|
|
1
|
-
require 'vedeu/configuration/configuration'
|
2
|
-
require 'vedeu/output/translator'
|
3
|
-
require 'vedeu/output/esc'
|
4
|
-
|
5
1
|
module Vedeu
|
6
2
|
|
7
3
|
# The class represents one half (the other, can be found at
|
8
4
|
# {Vedeu::Background}) of a terminal colour escape sequence.
|
9
|
-
#
|
10
5
|
class Foreground < Vedeu::Translator
|
11
6
|
|
12
7
|
private
|
@@ -3,7 +3,6 @@ require 'vedeu/support/common'
|
|
3
3
|
module Vedeu
|
4
4
|
|
5
5
|
# Represents a {Vedeu::Char} as a HTML table cell.
|
6
|
-
#
|
7
6
|
class HTMLChar
|
8
7
|
|
9
8
|
include Vedeu::Common
|
@@ -27,12 +26,14 @@ module Vedeu
|
|
27
26
|
"<td#{td_style}>#{td_value}</td>"
|
28
27
|
end
|
29
28
|
|
30
|
-
|
29
|
+
protected
|
31
30
|
|
32
31
|
# @!attribute [r] char
|
33
32
|
# @return [Vedeu::Char]
|
34
33
|
attr_reader :char
|
35
34
|
|
35
|
+
private
|
36
|
+
|
36
37
|
# @return [String]
|
37
38
|
def td_style
|
38
39
|
return '' unless border || defined_value?(value)
|
data/lib/vedeu/output/output.rb
CHANGED
@@ -1,10 +1,6 @@
|
|
1
|
-
require 'vedeu/output/renderers/all'
|
2
|
-
require 'vedeu/output/virtual_buffer'
|
3
|
-
|
4
1
|
module Vedeu
|
5
2
|
|
6
3
|
# Sends the content to the renderers.
|
7
|
-
#
|
8
4
|
class Output
|
9
5
|
|
10
6
|
# Writes content to the defined renderers.
|
@@ -36,7 +32,7 @@ module Vedeu
|
|
36
32
|
Vedeu.renderers.render(content)
|
37
33
|
end
|
38
34
|
|
39
|
-
|
35
|
+
protected
|
40
36
|
|
41
37
|
# @!attribute [r] content
|
42
38
|
# @return [Array<Array<Vedeu::Char>>]
|
data/lib/vedeu/output/refresh.rb
CHANGED
@@ -3,7 +3,6 @@ module Vedeu
|
|
3
3
|
module Renderers
|
4
4
|
|
5
5
|
# A renderer which returns the escape sequence for each character.
|
6
|
-
#
|
7
6
|
class EscapeSequence
|
8
7
|
|
9
8
|
# @param output [Array<Array<Vedeu::Char>>]
|
@@ -25,12 +24,14 @@ module Vedeu
|
|
25
24
|
parsed
|
26
25
|
end
|
27
26
|
|
28
|
-
|
27
|
+
protected
|
29
28
|
|
30
29
|
# @!attribute [r] output
|
31
30
|
# @return [Array<Array<Vedeu::Char>>]
|
32
31
|
attr_reader :output
|
33
32
|
|
33
|
+
private
|
34
|
+
|
34
35
|
# Escapes the escape sequences.
|
35
36
|
#
|
36
37
|
# @return [String]
|