vedeu 0.4.18 → 0.4.19
Sign up to get free protection for your applications and to get access to all the features.
- 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]
|