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.
Files changed (138) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vedeu/all.rb +2 -13
  3. data/lib/vedeu/api.rb +9 -9
  4. data/lib/vedeu/application/application_view.rb +3 -5
  5. data/lib/vedeu/bindings/bindings.rb +5 -1
  6. data/lib/vedeu/bindings/focus.rb +0 -5
  7. data/lib/vedeu/bindings/refresh.rb +0 -5
  8. data/lib/vedeu/bindings/system.rb +1 -6
  9. data/lib/vedeu/colours/all.rb +17 -0
  10. data/lib/vedeu/colours/background.rb +32 -28
  11. data/lib/vedeu/colours/backgrounds.rb +13 -9
  12. data/lib/vedeu/colours/colour.rb +106 -102
  13. data/lib/vedeu/colours/foreground.rb +32 -28
  14. data/lib/vedeu/colours/foregrounds.rb +13 -9
  15. data/lib/vedeu/colours/repository.rb +70 -0
  16. data/lib/vedeu/colours/translator.rb +267 -0
  17. data/lib/vedeu/configuration/api.rb +10 -7
  18. data/lib/vedeu/configuration/configuration.rb +2 -1
  19. data/lib/vedeu/dsl/border.rb +15 -2
  20. data/lib/vedeu/dsl/composition.rb +6 -4
  21. data/lib/vedeu/dsl/geometry.rb +14 -7
  22. data/lib/vedeu/dsl/group.rb +2 -2
  23. data/lib/vedeu/dsl/interface.rb +5 -3
  24. data/lib/vedeu/dsl/keymap.rb +9 -7
  25. data/lib/vedeu/dsl/line.rb +7 -4
  26. data/lib/vedeu/dsl/menu.rb +3 -0
  27. data/lib/vedeu/dsl/presentation.rb +20 -10
  28. data/lib/vedeu/dsl/shared.rb +4 -4
  29. data/lib/vedeu/dsl/stream.rb +2 -2
  30. data/lib/vedeu/dsl/text.rb +11 -5
  31. data/lib/vedeu/dsl/use.rb +2 -2
  32. data/lib/vedeu/dsl/view.rb +8 -6
  33. data/lib/vedeu/events/aliases.rb +91 -0
  34. data/lib/vedeu/events/all.rb +15 -0
  35. data/lib/vedeu/events/collection.rb +13 -0
  36. data/lib/vedeu/events/event.rb +244 -239
  37. data/lib/vedeu/events/repository.rb +30 -0
  38. data/lib/vedeu/events/trigger.rb +68 -64
  39. data/lib/vedeu/exceptions.rb +65 -54
  40. data/lib/vedeu/geometry/coordinate.rb +3 -1
  41. data/lib/vedeu/geometry/grid.rb +2 -4
  42. data/lib/vedeu/input/editor/all.rb +2 -1
  43. data/lib/vedeu/input/editor/{virtual_cursor.rb → cursor.rb} +10 -10
  44. data/lib/vedeu/input/editor/document.rb +7 -7
  45. data/lib/vedeu/input/editor/insert.rb +70 -0
  46. data/lib/vedeu/input/editor/line.rb +4 -16
  47. data/lib/vedeu/input/editor/lines.rb +2 -16
  48. data/lib/vedeu/input/input_translator.rb +2 -2
  49. data/lib/vedeu/input/key.rb +2 -2
  50. data/lib/vedeu/internal_api.rb +6 -6
  51. data/lib/vedeu/log/lockless_log_device.rb +0 -74
  52. data/lib/vedeu/models/focus.rb +3 -3
  53. data/lib/vedeu/models/interface.rb +3 -3
  54. data/lib/vedeu/models/menu.rb +2 -2
  55. data/lib/vedeu/models/views/char.rb +1 -1
  56. data/lib/vedeu/models/views/composition.rb +1 -1
  57. data/lib/vedeu/models/views/line.rb +1 -1
  58. data/lib/vedeu/models/views/stream.rb +1 -1
  59. data/lib/vedeu/models/views/view.rb +6 -7
  60. data/lib/vedeu/output/presentation/colour.rb +23 -21
  61. data/lib/vedeu/output/renderers/renderer_options.rb +2 -4
  62. data/lib/vedeu/output/text.rb +1 -1
  63. data/lib/vedeu/output/wordwrap.rb +18 -7
  64. data/lib/vedeu/plugins/plugin.rb +2 -2
  65. data/lib/vedeu/refresh/refresh_buffer.rb +3 -3
  66. data/lib/vedeu/refresh/refresh_group.rb +3 -3
  67. data/lib/vedeu/repositories/repository.rb +7 -6
  68. data/lib/vedeu/runtime/application.rb +1 -1
  69. data/lib/vedeu/runtime/main_loop.rb +3 -3
  70. data/lib/vedeu/runtime/router.rb +14 -11
  71. data/lib/vedeu/templating/helpers.rb +5 -5
  72. data/lib/vedeu/templating/template.rb +4 -4
  73. data/lib/vedeu/templating/view_template.rb +1 -1
  74. data/lib/vedeu/terminal/terminal.rb +2 -2
  75. data/lib/vedeu/version.rb +1 -1
  76. data/test/lib/vedeu/application/application_view_test.rb +1 -1
  77. data/test/lib/vedeu/colours/background_test.rb +93 -89
  78. data/test/lib/vedeu/colours/backgrounds_test.rb +11 -7
  79. data/test/lib/vedeu/colours/colour_test.rb +155 -151
  80. data/test/lib/vedeu/colours/foreground_test.rb +93 -89
  81. data/test/lib/vedeu/colours/foregrounds_test.rb +11 -7
  82. data/test/lib/vedeu/colours/repository_test.rb +97 -0
  83. data/test/lib/vedeu/colours/translator_test.rb +173 -0
  84. data/test/lib/vedeu/configuration/api_test.rb +4 -4
  85. data/test/lib/vedeu/dsl/border_test.rb +12 -0
  86. data/test/lib/vedeu/dsl/composition_test.rb +3 -3
  87. data/test/lib/vedeu/dsl/geometry_test.rb +11 -0
  88. data/test/lib/vedeu/dsl/group_test.rb +2 -2
  89. data/test/lib/vedeu/dsl/interface_test.rb +4 -4
  90. data/test/lib/vedeu/dsl/keymap_test.rb +8 -4
  91. data/test/lib/vedeu/dsl/line_test.rb +6 -3
  92. data/test/lib/vedeu/dsl/menu_test.rb +6 -0
  93. data/test/lib/vedeu/dsl/presentation_test.rb +16 -3
  94. data/test/lib/vedeu/dsl/stream_test.rb +1 -1
  95. data/test/lib/vedeu/dsl/text_test.rb +7 -0
  96. data/test/lib/vedeu/dsl/view_test.rb +3 -3
  97. data/test/lib/vedeu/events/aliases_test.rb +144 -0
  98. data/test/lib/vedeu/events/collection_test.rb +22 -0
  99. data/test/lib/vedeu/events/event_test.rb +84 -80
  100. data/test/lib/vedeu/events/repository_test.rb +28 -0
  101. data/test/lib/vedeu/events/trigger_test.rb +41 -37
  102. data/test/lib/vedeu/geometry/grid_test.rb +4 -4
  103. data/test/lib/vedeu/input/editor/{virtual_cursor_test.rb → cursor_test.rb} +3 -3
  104. data/test/lib/vedeu/input/editor/insert_test.rb +36 -0
  105. data/test/lib/vedeu/input/key_test.rb +1 -1
  106. data/test/lib/vedeu/models/cell_test.rb +1 -1
  107. data/test/lib/vedeu/models/focus_test.rb +4 -2
  108. data/test/lib/vedeu/models/menu_test.rb +1 -1
  109. data/test/lib/vedeu/models/views/char_test.rb +8 -4
  110. data/test/lib/vedeu/models/views/line_test.rb +4 -4
  111. data/test/lib/vedeu/models/views/stream_test.rb +3 -3
  112. data/test/lib/vedeu/models/views/view_test.rb +1 -1
  113. data/test/lib/vedeu/output/html_char_test.rb +4 -2
  114. data/test/lib/vedeu/output/presentation/colour_test.rb +5 -5
  115. data/test/lib/vedeu/output/presentation_test.rb +4 -4
  116. data/test/lib/vedeu/output/renderers/json_test.rb +4 -2
  117. data/test/lib/vedeu/plugins/plugin_test.rb +1 -1
  118. data/test/lib/vedeu/refresh/refresh_buffer_test.rb +1 -1
  119. data/test/lib/vedeu/refresh/refresh_group_test.rb +1 -1
  120. data/test/lib/vedeu/repositories/repository_test.rb +2 -2
  121. data/test/lib/vedeu/runtime/router_test.rb +6 -6
  122. data/test/lib/vedeu/templating/decoder_test.rb +2 -3
  123. data/test/lib/vedeu/templating/encoder_test.rb +2 -3
  124. data/test/lib/vedeu/templating/helpers_test.rb +6 -6
  125. data/test/lib/vedeu/templating/template_test.rb +2 -2
  126. data/test/lib/vedeu/templating/view_template_test.rb +13 -7
  127. data/test/lib/vedeu/terminal/terminal_test.rb +3 -3
  128. metadata +24 -19
  129. data/lib/vedeu/colours/colour_translator.rb +0 -260
  130. data/lib/vedeu/colours/colours.rb +0 -66
  131. data/lib/vedeu/events/event_aliases.rb +0 -87
  132. data/lib/vedeu/events/event_collection.rb +0 -9
  133. data/lib/vedeu/events/events.rb +0 -26
  134. data/test/lib/vedeu/colours/colour_translator_test.rb +0 -169
  135. data/test/lib/vedeu/colours/colours_test.rb +0 -93
  136. data/test/lib/vedeu/events/event_aliases_test.rb +0 -140
  137. data/test/lib/vedeu/events/event_collection_test.rb +0 -18
  138. data/test/lib/vedeu/events/events_test.rb +0 -24
