vedeu 0.7.4 → 0.8.0

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 (277) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/docs/api.md +5 -1
  4. data/docs/borders.md +2 -26
  5. data/docs/dsl.md +4 -4
  6. data/docs/dsl_elements.md +100 -0
  7. data/docs/events/by_name/action.md +3 -0
  8. data/docs/events/by_name/cursor_hide.md +3 -0
  9. data/docs/events/by_name/cursor_reset.md +3 -0
  10. data/docs/events/by_name/cursor_show.md +3 -0
  11. data/docs/events/by_name/geometry_down.md +3 -0
  12. data/docs/events/by_name/geometry_left.md +3 -0
  13. data/docs/events/by_name/geometry_right.md +3 -0
  14. data/docs/events/by_name/geometry_up.md +3 -0
  15. data/docs/events/by_name/hide_view.md +3 -0
  16. data/docs/events/by_name/set_border_caption.md +13 -0
  17. data/docs/events/by_name/set_border_title.md +13 -0
  18. data/docs/events/by_name/show_view.md +3 -0
  19. data/docs/events/by_name/standalone.md +3 -0
  20. data/docs/events/by_name/toggle_view.md +3 -0
  21. data/docs/events/by_name/view_down.md +4 -0
  22. data/docs/events/by_name/view_left.md +4 -0
  23. data/docs/events/by_name/view_right.md +4 -0
  24. data/docs/events/by_name/view_up.md +4 -0
  25. data/examples/views/empty_template.rb +46 -0
  26. data/examples/views/expected/line.out +1 -0
  27. data/examples/views/expected/lines.out +1 -0
  28. data/examples/views/expected/lines_alignment.out +1 -0
  29. data/examples/views/line.rb +220 -0
  30. data/examples/views/lines.rb +281 -0
  31. data/examples/views/lines_alignment.rb +231 -0
  32. data/examples/views/lines_line_stream.rb +99 -0
  33. data/examples/views/lines_line_streams.rb +73 -0
  34. data/examples/views/lines_line_streams_stream.rb +83 -0
  35. data/examples/views/lines_line_streams_stream_stream.rb +53 -0
  36. data/examples/views/lines_streams.rb +50 -0
  37. data/examples/views/lines_streams_stream.rb +51 -0
  38. data/examples/views/runner.sh +27 -0
  39. data/lib/vedeu/all.rb +6 -2
  40. data/lib/vedeu/application/controller.rb +1 -1
  41. data/lib/vedeu/boolean.rb +35 -0
  42. data/lib/vedeu/borders/border.rb +3 -3
  43. data/lib/vedeu/borders/caption.rb +1 -1
  44. data/lib/vedeu/borders/dsl.rb +1 -20
  45. data/lib/vedeu/borders/title.rb +6 -8
  46. data/lib/vedeu/buffers/buffer.rb +2 -2
  47. data/lib/vedeu/buffers/refresh.rb +1 -1
  48. data/lib/vedeu/cells/border.rb +0 -11
  49. data/lib/vedeu/cells/empty.rb +4 -4
  50. data/lib/vedeu/{geometries/alignment → coercers}/alignment.rb +50 -53
  51. data/lib/vedeu/coercers/all.rb +16 -0
  52. data/lib/vedeu/coercers/colour.rb +78 -0
  53. data/lib/vedeu/coercers/colour_attributes.rb +122 -0
  54. data/lib/vedeu/coercers/horizontal_alignment.rb +28 -0
  55. data/lib/vedeu/coercers/vertical_alignment.rb +27 -0
  56. data/lib/vedeu/colours/all.rb +1 -0
  57. data/lib/vedeu/colours/background.rb +13 -2
  58. data/lib/vedeu/colours/colour.rb +16 -31
  59. data/lib/vedeu/colours/foreground.rb +13 -2
  60. data/lib/vedeu/colours/translator.rb +21 -59
  61. data/lib/vedeu/colours/validator.rb +84 -0
  62. data/lib/vedeu/common.rb +52 -0
  63. data/lib/vedeu/configuration/api.rb +4 -10
  64. data/lib/vedeu/configuration/configuration.rb +4 -4
  65. data/lib/vedeu/cursors/coordinate.rb +1 -1
  66. data/lib/vedeu/cursors/cursor.rb +1 -1
  67. data/lib/vedeu/cursors/dsl.rb +1 -28
  68. data/lib/vedeu/dsl/all.rb +7 -7
  69. data/lib/vedeu/dsl/attributes.rb +224 -0
  70. data/lib/vedeu/dsl/border.rb +127 -0
  71. data/lib/vedeu/dsl/cursors.rb +44 -0
  72. data/lib/vedeu/dsl/dsl.rb +9 -0
  73. data/lib/vedeu/dsl/elements.rb +335 -0
  74. data/lib/vedeu/dsl/geometry.rb +113 -0
  75. data/lib/vedeu/dsl/string/align.rb +127 -0
  76. data/lib/vedeu/dsl/string/all.rb +14 -0
  77. data/lib/vedeu/dsl/string/text.rb +107 -0
  78. data/lib/vedeu/dsl/string/truncate.rb +111 -0
  79. data/lib/vedeu/{output → dsl/string}/wordwrap.rb +10 -6
  80. data/lib/vedeu/dsl/view.rb +124 -248
  81. data/lib/vedeu/dsl/views.rb +244 -0
  82. data/lib/vedeu/editor/cursor.rb +1 -1
  83. data/lib/vedeu/editor/delete.rb +3 -1
  84. data/lib/vedeu/editor/insert.rb +22 -6
  85. data/lib/vedeu/editor/line.rb +15 -9
  86. data/lib/vedeu/editor/lines.rb +27 -18
  87. data/lib/vedeu/esc/actions.rb +73 -26
  88. data/lib/vedeu/esc/all.rb +2 -0
  89. data/lib/vedeu/esc/background.rb +219 -0
  90. data/lib/vedeu/esc/borders.rb +72 -26
  91. data/lib/vedeu/esc/colours.rb +26 -27
  92. data/lib/vedeu/esc/esc.rb +4 -4
  93. data/lib/vedeu/esc/foreground.rb +219 -0
  94. data/lib/vedeu/esc/mouse.rb +16 -13
  95. data/lib/vedeu/events/aliases.rb +2 -2
  96. data/lib/vedeu/events/event.rb +1 -1
  97. data/lib/vedeu/geometries/all.rb +0 -1
  98. data/lib/vedeu/geometries/area/dimension.rb +2 -2
  99. data/lib/vedeu/geometries/dsl/dsl.rb +3 -51
  100. data/lib/vedeu/geometries/dsl/validator.rb +4 -4
  101. data/lib/vedeu/geometries/geometry.rb +10 -10
  102. data/lib/vedeu/geometries/move.rb +4 -4
  103. data/lib/vedeu/groups/dsl.rb +1 -0
  104. data/lib/vedeu/groups/group.rb +1 -1
  105. data/lib/vedeu/input/all.rb +1 -0
  106. data/lib/vedeu/input/capture.rb +14 -10
  107. data/lib/vedeu/input/dsl.rb +20 -26
  108. data/lib/vedeu/input/key.rb +0 -6
  109. data/lib/vedeu/input/keymap.rb +4 -9
  110. data/lib/vedeu/input/keys.rb +13 -0
  111. data/lib/vedeu/input/mapper.rb +29 -14
  112. data/lib/vedeu/input/read.rb +4 -2
  113. data/lib/vedeu/interfaces/dsl.rb +23 -22
  114. data/lib/vedeu/interfaces/interface.rb +2 -2
  115. data/lib/vedeu/logging/debug.rb +33 -0
  116. data/lib/vedeu/logging/log.rb +42 -33
  117. data/lib/vedeu/menus/dsl.rb +7 -18
  118. data/lib/vedeu/menus/menu.rb +1 -1
  119. data/lib/vedeu/models/focus.rb +1 -1
  120. data/lib/vedeu/models/toggleable.rb +4 -4
  121. data/lib/vedeu/null/generic.rb +2 -2
  122. data/lib/vedeu/output/all.rb +0 -2
  123. data/lib/vedeu/output/compressor_cache.rb +1 -1
  124. data/lib/vedeu/output/output.rb +5 -20
  125. data/lib/vedeu/presentation/colour.rb +39 -7
  126. data/lib/vedeu/presentation/style.rb +25 -11
  127. data/lib/vedeu/renderers/html.rb +11 -11
  128. data/lib/vedeu/repositories/assemblage.rb +9 -0
  129. data/lib/vedeu/repositories/collection.rb +1 -0
  130. data/lib/vedeu/repositories/defaults.rb +4 -1
  131. data/lib/vedeu/repositories/model.rb +7 -37
  132. data/lib/vedeu/repositories/parent.rb +6 -6
  133. data/lib/vedeu/repositories/registerable.rb +16 -2
  134. data/lib/vedeu/repositories/repositories.rb +1 -1
  135. data/lib/vedeu/repositories/repository.rb +2 -12
  136. data/lib/vedeu/runtime/flags.rb +1 -1
  137. data/lib/vedeu/terminal/terminal.rb +7 -2
  138. data/lib/vedeu/version.rb +1 -1
  139. data/lib/vedeu/views/all.rb +4 -1
  140. data/lib/vedeu/views/char.rb +5 -4
  141. data/lib/vedeu/views/chars.rb +42 -0
  142. data/lib/vedeu/views/composition.rb +15 -30
  143. data/lib/vedeu/views/default_attributes.rb +74 -0
  144. data/lib/vedeu/views/html_char.rb +2 -2
  145. data/lib/vedeu/views/line.rb +27 -53
  146. data/lib/vedeu/views/lines.rb +31 -0
  147. data/lib/vedeu/views/stream.rb +31 -78
  148. data/lib/vedeu/views/streams.rb +42 -0
  149. data/lib/vedeu/views/value.rb +150 -0
  150. data/lib/vedeu/views/view.rb +32 -36
  151. data/lib/vedeu/views/{view_collection.rb → views.rb} +2 -2
  152. data/test/lib/vedeu/application/application_controller_test.rb +5 -0
  153. data/test/lib/vedeu/application/controller_test.rb +22 -28
  154. data/test/lib/vedeu/boolean_test.rb +57 -0
  155. data/test/lib/vedeu/borders/border_test.rb +130 -36
  156. data/test/lib/vedeu/borders/dsl_test.rb +63 -10
  157. data/test/lib/vedeu/borders/title_test.rb +16 -5
  158. data/test/lib/vedeu/buffers/buffer_test.rb +26 -10
  159. data/test/lib/vedeu/buffers/empty_test.rb +1 -1
  160. data/test/lib/vedeu/cells/border_test.rb +0 -6
  161. data/test/lib/vedeu/cells/clear_test.rb +2 -0
  162. data/test/lib/vedeu/cells/empty_test.rb +12 -2
  163. data/test/lib/vedeu/cells/escape_test.rb +7 -2
  164. data/test/lib/vedeu/{geometries/alignment → coercers}/alignment_test.rb +44 -19
  165. data/test/lib/vedeu/coercers/colour_attributes_test.rb +168 -0
  166. data/test/lib/vedeu/coercers/colour_test.rb +75 -0
  167. data/test/lib/vedeu/{geometries/alignment → coercers}/horizontal_alignment_test.rb +6 -6
  168. data/test/lib/vedeu/{geometries/alignment → coercers}/vertical_alignment_test.rb +6 -6
  169. data/test/lib/vedeu/colours/background_test.rb +17 -1
  170. data/test/lib/vedeu/colours/colour_test.rb +74 -2
  171. data/test/lib/vedeu/colours/foreground_test.rb +17 -1
  172. data/test/lib/vedeu/colours/repository_test.rb +1 -1
  173. data/test/lib/vedeu/colours/translator_test.rb +8 -1
  174. data/test/lib/vedeu/colours/validator_test.rb +60 -0
  175. data/test/lib/vedeu/common_test.rb +138 -0
  176. data/test/lib/vedeu/configuration/api_test.rb +96 -51
  177. data/test/lib/vedeu/cursors/coordinate_test.rb +58 -117
  178. data/test/lib/vedeu/cursors/cursor_test.rb +46 -17
  179. data/test/lib/vedeu/cursors/dsl_test.rb +19 -5
  180. data/test/lib/vedeu/distributed/client_test.rb +8 -3
  181. data/test/lib/vedeu/distributed/server_test.rb +8 -0
  182. data/test/lib/vedeu/distributed/test_application_test.rb +62 -19
  183. data/test/lib/vedeu/distributed/uri_test.rb +4 -2
  184. data/test/lib/vedeu/dsl/attributes_test.rb +212 -0
  185. data/test/lib/vedeu/dsl/border_test.rb +51 -0
  186. data/test/lib/vedeu/dsl/{lines_test.rb → cursors_test.rb} +2 -2
  187. data/test/lib/vedeu/dsl/dsl_test.rb +44 -0
  188. data/test/lib/vedeu/dsl/elements_test.rb +118 -0
  189. data/test/lib/vedeu/dsl/geometry_test.rb +35 -0
  190. data/test/lib/vedeu/dsl/presentation_test.rb +52 -11
  191. data/test/lib/vedeu/dsl/string/align_test.rb +147 -0
  192. data/test/lib/vedeu/dsl/string/text_test.rb +213 -0
  193. data/test/lib/vedeu/dsl/string/truncate_test.rb +97 -0
  194. data/test/lib/vedeu/{output → dsl/string}/wordwrap_test.rb +3 -3
  195. data/test/lib/vedeu/dsl/view_test.rb +30 -42
  196. data/test/lib/vedeu/dsl/views_test.rb +61 -0
  197. data/test/lib/vedeu/editor/cursor_test.rb +30 -12
  198. data/test/lib/vedeu/editor/document_test.rb +18 -10
  199. data/test/lib/vedeu/editor/line_test.rb +4 -1
  200. data/test/lib/vedeu/editor/lines_test.rb +11 -3
  201. data/test/lib/vedeu/esc/actions_test.rb +42 -4
  202. data/test/lib/vedeu/esc/background_test.rb +185 -0
  203. data/test/lib/vedeu/esc/borders_test.rb +37 -9
  204. data/test/lib/vedeu/esc/colours_test.rb +0 -59
  205. data/test/lib/vedeu/esc/foreground_test.rb +185 -0
  206. data/test/lib/vedeu/esc/mouse_test.rb +9 -4
  207. data/test/lib/vedeu/geometries/area/area_test.rb +34 -11
  208. data/test/lib/vedeu/geometries/dsl/dsl_test.rb +52 -61
  209. data/test/lib/vedeu/geometries/geometry_test.rb +62 -18
  210. data/test/lib/vedeu/geometries/position_test.rb +14 -7
  211. data/test/lib/vedeu/groups/dsl_test.rb +24 -15
  212. data/test/lib/vedeu/groups/group_test.rb +18 -8
  213. data/test/lib/vedeu/input/dsl_test.rb +33 -16
  214. data/test/lib/vedeu/input/key_test.rb +8 -1
  215. data/test/lib/vedeu/input/keymap_test.rb +4 -1
  216. data/test/lib/vedeu/input/keys_test.rb +16 -0
  217. data/test/lib/vedeu/interfaces/dsl_test.rb +24 -30
  218. data/test/lib/vedeu/interfaces/interface_test.rb +79 -24
  219. data/test/lib/vedeu/logging/ips_test.rb +10 -1
  220. data/test/lib/vedeu/menus/dsl_test.rb +24 -23
  221. data/test/lib/vedeu/menus/menu_test.rb +18 -8
  222. data/test/lib/vedeu/models/page_test.rb +5 -1
  223. data/test/lib/vedeu/models/row_test.rb +4 -0
  224. data/test/lib/vedeu/models/toggleable_test.rb +10 -6
  225. data/test/lib/vedeu/null/generic_test.rb +90 -1
  226. data/test/lib/vedeu/output/viewport_test.rb +11 -10
  227. data/test/lib/vedeu/plugins/plugin_test.rb +22 -9
  228. data/test/lib/vedeu/presentation/colour_test.rb +2 -1
  229. data/test/lib/vedeu/presentation/presentation_test.rb +13 -8
  230. data/test/lib/vedeu/presentation/style_test.rb +28 -13
  231. data/test/lib/vedeu/renderers/file_test.rb +4 -2
  232. data/test/lib/vedeu/renderers/options_test.rb +1 -1
  233. data/test/lib/vedeu/repositories/assemblage_test.rb +18 -0
  234. data/test/lib/vedeu/repositories/collection_test.rb +34 -10
  235. data/test/lib/vedeu/repositories/defaults_test.rb +6 -0
  236. data/test/lib/vedeu/repositories/model_test.rb +4 -13
  237. data/test/lib/vedeu/repositories/repository_test.rb +12 -5
  238. data/test/lib/vedeu/repositories/store_test.rb +9 -0
  239. data/test/lib/vedeu/runtime/flags_test.rb +6 -4
  240. data/test/lib/vedeu/runtime/launcher_test.rb +1 -1
  241. data/test/lib/vedeu/templating/helpers_test.rb +93 -65
  242. data/test/lib/vedeu/templating/view_template_test.rb +26 -26
  243. data/test/lib/vedeu/views/char_test.rb +36 -11
  244. data/test/lib/vedeu/views/chars_test.rb +71 -0
  245. data/test/lib/vedeu/views/composition_test.rb +17 -16
  246. data/test/lib/vedeu/views/default_attributes_test.rb +97 -0
  247. data/test/lib/vedeu/views/line_test.rb +20 -75
  248. data/test/lib/vedeu/views/lines_test.rb +47 -0
  249. data/test/lib/vedeu/views/stream_test.rb +38 -63
  250. data/test/lib/vedeu/views/streams_test.rb +9 -0
  251. data/test/lib/vedeu/views/value_test.rb +112 -0
  252. data/test/lib/vedeu/views/view_test.rb +67 -45
  253. data/test/lib/vedeu/views/views_test.rb +22 -0
  254. data/test/support/examples/material_colours_app.rb +2 -2
  255. data/test/support/helpers/model_test_class.rb +1 -0
  256. data/test/test_helper.rb +3 -1
  257. data/vedeu.gemspec +2 -2
  258. metadata +124 -58
  259. data/lib/vedeu/dsl/composition.rb +0 -150
  260. data/lib/vedeu/dsl/line.rb +0 -119
  261. data/lib/vedeu/dsl/lines.rb +0 -23
  262. data/lib/vedeu/dsl/shared.rb +0 -85
  263. data/lib/vedeu/dsl/stream.rb +0 -40
  264. data/lib/vedeu/dsl/streams.rb +0 -23
  265. data/lib/vedeu/dsl/text.rb +0 -98
  266. data/lib/vedeu/geometries/alignment/all.rb +0 -11
  267. data/lib/vedeu/geometries/alignment/horizontal_alignment.rb +0 -27
  268. data/lib/vedeu/geometries/alignment/vertical_alignment.rb +0 -27
  269. data/lib/vedeu/output/text.rb +0 -275
  270. data/test/lib/vedeu/dsl/composition_test.rb +0 -67
  271. data/test/lib/vedeu/dsl/line_test.rb +0 -85
  272. data/test/lib/vedeu/dsl/shared_test.rb +0 -66
  273. data/test/lib/vedeu/dsl/stream_test.rb +0 -30
  274. data/test/lib/vedeu/dsl/streams_test.rb +0 -13
  275. data/test/lib/vedeu/dsl/text_test.rb +0 -122
  276. data/test/lib/vedeu/output/text_test.rb +0 -156
  277. data/test/lib/vedeu/views/view_collection_test.rb +0 -13
