vedeu 0.6.1 → 0.6.2
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/lib/vedeu/all.rb +2 -13
- data/lib/vedeu/api.rb +9 -9
- data/lib/vedeu/application/application_view.rb +3 -5
- data/lib/vedeu/bindings/bindings.rb +5 -1
- data/lib/vedeu/bindings/focus.rb +0 -5
- data/lib/vedeu/bindings/refresh.rb +0 -5
- data/lib/vedeu/bindings/system.rb +1 -6
- data/lib/vedeu/colours/all.rb +17 -0
- data/lib/vedeu/colours/background.rb +32 -28
- data/lib/vedeu/colours/backgrounds.rb +13 -9
- data/lib/vedeu/colours/colour.rb +106 -102
- data/lib/vedeu/colours/foreground.rb +32 -28
- data/lib/vedeu/colours/foregrounds.rb +13 -9
- data/lib/vedeu/colours/repository.rb +70 -0
- data/lib/vedeu/colours/translator.rb +267 -0
- data/lib/vedeu/configuration/api.rb +10 -7
- data/lib/vedeu/configuration/configuration.rb +2 -1
- data/lib/vedeu/dsl/border.rb +15 -2
- data/lib/vedeu/dsl/composition.rb +6 -4
- data/lib/vedeu/dsl/geometry.rb +14 -7
- data/lib/vedeu/dsl/group.rb +2 -2
- data/lib/vedeu/dsl/interface.rb +5 -3
- data/lib/vedeu/dsl/keymap.rb +9 -7
- data/lib/vedeu/dsl/line.rb +7 -4
- data/lib/vedeu/dsl/menu.rb +3 -0
- data/lib/vedeu/dsl/presentation.rb +20 -10
- data/lib/vedeu/dsl/shared.rb +4 -4
- data/lib/vedeu/dsl/stream.rb +2 -2
- data/lib/vedeu/dsl/text.rb +11 -5
- data/lib/vedeu/dsl/use.rb +2 -2
- data/lib/vedeu/dsl/view.rb +8 -6
- data/lib/vedeu/events/aliases.rb +91 -0
- data/lib/vedeu/events/all.rb +15 -0
- data/lib/vedeu/events/collection.rb +13 -0
- data/lib/vedeu/events/event.rb +244 -239
- data/lib/vedeu/events/repository.rb +30 -0
- data/lib/vedeu/events/trigger.rb +68 -64
- data/lib/vedeu/exceptions.rb +65 -54
- data/lib/vedeu/geometry/coordinate.rb +3 -1
- data/lib/vedeu/geometry/grid.rb +2 -4
- data/lib/vedeu/input/editor/all.rb +2 -1
- data/lib/vedeu/input/editor/{virtual_cursor.rb → cursor.rb} +10 -10
- data/lib/vedeu/input/editor/document.rb +7 -7
- data/lib/vedeu/input/editor/insert.rb +70 -0
- data/lib/vedeu/input/editor/line.rb +4 -16
- data/lib/vedeu/input/editor/lines.rb +2 -16
- data/lib/vedeu/input/input_translator.rb +2 -2
- data/lib/vedeu/input/key.rb +2 -2
- data/lib/vedeu/internal_api.rb +6 -6
- data/lib/vedeu/log/lockless_log_device.rb +0 -74
- data/lib/vedeu/models/focus.rb +3 -3
- data/lib/vedeu/models/interface.rb +3 -3
- data/lib/vedeu/models/menu.rb +2 -2
- data/lib/vedeu/models/views/char.rb +1 -1
- data/lib/vedeu/models/views/composition.rb +1 -1
- data/lib/vedeu/models/views/line.rb +1 -1
- data/lib/vedeu/models/views/stream.rb +1 -1
- data/lib/vedeu/models/views/view.rb +6 -7
- data/lib/vedeu/output/presentation/colour.rb +23 -21
- data/lib/vedeu/output/renderers/renderer_options.rb +2 -4
- data/lib/vedeu/output/text.rb +1 -1
- data/lib/vedeu/output/wordwrap.rb +18 -7
- data/lib/vedeu/plugins/plugin.rb +2 -2
- data/lib/vedeu/refresh/refresh_buffer.rb +3 -3
- data/lib/vedeu/refresh/refresh_group.rb +3 -3
- data/lib/vedeu/repositories/repository.rb +7 -6
- data/lib/vedeu/runtime/application.rb +1 -1
- data/lib/vedeu/runtime/main_loop.rb +3 -3
- data/lib/vedeu/runtime/router.rb +14 -11
- data/lib/vedeu/templating/helpers.rb +5 -5
- data/lib/vedeu/templating/template.rb +4 -4
- data/lib/vedeu/templating/view_template.rb +1 -1
- data/lib/vedeu/terminal/terminal.rb +2 -2
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/application/application_view_test.rb +1 -1
- data/test/lib/vedeu/colours/background_test.rb +93 -89
- data/test/lib/vedeu/colours/backgrounds_test.rb +11 -7
- data/test/lib/vedeu/colours/colour_test.rb +155 -151
- data/test/lib/vedeu/colours/foreground_test.rb +93 -89
- data/test/lib/vedeu/colours/foregrounds_test.rb +11 -7
- data/test/lib/vedeu/colours/repository_test.rb +97 -0
- data/test/lib/vedeu/colours/translator_test.rb +173 -0
- data/test/lib/vedeu/configuration/api_test.rb +4 -4
- data/test/lib/vedeu/dsl/border_test.rb +12 -0
- data/test/lib/vedeu/dsl/composition_test.rb +3 -3
- data/test/lib/vedeu/dsl/geometry_test.rb +11 -0
- data/test/lib/vedeu/dsl/group_test.rb +2 -2
- data/test/lib/vedeu/dsl/interface_test.rb +4 -4
- data/test/lib/vedeu/dsl/keymap_test.rb +8 -4
- data/test/lib/vedeu/dsl/line_test.rb +6 -3
- data/test/lib/vedeu/dsl/menu_test.rb +6 -0
- data/test/lib/vedeu/dsl/presentation_test.rb +16 -3
- data/test/lib/vedeu/dsl/stream_test.rb +1 -1
- data/test/lib/vedeu/dsl/text_test.rb +7 -0
- data/test/lib/vedeu/dsl/view_test.rb +3 -3
- data/test/lib/vedeu/events/aliases_test.rb +144 -0
- data/test/lib/vedeu/events/collection_test.rb +22 -0
- data/test/lib/vedeu/events/event_test.rb +84 -80
- data/test/lib/vedeu/events/repository_test.rb +28 -0
- data/test/lib/vedeu/events/trigger_test.rb +41 -37
- data/test/lib/vedeu/geometry/grid_test.rb +4 -4
- data/test/lib/vedeu/input/editor/{virtual_cursor_test.rb → cursor_test.rb} +3 -3
- data/test/lib/vedeu/input/editor/insert_test.rb +36 -0
- data/test/lib/vedeu/input/key_test.rb +1 -1
- data/test/lib/vedeu/models/cell_test.rb +1 -1
- data/test/lib/vedeu/models/focus_test.rb +4 -2
- data/test/lib/vedeu/models/menu_test.rb +1 -1
- data/test/lib/vedeu/models/views/char_test.rb +8 -4
- data/test/lib/vedeu/models/views/line_test.rb +4 -4
- data/test/lib/vedeu/models/views/stream_test.rb +3 -3
- data/test/lib/vedeu/models/views/view_test.rb +1 -1
- data/test/lib/vedeu/output/html_char_test.rb +4 -2
- data/test/lib/vedeu/output/presentation/colour_test.rb +5 -5
- data/test/lib/vedeu/output/presentation_test.rb +4 -4
- data/test/lib/vedeu/output/renderers/json_test.rb +4 -2
- data/test/lib/vedeu/plugins/plugin_test.rb +1 -1
- data/test/lib/vedeu/refresh/refresh_buffer_test.rb +1 -1
- data/test/lib/vedeu/refresh/refresh_group_test.rb +1 -1
- data/test/lib/vedeu/repositories/repository_test.rb +2 -2
- data/test/lib/vedeu/runtime/router_test.rb +6 -6
- data/test/lib/vedeu/templating/decoder_test.rb +2 -3
- data/test/lib/vedeu/templating/encoder_test.rb +2 -3
- data/test/lib/vedeu/templating/helpers_test.rb +6 -6
- data/test/lib/vedeu/templating/template_test.rb +2 -2
- data/test/lib/vedeu/templating/view_template_test.rb +13 -7
- data/test/lib/vedeu/terminal/terminal_test.rb +3 -3
- metadata +24 -19
- data/lib/vedeu/colours/colour_translator.rb +0 -260
- data/lib/vedeu/colours/colours.rb +0 -66
- data/lib/vedeu/events/event_aliases.rb +0 -87
- data/lib/vedeu/events/event_collection.rb +0 -9
- data/lib/vedeu/events/events.rb +0 -26
- data/test/lib/vedeu/colours/colour_translator_test.rb +0 -169
- data/test/lib/vedeu/colours/colours_test.rb +0 -93
- data/test/lib/vedeu/events/event_aliases_test.rb +0 -140
- data/test/lib/vedeu/events/event_collection_test.rb +0 -18
- data/test/lib/vedeu/events/events_test.rb +0 -24
@@ -14,7 +14,9 @@ module Vedeu
|
|
14
14
|
|
15
15
|
describe '.open' do
|
16
16
|
context 'when a block was not given' do
|
17
|
-
it {
|
17
|
+
it {
|
18
|
+
proc { Vedeu::Terminal.open }.must_raise(Vedeu::Error::InvalidSyntax)
|
19
|
+
}
|
18
20
|
end
|
19
21
|
|
20
22
|
it 'opens a new terminal console in raw mode' do
|
@@ -93,8 +95,6 @@ module Vedeu
|
|
93
95
|
end
|
94
96
|
|
95
97
|
describe '.resize' do
|
96
|
-
before { Vedeu.interfaces.reset }
|
97
|
-
|
98
98
|
subject { described.resize }
|
99
99
|
|
100
100
|
it { subject.must_be_instance_of(TrueClass) }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vedeu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Laking
|
@@ -283,13 +283,14 @@ files:
|
|
283
283
|
- lib/vedeu/buffers/buffers.rb
|
284
284
|
- lib/vedeu/buffers/virtual_buffer.rb
|
285
285
|
- lib/vedeu/buffers/virtual_buffers.rb
|
286
|
+
- lib/vedeu/colours/all.rb
|
286
287
|
- lib/vedeu/colours/background.rb
|
287
288
|
- lib/vedeu/colours/backgrounds.rb
|
288
289
|
- lib/vedeu/colours/colour.rb
|
289
|
-
- lib/vedeu/colours/colour_translator.rb
|
290
|
-
- lib/vedeu/colours/colours.rb
|
291
290
|
- lib/vedeu/colours/foreground.rb
|
292
291
|
- lib/vedeu/colours/foregrounds.rb
|
292
|
+
- lib/vedeu/colours/repository.rb
|
293
|
+
- lib/vedeu/colours/translator.rb
|
293
294
|
- lib/vedeu/common.rb
|
294
295
|
- lib/vedeu/configuration/api.rb
|
295
296
|
- lib/vedeu/configuration/cli.rb
|
@@ -331,10 +332,11 @@ files:
|
|
331
332
|
- lib/vedeu/esc/borders.rb
|
332
333
|
- lib/vedeu/esc/colours.rb
|
333
334
|
- lib/vedeu/esc/esc.rb
|
335
|
+
- lib/vedeu/events/aliases.rb
|
336
|
+
- lib/vedeu/events/all.rb
|
337
|
+
- lib/vedeu/events/collection.rb
|
334
338
|
- lib/vedeu/events/event.rb
|
335
|
-
- lib/vedeu/events/
|
336
|
-
- lib/vedeu/events/event_collection.rb
|
337
|
-
- lib/vedeu/events/events.rb
|
339
|
+
- lib/vedeu/events/repository.rb
|
338
340
|
- lib/vedeu/events/trigger.rb
|
339
341
|
- lib/vedeu/exceptions.rb
|
340
342
|
- lib/vedeu/geometry/area.rb
|
@@ -347,12 +349,13 @@ files:
|
|
347
349
|
- lib/vedeu/input/editor/all.rb
|
348
350
|
- lib/vedeu/input/editor/capture.rb
|
349
351
|
- lib/vedeu/input/editor/cropper.rb
|
352
|
+
- lib/vedeu/input/editor/cursor.rb
|
350
353
|
- lib/vedeu/input/editor/document.rb
|
351
354
|
- lib/vedeu/input/editor/documents.rb
|
352
355
|
- lib/vedeu/input/editor/editor.rb
|
356
|
+
- lib/vedeu/input/editor/insert.rb
|
353
357
|
- lib/vedeu/input/editor/line.rb
|
354
358
|
- lib/vedeu/input/editor/lines.rb
|
355
|
-
- lib/vedeu/input/editor/virtual_cursor.rb
|
356
359
|
- lib/vedeu/input/input.rb
|
357
360
|
- lib/vedeu/input/input_translator.rb
|
358
361
|
- lib/vedeu/input/key.rb
|
@@ -473,10 +476,10 @@ files:
|
|
473
476
|
- test/lib/vedeu/colours/background_test.rb
|
474
477
|
- test/lib/vedeu/colours/backgrounds_test.rb
|
475
478
|
- test/lib/vedeu/colours/colour_test.rb
|
476
|
-
- test/lib/vedeu/colours/colour_translator_test.rb
|
477
|
-
- test/lib/vedeu/colours/colours_test.rb
|
478
479
|
- test/lib/vedeu/colours/foreground_test.rb
|
479
480
|
- test/lib/vedeu/colours/foregrounds_test.rb
|
481
|
+
- test/lib/vedeu/colours/repository_test.rb
|
482
|
+
- test/lib/vedeu/colours/translator_test.rb
|
480
483
|
- test/lib/vedeu/common_test.rb
|
481
484
|
- test/lib/vedeu/configuration/api_test.rb
|
482
485
|
- test/lib/vedeu/configuration/cli_test.rb
|
@@ -509,10 +512,10 @@ files:
|
|
509
512
|
- test/lib/vedeu/esc/borders_test.rb
|
510
513
|
- test/lib/vedeu/esc/colours_test.rb
|
511
514
|
- test/lib/vedeu/esc/esc_test.rb
|
512
|
-
- test/lib/vedeu/events/
|
513
|
-
- test/lib/vedeu/events/
|
515
|
+
- test/lib/vedeu/events/aliases_test.rb
|
516
|
+
- test/lib/vedeu/events/collection_test.rb
|
514
517
|
- test/lib/vedeu/events/event_test.rb
|
515
|
-
- test/lib/vedeu/events/
|
518
|
+
- test/lib/vedeu/events/repository_test.rb
|
516
519
|
- test/lib/vedeu/events/trigger_test.rb
|
517
520
|
- test/lib/vedeu/exceptions_test.rb
|
518
521
|
- test/lib/vedeu/geometry/area_test.rb
|
@@ -524,12 +527,13 @@ files:
|
|
524
527
|
- test/lib/vedeu/geometry/position_test.rb
|
525
528
|
- test/lib/vedeu/input/editor/capture_test.rb
|
526
529
|
- test/lib/vedeu/input/editor/cropper_test.rb
|
530
|
+
- test/lib/vedeu/input/editor/cursor_test.rb
|
527
531
|
- test/lib/vedeu/input/editor/document_test.rb
|
528
532
|
- test/lib/vedeu/input/editor/documents_test.rb
|
529
533
|
- test/lib/vedeu/input/editor/editor_test.rb
|
534
|
+
- test/lib/vedeu/input/editor/insert_test.rb
|
530
535
|
- test/lib/vedeu/input/editor/line_test.rb
|
531
536
|
- test/lib/vedeu/input/editor/lines_test.rb
|
532
|
-
- test/lib/vedeu/input/editor/virtual_cursor_test.rb
|
533
537
|
- test/lib/vedeu/input/input_test.rb
|
534
538
|
- test/lib/vedeu/input/input_translator_test.rb
|
535
539
|
- test/lib/vedeu/input/key_test.rb
|
@@ -678,10 +682,10 @@ test_files:
|
|
678
682
|
- test/lib/vedeu/colours/background_test.rb
|
679
683
|
- test/lib/vedeu/colours/backgrounds_test.rb
|
680
684
|
- test/lib/vedeu/colours/colour_test.rb
|
681
|
-
- test/lib/vedeu/colours/colour_translator_test.rb
|
682
|
-
- test/lib/vedeu/colours/colours_test.rb
|
683
685
|
- test/lib/vedeu/colours/foreground_test.rb
|
684
686
|
- test/lib/vedeu/colours/foregrounds_test.rb
|
687
|
+
- test/lib/vedeu/colours/repository_test.rb
|
688
|
+
- test/lib/vedeu/colours/translator_test.rb
|
685
689
|
- test/lib/vedeu/common_test.rb
|
686
690
|
- test/lib/vedeu/configuration/api_test.rb
|
687
691
|
- test/lib/vedeu/configuration/cli_test.rb
|
@@ -714,10 +718,10 @@ test_files:
|
|
714
718
|
- test/lib/vedeu/esc/borders_test.rb
|
715
719
|
- test/lib/vedeu/esc/colours_test.rb
|
716
720
|
- test/lib/vedeu/esc/esc_test.rb
|
717
|
-
- test/lib/vedeu/events/
|
718
|
-
- test/lib/vedeu/events/
|
721
|
+
- test/lib/vedeu/events/aliases_test.rb
|
722
|
+
- test/lib/vedeu/events/collection_test.rb
|
719
723
|
- test/lib/vedeu/events/event_test.rb
|
720
|
-
- test/lib/vedeu/events/
|
724
|
+
- test/lib/vedeu/events/repository_test.rb
|
721
725
|
- test/lib/vedeu/events/trigger_test.rb
|
722
726
|
- test/lib/vedeu/exceptions_test.rb
|
723
727
|
- test/lib/vedeu/geometry/area_test.rb
|
@@ -729,12 +733,13 @@ test_files:
|
|
729
733
|
- test/lib/vedeu/geometry/position_test.rb
|
730
734
|
- test/lib/vedeu/input/editor/capture_test.rb
|
731
735
|
- test/lib/vedeu/input/editor/cropper_test.rb
|
736
|
+
- test/lib/vedeu/input/editor/cursor_test.rb
|
732
737
|
- test/lib/vedeu/input/editor/document_test.rb
|
733
738
|
- test/lib/vedeu/input/editor/documents_test.rb
|
734
739
|
- test/lib/vedeu/input/editor/editor_test.rb
|
740
|
+
- test/lib/vedeu/input/editor/insert_test.rb
|
735
741
|
- test/lib/vedeu/input/editor/line_test.rb
|
736
742
|
- test/lib/vedeu/input/editor/lines_test.rb
|
737
|
-
- test/lib/vedeu/input/editor/virtual_cursor_test.rb
|
738
743
|
- test/lib/vedeu/input/input_test.rb
|
739
744
|
- test/lib/vedeu/input/input_translator_test.rb
|
740
745
|
- test/lib/vedeu/input/key_test.rb
|
@@ -1,260 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
# Convert a CSS/HTML colour string into a terminal escape sequence.
|
4
|
-
#
|
5
|
-
# If provided with an empty value or a string it cannot convert, it will
|
6
|
-
# return an empty string.
|
7
|
-
#
|
8
|
-
# When provided with a named colour, uses the terminal's value for that
|
9
|
-
# colour. If a theme is being used with the terminal, which overrides the
|
10
|
-
# defaults, then the theme's colour will be used. The recognised names are:
|
11
|
-
# :black, :red, :green, :yellow, :blue, :magenta, :cyan, :white, :default.
|
12
|
-
#
|
13
|
-
# When a number between 0 and 255 is provided, Vedeu will use the terminal
|
14
|
-
# colour corresponding with that colour.
|
15
|
-
#
|
16
|
-
# Finally, when provided a CSS/HTML colour string e.g. '#ff0000', Vedeu will
|
17
|
-
# translate that to the 8-bit escape sequence or when you have a capable
|
18
|
-
# terminal and the `TERM=xterm-truecolor` environment variable set,
|
19
|
-
# a 24-bit representation.
|
20
|
-
#
|
21
|
-
# @todo More documentation required (create a fancy chart!)
|
22
|
-
#
|
23
|
-
class ColourTranslator
|
24
|
-
|
25
|
-
# @!attribute [r] colour
|
26
|
-
# @return [String]
|
27
|
-
attr_reader :colour
|
28
|
-
alias_method :value, :colour
|
29
|
-
|
30
|
-
# Produces new objects of the correct class from the value, ignores objects
|
31
|
-
# that have already been coerced.
|
32
|
-
#
|
33
|
-
# @param value [Object|NilClass]
|
34
|
-
# @return [Object]
|
35
|
-
def self.coerce(value)
|
36
|
-
if value.is_a?(self)
|
37
|
-
value
|
38
|
-
|
39
|
-
else
|
40
|
-
new(value)
|
41
|
-
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# Return a new instance of Vedeu::ColourTranslator.
|
46
|
-
#
|
47
|
-
# @param colour [Fixnum|String|Symbol]
|
48
|
-
# @return [Vedeu::ColourTranslator]
|
49
|
-
def initialize(colour = '')
|
50
|
-
@colour = colour || ''
|
51
|
-
end
|
52
|
-
|
53
|
-
# @return [Boolean]
|
54
|
-
def empty?
|
55
|
-
colour.nil? || colour.to_s.empty?
|
56
|
-
end
|
57
|
-
|
58
|
-
# An object is equal when its values are the same.
|
59
|
-
#
|
60
|
-
# @param other [Vedeu::Views::Char]
|
61
|
-
# @return [Boolean]
|
62
|
-
def eql?(other)
|
63
|
-
self.class == other.class && colour == other.colour
|
64
|
-
end
|
65
|
-
alias_method :==, :eql?
|
66
|
-
|
67
|
-
# @return [String]
|
68
|
-
# @see Vedeu::ColourTranslator
|
69
|
-
def escape_sequence
|
70
|
-
if empty?
|
71
|
-
''
|
72
|
-
|
73
|
-
elsif registered?(colour)
|
74
|
-
retrieve(colour)
|
75
|
-
|
76
|
-
elsif rgb?
|
77
|
-
rgb
|
78
|
-
|
79
|
-
elsif numbered?
|
80
|
-
numbered
|
81
|
-
|
82
|
-
elsif named?
|
83
|
-
named
|
84
|
-
|
85
|
-
else
|
86
|
-
''
|
87
|
-
|
88
|
-
end
|
89
|
-
end
|
90
|
-
alias_method :to_s, :escape_sequence
|
91
|
-
alias_method :to_str, :escape_sequence
|
92
|
-
|
93
|
-
# @return [String]
|
94
|
-
def to_html
|
95
|
-
return colour if rgb?
|
96
|
-
|
97
|
-
''
|
98
|
-
end
|
99
|
-
|
100
|
-
private
|
101
|
-
|
102
|
-
# Retrieves the escape sequence for the HTML/CSS colour code.
|
103
|
-
#
|
104
|
-
# @param colour [String]
|
105
|
-
# @return [String]
|
106
|
-
def retrieve(colour)
|
107
|
-
repository.retrieve(colour)
|
108
|
-
end
|
109
|
-
|
110
|
-
# Registers a HTML/CSS colour code and escape sequence to reduce processing.
|
111
|
-
#
|
112
|
-
# @param colour [String] A HTML/CSS colour code.
|
113
|
-
# @param escape_sequence [String] The HTML/CSS colour code as an escape
|
114
|
-
# sequence.
|
115
|
-
# @return [String]
|
116
|
-
def register(colour, escape_sequence)
|
117
|
-
repository.register(colour, escape_sequence)
|
118
|
-
end
|
119
|
-
|
120
|
-
# Returns a boolean indicating the HTML/CSS colour code has been registered.
|
121
|
-
#
|
122
|
-
# @param colour [String]
|
123
|
-
# @return [Boolean]
|
124
|
-
def registered?(colour)
|
125
|
-
repository.registered?(colour)
|
126
|
-
end
|
127
|
-
|
128
|
-
# @return [Boolean]
|
129
|
-
def named?
|
130
|
-
colour.is_a?(Symbol) && valid_name?
|
131
|
-
end
|
132
|
-
|
133
|
-
# Returns an escape sequence for a named background colour.
|
134
|
-
#
|
135
|
-
# @note
|
136
|
-
# Valid names can be found at {Vedeu::Esc#codes}
|
137
|
-
#
|
138
|
-
# @return [String]
|
139
|
-
def named
|
140
|
-
"\e[#{named_codes}m"
|
141
|
-
end
|
142
|
-
|
143
|
-
# Returns a boolean indicating whether the colour provided is a valid named
|
144
|
-
# colour.
|
145
|
-
#
|
146
|
-
# @return [Boolean]
|
147
|
-
def valid_name?
|
148
|
-
Vedeu::Esc.codes.keys.include?(colour)
|
149
|
-
end
|
150
|
-
|
151
|
-
# Returns a boolean indicating whether the colour provided is a terminal
|
152
|
-
# numbered colour.
|
153
|
-
#
|
154
|
-
# @return [Boolean]
|
155
|
-
def numbered?
|
156
|
-
colour.is_a?(Fixnum) && valid_range?
|
157
|
-
end
|
158
|
-
|
159
|
-
# Returns an escape sequence.
|
160
|
-
#
|
161
|
-
# @return [String]
|
162
|
-
def numbered
|
163
|
-
"#{numbered_prefix}#{css_to_numbered}m"
|
164
|
-
end
|
165
|
-
|
166
|
-
# Returns a boolean indicated whether the colour is a valid HTML/CSS colour.
|
167
|
-
#
|
168
|
-
# @return [Boolean]
|
169
|
-
def rgb?
|
170
|
-
return true if colour =~ /^#([A-Fa-f0-9]{6})$/
|
171
|
-
|
172
|
-
false
|
173
|
-
end
|
174
|
-
|
175
|
-
# Returns an escape sequence.
|
176
|
-
#
|
177
|
-
# @return [String]
|
178
|
-
def rgb
|
179
|
-
if Vedeu::Configuration.colour_mode == 16_777_216
|
180
|
-
register(colour, format(rgb_prefix, *css_to_rgb))
|
181
|
-
|
182
|
-
else
|
183
|
-
numbered
|
184
|
-
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
# Returns a boolean indicating whether the numbered colour is within the
|
189
|
-
# range of valid terminal numbered colours.
|
190
|
-
#
|
191
|
-
# @return [Boolean]
|
192
|
-
def valid_range?
|
193
|
-
colour >= 0 && colour <= 255
|
194
|
-
end
|
195
|
-
|
196
|
-
# Returns a collection of converted HTML/CSS octets as their decimal
|
197
|
-
# equivalents.
|
198
|
-
#
|
199
|
-
# @example
|
200
|
-
# colour = '#aadd55'
|
201
|
-
# css_to_rgb # => [170, 221, 85]
|
202
|
-
#
|
203
|
-
# @return [Array]
|
204
|
-
def css_to_rgb
|
205
|
-
[
|
206
|
-
colour[1..2].to_i(16),
|
207
|
-
colour[3..4].to_i(16),
|
208
|
-
colour[5..6].to_i(16),
|
209
|
-
]
|
210
|
-
end
|
211
|
-
|
212
|
-
# @return [Fixnum]
|
213
|
-
def css_to_numbered
|
214
|
-
if rgb?
|
215
|
-
[16, red, green, blue].inject(:+)
|
216
|
-
|
217
|
-
elsif numbered?
|
218
|
-
colour
|
219
|
-
|
220
|
-
end
|
221
|
-
end
|
222
|
-
|
223
|
-
# Takes the red component of {#css_to_rgb} and converts to the correct value
|
224
|
-
# for setting the terminal red value.
|
225
|
-
#
|
226
|
-
# @return [Fixnum]
|
227
|
-
def red
|
228
|
-
(css_to_rgb[0] / 51) * 36
|
229
|
-
end
|
230
|
-
|
231
|
-
# Takes the green component of {#css_to_rgb} and converts to the correct
|
232
|
-
# value for setting the terminal green value.
|
233
|
-
#
|
234
|
-
# @return [Fixnum]
|
235
|
-
def green
|
236
|
-
(css_to_rgb[1] / 51) * 6
|
237
|
-
end
|
238
|
-
|
239
|
-
# Takes the blue component of {#css_to_rgb} and converts to the correct
|
240
|
-
# value for setting the terminal blue value.
|
241
|
-
#
|
242
|
-
# @return [Fixnum]
|
243
|
-
def blue
|
244
|
-
(css_to_rgb[2] / 51) * 1
|
245
|
-
end
|
246
|
-
|
247
|
-
# @raise [Vedeu::NotImplemented] Subclasses of this class must implement
|
248
|
-
# this method.
|
249
|
-
# @return [Vedeu::NotImplemented]
|
250
|
-
def not_implemented
|
251
|
-
fail Vedeu::NotImplemented, 'Subclasses implement this.'
|
252
|
-
end
|
253
|
-
alias_method :named_codes, :not_implemented
|
254
|
-
alias_method :numbered_prefix, :not_implemented
|
255
|
-
alias_method :repository, :not_implemented
|
256
|
-
alias_method :rgb_prefix, :not_implemented
|
257
|
-
|
258
|
-
end # ColourTranslator
|
259
|
-
|
260
|
-
end # Vedeu
|
@@ -1,66 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
# Allows the storing of HTML/CSS colours and their respective escape
|
4
|
-
# sequences.
|
5
|
-
#
|
6
|
-
class Colours
|
7
|
-
|
8
|
-
# @!attribute [r] storage
|
9
|
-
# @return [Hash<String => String>]
|
10
|
-
attr_reader :storage
|
11
|
-
|
12
|
-
# Returns a new instance of Vedeu::Colours.
|
13
|
-
#
|
14
|
-
# @return [Vedeu::Colours]
|
15
|
-
def initialize
|
16
|
-
@storage = {}
|
17
|
-
end
|
18
|
-
|
19
|
-
# Registers a colour with respective escape sequence.
|
20
|
-
#
|
21
|
-
# @return [String]
|
22
|
-
def register(colour, escape_sequence)
|
23
|
-
storage.store(colour, escape_sequence)
|
24
|
-
end
|
25
|
-
|
26
|
-
# Returns a boolean indicating whether the colour has been registered.
|
27
|
-
#
|
28
|
-
# @param colour [String]
|
29
|
-
# @return [Boolean]
|
30
|
-
def registered?(colour)
|
31
|
-
return false unless colour
|
32
|
-
|
33
|
-
storage.key?(colour)
|
34
|
-
end
|
35
|
-
|
36
|
-
# Removes all stored colours.
|
37
|
-
#
|
38
|
-
# @return [Hash]
|
39
|
-
def reset!
|
40
|
-
storage.clear
|
41
|
-
end
|
42
|
-
|
43
|
-
# Retrieves the escape sequence of a registered colour.
|
44
|
-
#
|
45
|
-
# @return [String]
|
46
|
-
def retrieve(colour)
|
47
|
-
storage.fetch(colour, '')
|
48
|
-
end
|
49
|
-
|
50
|
-
# Retrieves the escape sequence of a registered colour, or registers the
|
51
|
-
# colour with its respective escape sequence.
|
52
|
-
#
|
53
|
-
# @return [String]
|
54
|
-
def retrieve_or_register(colour, escape_sequence)
|
55
|
-
if registered?(colour)
|
56
|
-
retrieve(colour)
|
57
|
-
|
58
|
-
else
|
59
|
-
register(colour, escape_sequence)
|
60
|
-
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
end # Colours
|
65
|
-
|
66
|
-
end # Vedeu
|