@@ -2,10 +2,9 @@ module Vedeu
2
2
 
3
3
  # Provides shared functionality to Vedeu::Renderer classes.
4
4
  #
5
+ # :nocov:
5
6
  module RendererOptions
6
7
 
7
- # :nocov:
8
-
9
8
  private
10
9
 
11
10
  # Combines the options provided at instantiation with the default values.
@@ -22,8 +21,7 @@ module Vedeu
22
21
  {}
23
22
  end
24
23
 
25
- # :nocov:
26
-
27
24
  end # RendererOptions
25
+ # :nocov:
28
26
 
29
27
  end # Vedeu
@@ -86,7 +86,7 @@ module Vedeu
86
86
  # @return [void]
87
87
  def colour
88
88
  if options[:colour] || options[:background] || options[:foreground]
89
- Vedeu::Colour.coerce(options)
89
+ Vedeu::Colours::Colour.coerce(options)
90
90
 
91
91
  else
92
92
  model.colour
@@ -4,7 +4,7 @@ module Vedeu
4
4
  #
5
5
  class Wordwrap
6
6
 
7
- # @see {Vedeu::Wordwrap#initialize}
7
+ # @see Vedeu::Wordwrap#initialize
8
8
  def self.for(text, options = {})
9
9
  new(text, options).content