@@ -175,7 +175,7 @@ module Vedeu
175
175
  # @return [Hash<Symbol => Fixnum|NilClass|String|Symbol>]
176
176
  def defaults
177
177
  {
178
- name: '',
178
+ name: ''.freeze,
179
179
  ox: 0,
180
180
  oy: 0,
181
181
  x: 0,
@@ -8,6 +8,8 @@ module Vedeu
8
8
  #
9
9
  class Delete
10
10
 
11
+ include Vedeu::Common
12
+
11
13
  # @param (see #initialize)
12
14
  # @return [Vedeu::Editor::Line|Vedeu::Editor::Lines]
13
15
  def self.from(collection, index = nil, size = 0)
@@ -58,7 +60,7 @@ module Vedeu
58
60
  #
59
61
  # @return [Boolean]
60
62
  def line?
61
- collection.is_a?(String)
63
+ string?(collection)
62
64
  end
63
65
 
64
66
  # If true, we are dealing with a {Vedeu::Editor::Lines}
@@ -8,6 +8,8 @@ module Vedeu
8
8
  #
9
9
  class Insert
10
10
 
11
+ include Vedeu::Common
12
+
11
13
  # @param (see #initialize)
12
14
  # @return (see #insert)
13
15
  def self.into(collection, entity, index = nil, size = 0)
@@ -30,7 +32,7 @@ module Vedeu
30
32
 
31
33
  # @return [Vedeu::Editor::Line|Vedeu::Editor::Lines]
32
34
  def insert
33
- return collection.insert(index, entity) if index
35
+ return collection.insert(position, entity) if index?
34
36
 
35
37
  collection << entity
36
38
  end
@@ -45,19 +47,33 @@ module Vedeu
45
47
  # @return [String]
46
48
  attr_reader :entity
47
49
 
50
+ # @!attribute [r] index
51
+ # @return [Fixnum]
52
+ attr_reader :index
53
+
48
54
  # @!attribute [r] size
49
55
  # @return [Fixnum]
50
56
  attr_reader :size
51
57
 
52
58
  private
53
59
 
60
+ # @return [Boolean]
61
+ def index?
62
+ numeric?(index)
63
+ end
64
+
54
65
  # @return [Fixnum]
55
- def index
56
- return nil unless @index
66
+ def position
67
+ if index < 0
68
+ 0
69
+
70
+ elsif index > size
71
+ size
72
+
73
+ else
74
+ index
57
75
 
58
- @index = 0 if @index < 0
59
- @index = size if @index > size
60
- @index
76
+ end
61
77
  end
62
78
 
63
79
  end # Insert
@@ -16,16 +16,22 @@ module Vedeu
16
16
  alias_method :line, :collection
17
17
  alias_method :to_s, :collection
18
18
 
19
- # Coerce a line into a new instance of Vedeu::Editor::Line.
20
- #
21
- # @param collection [String|Vedeu::Editor::Line]
22
- # @return (see #initialize)
23
- def self.coerce(collection)
24
- return collection if collection.is_a?(self)
25
- return new(collection) if collection.is_a?(String)
19
+ class << self
26
20
 
27
- new
28
- end
21
+ include Vedeu::Common
22
+
23
+ # Coerce a line into a new instance of Vedeu::Editor::Line.
24
+ #
25
+ # @param collection [String|Vedeu::Editor::Line]
26
+ # @return (see #initialize)
27
+ def coerce(collection)
28
+ return collection if collection.is_a?(self)
29
+ return new(collection) if string?(collection)
30
+
31
+ new
32
+ end
33
+
34
+ end # Eigenclass
29
35
 
30
36
  # Returns a new instance of Vedeu::Editor::Line.
31
37
  #
@@ -16,31 +16,40 @@ module Vedeu
16
16
  attr_accessor :collection
17
17
  alias_method :lines, :collection
18
18
 
19
- # Coerce a document into a new instance of Vedeu::Editor::Lines.
20
- #
21
- # @param document [Array<String>|Vedeu::Editor::Lines]
22
- # @return (see #initialize)
23
- def self.coerce(document)
24
- if document.is_a?(self)
25
- new(document.lines)
19
+ class << self
26
20
 
27
- elsif document.is_a?(Array)
28
- collection = document.map { |line| Vedeu::Editor::Line.coerce(line) }
21
+ include Vedeu::Common
29
22
 
30
- new(collection)
23
+ # Coerce a document into a new instance of
24
+ # Vedeu::Editor::Lines.
25
+ #
26
+ # @param document [Array<String>|Vedeu::Editor::Lines]
27
+ # @return (see #initialize)
28
+ def coerce(document)
29
+ if document.is_a?(self)
30
+ new(document.lines)
31
31
 
32
- elsif document.is_a?(String)
33
- collection = document.lines.map(&:chomp).map do |line|
34
- Vedeu::Editor::Line.coerce(line)
35
- end
32
+ elsif document.is_a?(Array)
33
+ collection = document.map do |line|
34
+ Vedeu::Editor::Line.coerce(line)
35
+ end
36
+
37
+ new(collection)
38
+
39
+ elsif string?(document)
40
+ collection = document.lines.map(&:chomp).map do |line|
41
+ Vedeu::Editor::Line.coerce(line)
42
+ end
36
43
 
37
- new(collection)
44
+ new(collection)
38
45
 
39
- else
40
- new
46
+ else
47
+ new
41
48
 
49
+ end
42
50
  end
43
- end
51
+
52
+ end # Eigenclass
44
53
 
45
54
  # Returns a new instance of Vedeu::Editor::Lines.
46
55
  #
@@ -8,36 +8,83 @@ module Vedeu
8
8
 
9
9
  extend self
10
10
 
11
- # @return [Hash<Symbol => String>]
12
- def characters
13
- {
14
- hide_cursor: "\e[?25l".freeze,
15
- show_cursor: "\e[?25h".freeze,
16
- cursor_position: "\e[6n".freeze,
17
- bg_reset: "\e[49m".freeze,
18
- blink: "\e[5m".freeze,
19
- blink_off: "\e[25m".freeze,
20
- bold: "\e[1m".freeze,
21
- bold_off: "\e[22m".freeze,
22
- dim: "\e[2m".freeze,
23
- fg_reset: "\e[39m".freeze,
24
- negative: "\e[7m".freeze,
25
- positive: "\e[27m".freeze,
26
- reset: "\e[0m".freeze,
27
- underline: "\e[4m".freeze,
28
- underline_off: "\e[24m".freeze,
29
- }
30
- end
31
-
32
- # @return [void]
33
- def setup!
34
- characters.each { |key, code| define_method(key) { code } }
11
+ # @return [String]
12
+ def bg_reset
13
+ "\e[49m".freeze
14
+ end
15
+
16
+ # @return [String]
17
+ def blink
18
+ "\e[5m".freeze
19
+ end
20
+
21
+ # @return [String]
22
+ def blink_off
23
+ "\e[25m".freeze
24
+ end
25
+
26
+ # @return [String]
27
+ def bold
28
+ "\e[1m".freeze
29
+ end
30
+
31
+ # @return [String]
32
+ def bold_off
33
+ "\e[22m".freeze
34
+ end
35
+
36
+ # @return [String]
37
+ def cursor_position
38
+ "\e[6n".freeze
39
+ end
40
+
41
+ # @return [String]
42
+ def dim
43
+ "\e[2m".freeze
44
+ end
45
+
46
+ # @return [String]
47
+ def fg_reset
48
+ "\e[39m".freeze
49
+ end
50
+
51
+ # @return [String]
52
+ def hide_cursor
53
+ "\e[?25l".freeze
54
+ end
55
+
56
+ # @return [String]
57
+ def negative
58
+ "\e[7m".freeze
59
+ end
60
+
61
+ # @return [String]
62
+ def positive
63
+ "\e[27m".freeze
64
+ end
65
+
66
+ # @return [String]
67
+ def reset
68
+ "\e[0m".freeze
69
+ end
70
+
71
+ # @return [String]
72
+ def show_cursor
73
+ "\e[?25h".freeze
74
+ end
75
+
76
+ # @return [String]
77
+ def underline
78
+ "\e[4m".freeze
79
+ end
80
+
81
+ # @return [String]
82
+ def underline_off
83
+ "\e[24m".freeze
35
84
  end
36
85
 
37
86
  end # Actions
38
87
 
39
88
  end # EscapeSequences
40
89
 
41
- Vedeu::EscapeSequences::Actions.setup!
42
-
43
90
  end # Vedeu
data/lib/vedeu/esc/all.rb CHANGED
@@ -9,7 +9,9 @@ module Vedeu
9
9
  end # Vedeu
10
10
 
11
11
  require 'vedeu/esc/actions'
12
+ require 'vedeu/esc/background'
12
13
  require 'vedeu/esc/borders'
13
14
  require 'vedeu/esc/colours'
15
+ require 'vedeu/esc/foreground'
14
16
  require 'vedeu/esc/mouse'
15
17
  require 'vedeu/esc/esc'
@@ -0,0 +1,219 @@
1
+ module Vedeu
2
+
3
+ module EscapeSequences
4
+
5
+ # Provides backgroundcolour related escape sequences.
6
+ #
7
+ module Background
8
+
9
+ extend self
10
+
11
+ # @param block [Proc]
12
+ # @return [String]
13
+ def on_black(&block)
14
+ if block_given?
15
+ "\e[40m".freeze + yield + "\e[49m".freeze
16
+
17
+ else
18
+ "\e[40m".freeze
19
+
20
+ end
21
+ end
22
+
23
+ # @param block [Proc]
24
+ # @return [String]
25
+ def on_red(&block)
26
+ if block_given?
27
+ "\e[41m".freeze + yield + "\e[49m".freeze
28
+
29
+ else
30
+ "\e[41m".freeze
31
+
32
+ end
33
+ end
34
+
35
+ # @param block [Proc]
36
+ # @return [String]
37
+ def on_green(&block)
38
+ if block_given?
39
+ "\e[42m".freeze + yield + "\e[49m".freeze
40
+
41
+ else
42
+ "\e[42m".freeze
43
+
44
+ end
45
+ end
46
+
47
+ # @param block [Proc]
48
+ # @return [String]
49
+ def on_yellow(&block)
50
+ if block_given?
51
+ "\e[43m".freeze + yield + "\e[49m".freeze
52
+
53
+ else
54
+ "\e[43m".freeze
55
+
56
+ end
57
+ end
58
+
59
+ # @param block [Proc]
60
+ # @return [String]
61
+ def on_blue(&block)
62
+ if block_given?
63
+ "\e[44m".freeze + yield + "\e[49m".freeze
64
+
65
+ else
66
+ "\e[44m".freeze
67
+
68
+ end
69
+ end
70
+
71
+ # @param block [Proc]
72
+ # @return [String]
73
+ def on_magenta(&block)
74
+ if block_given?
75
+ "\e[45m".freeze + yield + "\e[49m".freeze
76
+
77
+ else
78
+ "\e[45m".freeze
79
+
80
+ end
81
+ end
82
+
83
+ # @param block [Proc]
84
+ # @return [String]
85
+ def on_cyan(&block)
86
+ if block_given?
87
+ "\e[46m".freeze + yield + "\e[49m".freeze
88
+
89
+ else
90
+ "\e[46m".freeze
91
+
92
+ end
93
+ end
94
+
95
+ # @param block [Proc]
96
+ # @return [String]
97
+ def on_light_grey(&block)
98
+ if block_given?
99
+ "\e[47m".freeze + yield + "\e[49m".freeze
100
+
101
+ else
102
+ "\e[47m".freeze
103
+
104
+ end
105
+ end
106
+
107
+ # @param block [Proc]
108
+ # @return [String]
109
+ def on_default(&block)
110
+ if block_given?
111
+ "\e[49m".freeze + yield + "\e[49m".freeze
112
+
113
+ else
114
+ "\e[49m".freeze
115
+
116
+ end
117
+ end
118
+
119
+ # @param block [Proc]
120
+ # @return [String]
121
+ def on_dark_grey(&block)
122
+ if block_given?
123
+ "\e[100m".freeze + yield + "\e[49m".freeze
124
+
125
+ else
126
+ "\e[100m".freeze
127
+
128
+ end
129
+ end
130
+
131
+ # @param block [Proc]
132
+ # @return [String]
133
+ def on_light_red(&block)
134
+ if block_given?
135
+ "\e[101m".freeze + yield + "\e[49m".freeze
136
+
137
+ else
138
+ "\e[101m".freeze
139
+
140
+ end
141
+ end
142
+
143
+ # @param block [Proc]
144
+ # @return [String]
145
+ def on_light_green(&block)
146
+ if block_given?
147
+ "\e[102m".freeze + yield + "\e[49m".freeze
148
+
149
+ else
150
+ "\e[102m".freeze
151
+
152
+ end
153
+ end
154
+
155
+ # @param block [Proc]
156
+ # @return [String]
157
+ def on_light_yellow(&block)
158
+ if block_given?
159
+ "\e[103m".freeze + yield + "\e[49m".freeze
160
+
161
+ else
162
+ "\e[103m".freeze
163
+
164
+ end
165
+ end
166
+
167
+ # @param block [Proc]
168
+ # @return [String]
169
+ def on_light_blue(&block)
170
+ if block_given?
171
+ "\e[104m".freeze + yield + "\e[49m".freeze
172
+
173
+ else
174
+ "\e[104m".freeze
175
+
176
+ end
177
+ end
178
+
179
+ # @param block [Proc]
180
+ # @return [String]
181
+ def on_light_magenta(&block)
182
+ if block_given?
183
+ "\e[105m".freeze + yield + "\e[49m".freeze
184
+
185
+ else
186
+ "\e[105m".freeze
187
+
188
+ end
189
+ end
190
+
191
+ # @param block [Proc]
192
+ # @return [String]
193
+ def on_light_cyan(&block)
194
+ if block_given?
195
+ "\e[106m".freeze + yield + "\e[49m".freeze
196
+
197
+ else
198
+ "\e[106m".freeze
199
+
200
+ end
201
+ end
202
+
203
+ # @param block [Proc]
204
+ # @return [String]
205
+ def on_white(&block)
206
+ if block_given?
207
+ "\e[107m".freeze + yield + "\e[49m".freeze
208
+
209
+ else
210
+ "\e[107m".freeze
211
+
212
+ end
213
+ end
214
+
215
+ end # Background
216
+
217
+ end # EscapeSequences
218
+
219
+ end # Vedeu