10
10
  end
@@ -13,12 +13,9 @@ module Vedeu
13
13
  #
14
14
  # @param text [String]
15
15
  # @param options [Hash]
16
- # @option options ellipsis [String] For when using mode `:prune`.
17
- # @option options mode [Symbol] One of :default, :prune or :wrap;
18
- # :default = Renders the content as is.
19
- # :prune = Discards the remainder of the content line after width.
20
- # :wrap = Forces the content on to a new line after width.
21
- # @option options width [Fixnum] The width to prune or wrap to.
16
+ # @option options ellipsis [String] See {#ellipsis}.
17
+ # @option options mode [Symbol] See {#mode}.
18
+ # @option options width [Fixnum] See {#width}.
22
19
  # @return [Vedeu::Wordwrap]
23
20
  def initialize(text, options = {})
24
21
  @text = text
@@ -106,6 +103,8 @@ module Vedeu
106
103
  Vedeu::Views::Lines.new(line_objects)
107
104
  end
108
105
 
106
+ # Returns the text as an array of lines, split on '\n'.
107
+ #
109
108
  # @return [Array<String>]
110
109
  def split_lines
111
110
  text.split(/\n/)
@@ -123,27 +122,39 @@ module Vedeu
123
122
  end
124
123
  end
125
124
 
125
+ # Returns the string pruned.
126
+ #
126
127
  # @param string [String]
127
128
  # @return [String]
128
129
  def prune_string(string)
129
130
  string.chomp.slice(0..pruned_width)
130
131
  end
131
132
 
133
+ # Returns the width of the string minus the ellipsis.
134
+ #
132
135
  # @return [Fixnum]
133
136
  def pruned_width
134
137
  width - ellipsis.size
135
138
  end
136
139
 
140
+ # For when using mode `:prune`, by default, provides '...'.
141
+ #
137
142
  # @return [String]
138
143
  def ellipsis
139
144
  options.fetch(:ellipsis)
140
145
  end
141
146
 
147
+ # Returns the word wrapping mode. One of :default, :prune or :wrap;
148
+ # :default = Renders the content as is.
149
+ # :prune = Discards the remainder of the content line after width.
150
+ # :wrap = Forces the content on to a new line after width.
142
151
  # @return [Symbol]
143
152
  def mode
144
153
  options.fetch(:mode)
145
154
  end
146
155
 
156
+ # Returns the width to prune or wrap to.
157
+ #
147
158
  # @return [Fixnum]
148
159
  def width
149
160
  options.fetch(:width)
@@ -40,10 +40,10 @@ module Vedeu
40
40
  begin
41
41
  require gem_name unless enabled?
42
42
  rescue LoadError => error
43
- raise Vedeu::VedeuError,
43
+ raise Vedeu::Error::Fatal,
44
44
  "Unable to load plugin #{gem_name} due to #{error}."
45
45
  rescue => error
46
- raise Vedeu::VedeuError,
46
+ raise Vedeu::Error::Fatal,
47
47
  "require '#{gem_name}' failed with #{error}."
48
48
  end
49
49
 
@@ -11,7 +11,7 @@ module Vedeu
11
11
 
12
12
  # @param name [String] The name of the interface to be refreshed using the
13
13
  # named buffer.
14
- # @return [Array|Vedeu::ModelNotFound]
14
+ # @return [Array|Vedeu::Error::ModelNotFound]
15
15
  def self.by_name(name)
16
16
  new(name).by_name
17
17
  end
@@ -39,12 +39,12 @@ module Vedeu
39
39
 
40
40
  private
41
41
 
42
- # @raise [Vedeu::MissingRequired] When the name is empty or nil.
42
+ # @raise [Vedeu::Error::MissingRequired] When the name is empty or nil.
43
43
  # @return [String]
44
44
  def buffer_name
45
45
  return name if present?(name)
46
46
 
47
- fail Vedeu::MissingRequired,
47
+ fail Vedeu::Error::MissingRequired,
48
48
  'Cannot refresh interface with an empty interface name.'
49
49
  end
50
50
 
@@ -14,7 +14,7 @@ module Vedeu
14
14
  include Vedeu::Common
15
15
 
16
16
  # @param name [String] The name of the group to be refreshed.
17
- # @return [Array|Vedeu::ModelNotFound] A collection of the names of
17
+ # @return [Array|Vedeu::Error::ModelNotFound] A collection of the names of
18
18
  # interfaces refreshed, or an exception when the group was not found.
19
19
  def self.by_name(name)
20
20
  new(name).by_name
@@ -45,12 +45,12 @@ module Vedeu
45
45
 
46
46
  private
47
47
 
48
- # @raise [Vedeu::MissingRequired] When the name is empty or nil.
48
+ # @raise [Vedeu::Error::MissingRequired] When the name is empty or nil.
49
49
  # @return [String]
50
50
  def group_name
51
51
  return name if present?(name)
52
52
 
53
- fail Vedeu::MissingRequired,
53
+ fail Vedeu::Error::MissingRequired,
54
54
  'Cannot refresh group with an empty group name.'
55
55
  end
56
56
 
@@ -89,11 +89,11 @@ module Vedeu
89
89
  # cannot be found.
90
90
  #
91
91
  # @param name [String]
92
- # @raise [Vedeu::ModelNotFound] When the model cannot be found with this
93
- # name.
92
+ # @raise [Vedeu::Error::ModelNotFound] When the model cannot be found with
93
+ # this name.
94
94
  # @return [Hash<String => Object>]
95
95
  def find!(name)
96
- find(name) || fail(Vedeu::ModelNotFound,
96
+ find(name) || fail(Vedeu::Error::ModelNotFound,
97
97
  "Cannot find model by name: '#{name}'")
98
98
  end
99
99
 
@@ -148,12 +148,13 @@ module Vedeu
148
148
  # Stores the model instance by name in the repository of the model.
149
149
  #
150
150
  # @param model [void] A model instance.
151
- # @raise [Vedeu::MissingRequired] When the name attribute is not defined.
151
+ # @raise [Vedeu::Error::MissingRequired] When the name attribute is not
152
+ # defined.
152
153
  # @return [void] The model instance which was stored.
153
154
  def store(model)
154
155
  unless present?(model.name)
155
- fail Vedeu::MissingRequired, "Cannot store model '#{model.class}' " \
156
- 'without a name attribute.'
156
+ fail Vedeu::Error::MissingRequired,
157
+ "Cannot store model '#{model.class}' without a name attribute."
157
158
  end
158
159
 
159
160
  log_store(model)
@@ -114,7 +114,7 @@ module Vedeu
114
114
  def run_many
115
115
  Vedeu::MainLoop.start! { yield }
116
116
 
117
- rescue Vedeu::ModeSwitch
117
+ rescue Vedeu::Error::ModeSwitch
118
118
  Vedeu::Terminal.switch_mode!
119
119
 
120
120
  Vedeu.trigger(:_drb_restart_)
@@ -24,7 +24,7 @@ module Vedeu
24
24
 
25
25
  safe_exit_point!
26
26
  end
27
- rescue Vedeu::VedeuInterrupt
27
+ rescue Vedeu::Error::Interrupt
28
28
  Vedeu.log(type: :info,
29
29
  message: 'Vedeu execution interrupted, exiting.')
30
30
  end
@@ -40,11 +40,11 @@ module Vedeu
40
40
  # :nocov:
41
41
  # Check the application has started and we wish to continue running.
42
42
  #
43
- # @raise [Vedeu::VedeuInterrupt] When we wish to terminate the running
43
+ # @raise [Vedeu::Error::Interrupt] When we wish to terminate the running
44
44
  # application.
45
45
  # @return [void]
46
46
  def safe_exit_point!
47
- fail Vedeu::VedeuInterrupt if @started && !@loop
47
+ fail Vedeu::Error::Interrupt if @started && !@loop
48
48
  end
49
49
  # :nocov:
50
50
 
@@ -13,11 +13,12 @@ module Vedeu
13
13
  #
14
14
  # @param controller [Symbol]
15
15
  # @param klass [String]
16
- # @raise [Vedeu::MissingRequired] When the controller name is not given.
16
+ # @raise [Vedeu::Error::MissingRequired] When the controller name is not
17
+ # given.
17
18
  # @return [void]
18
19
  def add_controller(controller, klass)
19
20
  unless present?(controller)
20
- fail Vedeu::MissingRequired,
21
+ fail Vedeu::Error::MissingRequired,
21
22
  'Cannot store controller without a name attribute.'
22
23
  end
23
24
 
@@ -40,8 +41,8 @@ module Vedeu
40
41
  #
41
42
  # @param controller [Symbol]
42
43
  # @param action [Symbol]
43
- # @raise [Vedeu::MissingRequired] When the controller name or action name is
44
- # not given.
44
+ # @raise [Vedeu::Error::MissingRequired] When the controller name or action
45
+ # name is not given.
45
46
  # @return [void]
46
47
  def add_action(controller, action)
47
48
  if present?(controller) && present?(action)
@@ -60,7 +61,7 @@ module Vedeu
60
61
  storage
61
62
 
62
63
  else
63
- fail Vedeu::MissingRequired,
64
+ fail Vedeu::Error::MissingRequired,
64
65
  'Cannot store action without a controller or name attribute.'
65
66
 
66
67
  end
@@ -75,7 +76,8 @@ module Vedeu
75
76
  # @param controller [Symbol]
76
77
  # @param action [Symbol]
77
78
  # @param args [void]
78
- # @raise [Vedeu::ModelNotFound] When the controller is not registered.
79
+ # @raise [Vedeu::Error::ModelNotFound] When the controller is not
80
+ # registered.
79
81
  # @return [void]
80
82
  def goto(controller, action, **args)
81
83
  Vedeu.log(type: :debug,
@@ -114,11 +116,12 @@ module Vedeu
114
116
  if registered?(controller)
115
117
  return true if storage[controller][:actions].include?(action)
116
118
 
117
- fail Vedeu::ActionNotFound,
119
+ fail Vedeu::Error::ActionNotFound,
118
120
  "#{action} is not registered for #{controller}."
119
121
 
120
122
  else
121
- fail Vedeu::ControllerNotFound, "#{controller} is not registered."
123
+ fail Vedeu::Error::ControllerNotFound,
124
+ "#{controller} is not registered."
122
125
 
123
126
  end
124
127
  end
@@ -138,15 +141,15 @@ module Vedeu
138
141
  # Fetch the class for the controller by name.
139
142
  #
140
143
  # @param controller [Symbol]
141
- # @raise [Vedeu::MissingRequired] When the given controller name does not
142
- # have a class defined.
144
+ # @raise [Vedeu::Error::MissingRequired] When the given controller name does
145
+ # not have a class defined.
143
146
  # @return [String]
144
147
  def klass_for(controller)
145
148
  if registered?(controller) && klass_defined?(controller)
146
149
  storage[controller][:klass]
147
150
 
148
151
  else
149
- fail Vedeu::MissingRequired,
152
+ fail Vedeu::Error::MissingRequired,
150
153
  "Cannot route to #{controller} as no class defined."
151
154
 
152
155
  end
@@ -9,7 +9,7 @@ module Vedeu
9
9
  # @param value [String] The HTML/CSS colour.
10
10
  # @param block [Proc]
11
11
  # @return [Vedeu::Views::Stream]
12
- # @raise [Vedeu::InvalidSyntax] The required block was not given.
12
+ # @raise [Vedeu::Error::InvalidSyntax] The required block was not given.
13
13
  def background(value, &block)
14
14
  define_stream(background: value, &block)
15
15
  end
@@ -20,7 +20,7 @@ module Vedeu
20
20
  # @option attributes background [String] The HTML/CSS background colour.
21
21
  # @param block [Proc]
22
22
  # @return [Vedeu::Views::Stream]
23
- # @raise [Vedeu::InvalidSyntax] The required block was not given.
23
+ # @raise [Vedeu::Error::InvalidSyntax] The required block was not given.
24
24
  def colour(attributes = {}, &block)
25
25
  define_stream(attributes, &block)
26
26
  end
@@ -28,7 +28,7 @@ module Vedeu
28
28
  # @param value [String] The HTML/CSS colour.
29
29
  # @param block [Proc]
30
30
  # @return [Vedeu::Views::Stream]
31
- # @raise [Vedeu::InvalidSyntax] The required block was not given.
31
+ # @raise [Vedeu::Error::InvalidSyntax] The required block was not given.
32
32
  def foreground(value, &block)
33
33
  define_stream(foreground: value, &block)
34
34
  end
@@ -45,11 +45,11 @@ module Vedeu
45
45
 
46
46
  # @see Vedeu::Templating::Helpers#colour
47
47
  def define_stream(attributes = {}, &block)
48
- fail Vedeu::InvalidSyntax, 'block not given' unless block_given?
48
+ fail Vedeu::Error::InvalidSyntax, 'block not given' unless block_given?
49
49
 
50
50
  encode(
51
51
  Vedeu::Views::Stream.build(
52
- colour: Vedeu::Colour.new(attributes),
52
+ colour: Vedeu::Colours::Colour.new(attributes),
53
53
  style: Vedeu::Style.new(attributes[:style]),
54
54
  value: block.call))
55
55
  end
@@ -47,15 +47,15 @@ module Vedeu
47
47
  File.read(path)
48
48
  end
49
49
 
50
- # @raise [Vedeu::MissingRequired] when the path is empty.
51
- # @raise [Vedeu::MissingRequired] when the path does not exist.
50
+ # @raise [Vedeu::Error::MissingRequired] When the path is empty or does
51
+ # not exist.
52
52
  # @return [String]
53
53
  def path
54
- fail Vedeu::MissingRequired,
54
+ fail Vedeu::Error::MissingRequired,
55
55
  'No path to template specified.' if @path.empty?
56
56
 
57
57
  unless File.exist?(@path)
58
- fail Vedeu::MissingRequired,
58
+ fail Vedeu::Error::MissingRequired,
59
59
  "Template file cannot be found. (#{@path})"
60
60
  end
61
61
 
@@ -51,7 +51,7 @@ module Vedeu
51
51
  # Return the interface colours if a name option is set, otherwise use the
52
52
  # default colours.
53
53
  #
54
- # @return [Vedeu::Colour|Hash<Symbol => Symbol>]
54
+ # @return [Vedeu::Colours::Colour|Hash<Symbol => Symbol>]
55
55
  def default_colour
56
56
  if options[:name]
57
57
  interface.colour
@@ -11,10 +11,10 @@ module Vedeu
11
11
  # Opens a terminal screen in either `raw` or `cooked` mode. On exit,
12
12
  # attempts to restore the screen. See {Vedeu::Terminal#restore_screen}.
13
13
  #
14
- # @raise [Vedeu::InvalidSyntax] The required block was not given.
14
+ # @raise [Vedeu::Error::InvalidSyntax] The required block was not given.
15
15
  # @return [Array]
16
16
  def open
17
- fail Vedeu::InvalidSyntax, 'block not given' unless block_given?
17
+ fail Vedeu::Error::InvalidSyntax, 'block not given' unless block_given?
18
18
 
19
19
  if raw_mode? || fake_mode?
20
20
  console.raw { initialize_screen(mode) { yield } }
data/lib/vedeu/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Vedeu
2
2
 
3
3
  # The current version of Vedeu.
4
- VERSION = '0.6.1'
4
+ VERSION = '0.6.2'
5
5
 
6
6
  end
@@ -43,7 +43,7 @@ module Vedeu
43
43
  describe '.render' do
44
44
  subject { described.render(params) }
45
45
 
46
- it { proc { subject }.must_raise(Vedeu::NotImplemented) }
46
+ it { proc { subject }.must_raise(Vedeu::Error::NotImplemented) }
47
47
  end
48
48
 
49
49
  describe '#render' do
@@ -2,124 +2,128 @@ require 'test_helper'
2
2
 
3
3
  module Vedeu
4
4
 
5
- describe Background do
5
+ module Colours
6
6
 
7
- let(:described) { Vedeu::Background }
8
- let(:instance) { described.new(colour) }
9
- let(:colour) {}
7
+ describe Background do
10
8
 
11
- before { Vedeu.background_colours.reset! }
9
+ let(:described) { Vedeu::Colours::Background }
10
+ let(:instance) { described.new(colour) }
11
+ let(:colour) {}
12
12
 
13
- describe '#escape_sequence' do
14
- subject { instance.escape_sequence }
13
+ before { Vedeu.background_colours.reset! }
15
14
 
16
- context 'when the colour is empty' do
17
- let(:colour) { '' }
15
+ describe '#escape_sequence' do
16
+ subject { instance.escape_sequence }
18
17
 
19
- it { subject.must_equal('') }
20
- end
18
+ context 'when the colour is empty' do
19
+ let(:colour) { '' }
20
+
21
+ it { subject.must_equal('') }
22
+ end
21
23
 
22
- context 'when the colour is named (3-bit / 8 colours)' do
23
- {
24
- red: "\e[41m",
25
- yellow: "\e[43m",
26
- magenta: "\e[45m",
27
- white: "\e[107m",
28
- default: "\e[49m",
29
- unknown: '',
30
- }.map do |colour, result|
31
- it "returns the correct escape sequence for #{colour}" do
32
- described.new(colour).escape_sequence.must_equal(result)
24
+ context 'when the colour is named (3-bit / 8 colours)' do
25
+ {
26
+ red: "\e[41m",
27
+ yellow: "\e[43m",
28
+ magenta: "\e[45m",
29
+ white: "\e[107m",
30
+ default: "\e[49m",
31
+ unknown: '',
32
+ }.map do |colour, result|
33
+ it "returns the correct escape sequence for #{colour}" do
34
+ described.new(colour).escape_sequence.must_equal(result)
35
+ end
33
36
  end
34
37
  end
35
- end
36
38
 
37
- context 'when the colour is numbered (8-bit / 256 colours)' do
38
- {
39
- 24 => "\e[48;5;24m",
40
- 56 => "\e[48;5;56m",
41
- 82 => "\e[48;5;82m",
42
- 118 => "\e[48;5;118m",
43
- 143 => "\e[48;5;143m",
44
- 219 => "\e[48;5;219m",
45
- -2 => '',
46
- 442 => ''
47
- }.map do |colour, result|
48
- it "returns the correct escape sequence for #{colour}" do
49
- described.new(colour).escape_sequence.must_equal(result)
39
+ context 'when the colour is numbered (8-bit / 256 colours)' do
40
+ {
41
+ 24 => "\e[48;5;24m",
42
+ 56 => "\e[48;5;56m",
43
+ 82 => "\e[48;5;82m",
44
+ 118 => "\e[48;5;118m",
45
+ 143 => "\e[48;5;143m",
46
+ 219 => "\e[48;5;219m",
47
+ -2 => '',
48
+ 442 => ''
49
+ }.map do |colour, result|
50
+ it "returns the correct escape sequence for #{colour}" do
51
+ described.new(colour).escape_sequence.must_equal(result)
52
+ end
50
53
  end
51
54
  end
52
- end
53
55
 
54
- context 'when the colour is a CSS value (8-bit / 256 colours)' do
55
- before { Configuration.stubs(:colour_mode).returns(8) }
56
-
57
- {
58
- '#5f0000' => "\e[48;5;52m",
59
- '#008700' => "\e[48;5;28m",
60
- '#0000d7' => "\e[48;5;20m",
61
- '#afafaf' => "\e[48;5;145m",
62
- '#afd700' => "\e[48;5;148m",
63
- '#af005f' => "\e[48;5;125m",
64
- '999999' => '',
65
- '#12121' => '',
66
- '#h11111' => '',
67
- }.map do |colour, result|
68
- it "returns the correct escape sequence for #{colour}" do
69
- described.new(colour).escape_sequence.must_equal(result)
56
+ context 'when the colour is a CSS value (8-bit / 256 colours)' do
57
+ before { Vedeu::Configuration.stubs(:colour_mode).returns(8) }
58
+
59
+ {
60
+ '#5f0000' => "\e[48;5;52m",
61
+ '#008700' => "\e[48;5;28m",
62
+ '#0000d7' => "\e[48;5;20m",
63
+ '#afafaf' => "\e[48;5;145m",
64
+ '#afd700' => "\e[48;5;148m",
65
+ '#af005f' => "\e[48;5;125m",
66
+ '999999' => '',
67
+ '#12121' => '',
68
+ '#h11111' => '',
69
+ }.map do |colour, result|
70
+ it "returns the correct escape sequence for #{colour}" do
71
+ described.new(colour).escape_sequence.must_equal(result)
72
+ end
70
73
  end
71
74
  end
72
- end
73
75
 
74
- context 'when the colour is a CSS value (24-bit / 16.8mil colours)' do
75
- {
76
- '#5f0000' => "\e[48;2;95;0;0m",
77
- '#008700' => "\e[48;2;0;135;0m",
78
- '#0000d7' => "\e[48;2;0;0;215m",
79
- '#afafaf' => "\e[48;2;175;175;175m",
80
- '#afd700' => "\e[48;2;175;215;0m",
81
- '#af005f' => "\e[48;2;175;0;95m",
82
- '999999' => '',
83
- '#12121' => '',
84
- '#h11111' => '',
85
- }.map do |colour, result|
86
- it "returns the correct escape sequence for #{colour}" do
87
- described.new(colour).escape_sequence.must_equal(result)
76
+ context 'when the colour is a CSS value (24-bit / 16.8mil colours)' do
77
+ {
78
+ '#5f0000' => "\e[48;2;95;0;0m",
79
+ '#008700' => "\e[48;2;0;135;0m",
80
+ '#0000d7' => "\e[48;2;0;0;215m",
81
+ '#afafaf' => "\e[48;2;175;175;175m",
82
+ '#afd700' => "\e[48;2;175;215;0m",
83
+ '#af005f' => "\e[48;2;175;0;95m",
84
+ '999999' => '',
85
+ '#12121' => '',
86
+ '#h11111' => '',
87
+ }.map do |colour, result|
88
+ it "returns the correct escape sequence for #{colour}" do
89
+ described.new(colour).escape_sequence.must_equal(result)
90
+ end
88
91
  end
89
92
  end
90
93
  end
91
- end
92
94
 
93
- describe '.to_html' do
94
- subject { instance.to_html }
95
+ describe '.to_html' do
96
+ subject { instance.to_html }
95
97
 
96
- context 'when the colour is empty' do
97
- let(:colour) {}
98
+ context 'when the colour is empty' do
99
+ let(:colour) {}
98
100
 
99
- it { subject.must_equal('') }
100
- end
101
+ it { subject.must_equal('') }
102
+ end
101
103
 
102
- context 'when the colour is named (3-bit / 8 colours)' do
103
- let(:colour) { :red }
104
+ context 'when the colour is named (3-bit / 8 colours)' do
105
+ let(:colour) { :red }
104
106
 
105
- it { subject.must_equal('') }
106
- end
107
+ it { subject.must_equal('') }
108
+ end
107
109
 
108
- context 'when the colour is numbered (8-bit / 256 colours)' do
109
- let(:colour) { 118 }
110
+ context 'when the colour is numbered (8-bit / 256 colours)' do
111
+ let(:colour) { 118 }
110
112
 
111
- it { subject.must_equal('') }
112
- end
113
+ it { subject.must_equal('') }
114
+ end
113
115
 
114
- context 'when the colour is a CSS value' do
115
- let(:colour) { '#afd700' }
116
+ context 'when the colour is a CSS value' do
117
+ let(:colour) { '#afd700' }
116
118
 
117
- it 'returns the colour as a CSS value' do
118
- subject.must_equal('#afd700')
119
+ it 'returns the colour as a CSS value' do
120
+ subject.must_equal('#afd700')
121
+ end
119
122
  end
120
123
  end
121
- end
122
124
 
123
- end # Background
125
+ end # Background
126
+
127
+ end # Colours
124
128
 
125
129
  end # Vedeu