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
@@ -2,7 +2,12 @@ module Vedeu
2
2
 
3
3
  module EscapeSequences
4
4
 
5
- # Provides border/box related escape sequences.
5
+ # Provides border/box related escape sequences for semigraphic
6
+ # characters.
7
+ #
8
+ # # 0 1 2 3 4 5 6 7 8 9 A B C D E F
9
+ # 6 ┘ ┐ ┌ └ ┼
10
+ # 7 ─ ├ ┤ ┴ ┬ │
6
11
  #
7
12
  # @note
8
13
  # Refer to UTF-8 U+2500 to U+257F for border characters. More
@@ -17,47 +22,88 @@ module Vedeu
17
22
 
18
23
  extend self
19
24
 
25
+ # @return [String]
26
+ def border_off
27
+ "\e(B".freeze
28
+ end
29
+
20
30
  # @return [String]
21
31
  def border_on
22
32
  "\e(0".freeze
23
33
  end
24
34
 
35
+ # └ # \u2514
36
+ #
25
37
  # @return [String]
26
- def border_off
27
- "\e(B".freeze
38
+ def bottom_left
39
+ "\x6D".freeze
40
+ end
41
+
42
+ # ┘ # \u2518
43
+ #
44
+ # @return [String]
45
+ def bottom_right
46
+ "\x6A".freeze
47
+ end
48
+
49
+ # ─ # \u2500
50
+ #
51
+ # @return [String]
52
+ def horizontal
53
+ "\x71".freeze
54
+ end
55
+
56
+ # ┴ # \u2534
57
+ #
58
+ # @return [String]
59
+ def horizontal_bottom
60
+ "\x76".freeze
61
+ end
62
+
63
+ # ┬ # \u252C
64
+ #
65
+ # @return [String]
66
+ def horizontal_top
67
+ "\x77".freeze
68
+ end
69
+
70
+ # ┌ # \u250C
71
+ #
72
+ # @return [String]
73
+ def top_left
74
+ "\x6C".freeze
75
+ end
76
+
77
+ # ┐ # \u2510
78
+ #
79
+ # @return [String]
80
+ def top_right
81
+ "\x6B".freeze
28
82
  end
29
83
 
30
- # Provides all the semigraphic characters.
84
+ # # \u2502
31
85
  #
32
- # # 0 1 2 3 4 5 6 7 8 9 A B C D E F
33
- # 6 ┘ ┐ ┌ └ ┼
34
- # 7 ─ ├ ┤ ┴ ┬ │
86
+ # @return [String]
87
+ def vertical
88
+ "\x78".freeze
89
+ end
90
+
91
+ # ├ # \u251C
35
92
  #
36
- # @return [Hash<Symbol => String>]
37
- def characters
38
- {
39
- bottom_right: "\x6A".freeze, # ┘ # \u2518
40
- top_right: "\x6B".freeze, # ┐ # \u2510
41
- top_left: "\x6C".freeze, # ┌ # \u250C
42
- bottom_left: "\x6D".freeze, # └ # \u2514
43
- horizontal: "\x71".freeze, # ─ # \u2500
44
- vertical_left: "\x74".freeze, # ├ # \u251C
45
- vertical_right: "\x75".freeze, # ┤ # \u2524
46
- horizontal_bottom: "\x76".freeze, # ┴ # \u2534
47
- horizontal_top: "\x77".freeze, # ┬ # \u252C
48
- vertical: "\x78".freeze, # │ # \u2502
49
- }
93
+ # @return [String]
94
+ def vertical_left
95
+ "\x74".freeze
50
96
  end
51
97
 
52
- # @return [void]
53
- def setup!
54
- characters.each { |key, code| define_method(key) { code } }
98
+ # # \u2524
99
+ #
100
+ # @return [String]
101
+ def vertical_right
102
+ "\x75".freeze
55
103
  end
56
104
 
57
105
  end # Borders
58
106
 
59
107
  end # EscapeSequences
60
108
 
61
- Vedeu::EscapeSequences::Borders.setup!
62
-
63
109
  end # Vedeu
@@ -66,42 +66,41 @@ module Vedeu
66
66
  white: 97,
67
67
  }.freeze
68
68
  end
69
- alias_method :codes, :foreground_codes
70
69
 
71
- # @return [void]
72
- def setup!
73
- define_backgrounds!
74
- define_foregrounds!
70
+ # @param named_colour [Symbol]
71
+ # @return [String]
72
+ def background_colour(named_colour)
73
+ return ''.freeze unless valid_name?(named_colour)
74
+
75
+ colour(named_colour.to_s.prepend('on_').to_sym)
75
76
  end
76
77
 
77
- # @return [void]
78
- def define_backgrounds!
79
- background_codes.each do |key, code|
80
- define_method(:"on_#{key}") do |&blk|
81
- "\e[#{code}m".freeze +
82
- (blk ? blk.call + "\e[49m".freeze : ''.freeze)
83
- end
84
- end
78
+ # @param named_colour [Symbol]
79
+ # @return [String]
80
+ def colour(named_colour)
81
+ return ''.freeze unless valid_name?(named_colour)
82
+
83
+ public_send(named_colour)
85
84
  end
85
+ alias_method :foreground_colour, :colour
86
86
 
87
- # Dynamically creates methods for each terminal named colour.
88
- # When a block is given, then the colour is reset to 'default'
89
- # once the block is called.
90
- #
91
- # @return [void]
92
- def define_foregrounds!
93
- foreground_codes.each do |key, code|
94
- define_method(key) do |&blk|
95
- "\e[#{code}m".freeze +
96
- (blk ? blk.call + "\e[39m".freeze : ''.freeze)
97
- end
98
- end
87
+ # @return [Array<Symbol>]
88
+ def valid_codes
89
+ @_valid_codes ||= foreground_codes.keys.map do |name|
90
+ name.to_s.prepend('on_').to_sym
91
+ end + foreground_codes.keys
92
+ end
93
+
94
+ # @param named_colour [Symbol]
95
+ # @return [Boolean]
96
+ def valid_name?(named_colour)
97
+ return false unless named_colour.is_a?(Symbol)
98
+
99
+ valid_codes.include?(named_colour)
99
100
  end
100
101
 
101
102
  end # Colours
102
103
 
103
104
  end # EscapeSequences
104
105
 
105
- Vedeu::EscapeSequences::Colours.setup!
106
-
107
106
  end # Vedeu
data/lib/vedeu/esc/esc.rb CHANGED
@@ -9,8 +9,10 @@ module Vedeu
9
9
 
10
10
  include Vedeu::Common
11
11
  include Vedeu::EscapeSequences::Actions
12
+ include Vedeu::EscapeSequences::Background
12
13
  include Vedeu::EscapeSequences::Borders
13
14
  include Vedeu::EscapeSequences::Colours
15
+ include Vedeu::EscapeSequences::Foreground
14
16
  include Vedeu::EscapeSequences::Mouse
15
17
  extend self
16
18
 
@@ -70,8 +72,6 @@ module Vedeu
70
72
  "#{last_character_position}\n".freeze
71
73
  end
72
74
 
73
- private
74
-
75
75
  # @return [String]
76
76
  def clear_line
77
77
  "#{colour_reset}\e[2K".freeze
@@ -84,7 +84,7 @@ module Vedeu
84
84
 
85
85
  # @return [String]
86
86
  def disable_mouse
87
- if Vedeu::Configuration.mouse == true
87
+ if truthy?(Vedeu::Configuration.mouse)
88
88
  "#{mouse_x10_off}".freeze
89
89
 
90
90
  else
@@ -95,7 +95,7 @@ module Vedeu
95
95
 
96
96
  # @return [String]
97
97
  def enable_mouse
98
- if Vedeu::Configuration.mouse == true
98
+ if truthy?(Vedeu::Configuration.mouse)
99
99
  "#{mouse_x10_on}".freeze
100
100
 
101
101
  else
@@ -0,0 +1,219 @@
1
+ module Vedeu
2
+
3
+ module EscapeSequences
4
+
5
+ # Provides foreground colour related escape sequences.
6
+ #
7
+ module Foreground
8
+
9
+ extend self
10
+
11
+ # @param block [Proc]
12
+ # @return [String]
13
+ def black(&block)
14
+ if block_given?
15
+ "\e[30m".freeze + yield + "\e[39m".freeze
16
+
17
+ else
18
+ "\e[30m".freeze
19
+
20
+ end
21
+ end
22
+
23
+ # @param block [Proc]
24
+ # @return [String]
25
+ def red(&block)
26
+ if block_given?
27
+ "\e[31m".freeze + yield + "\e[39m".freeze
28
+
29
+ else
30
+ "\e[31m".freeze
31
+
32
+ end
33
+ end
34
+
35
+ # @param block [Proc]
36
+ # @return [String]
37
+ def green(&block)
38
+ if block_given?
39
+ "\e[32m".freeze + yield + "\e[39m".freeze
40
+
41
+ else
42
+ "\e[32m".freeze
43
+
44
+ end
45
+ end
46
+
47
+ # @param block [Proc]
48
+ # @return [String]
49
+ def yellow(&block)
50
+ if block_given?
51
+ "\e[33m".freeze + yield + "\e[39m".freeze
52
+
53
+ else
54
+ "\e[33m".freeze
55
+
56
+ end
57
+ end
58
+
59
+ # @param block [Proc]
60
+ # @return [String]
61
+ def blue(&block)
62
+ if block_given?
63
+ "\e[34m".freeze + yield + "\e[39m".freeze
64
+
65
+ else
66
+ "\e[34m".freeze
67
+
68
+ end
69
+ end
70
+
71
+ # @param block [Proc]
72
+ # @return [String]
73
+ def magenta(&block)
74
+ if block_given?
75
+ "\e[35m".freeze + yield + "\e[39m".freeze
76
+
77
+ else
78
+ "\e[35m".freeze
79
+
80
+ end
81
+ end
82
+
83
+ # @param block [Proc]
84
+ # @return [String]
85
+ def cyan(&block)
86
+ if block_given?
87
+ "\e[36m".freeze + yield + "\e[39m".freeze
88
+
89
+ else
90
+ "\e[36m".freeze
91
+
92
+ end
93
+ end
94
+
95
+ # @param block [Proc]
96
+ # @return [String]
97
+ def light_grey(&block)
98
+ if block_given?
99
+ "\e[37m".freeze + yield + "\e[39m".freeze
100
+
101
+ else
102
+ "\e[37m".freeze
103
+
104
+ end
105
+ end
106
+
107
+ # @param block [Proc]
108
+ # @return [String]
109
+ def default(&block)
110
+ if block_given?
111
+ "\e[39m".freeze + yield + "\e[39m".freeze
112
+
113
+ else
114
+ "\e[39m".freeze
115
+
116
+ end
117
+ end
118
+
119
+ # @param block [Proc]
120
+ # @return [String]
121
+ def dark_grey(&block)
122
+ if block_given?
123
+ "\e[90m".freeze + yield + "\e[39m".freeze
124
+
125
+ else
126
+ "\e[90m".freeze
127
+
128
+ end
129
+ end
130
+
131
+ # @param block [Proc]
132
+ # @return [String]
133
+ def light_red(&block)
134
+ if block_given?
135
+ "\e[91m".freeze + yield + "\e[39m".freeze
136
+
137
+ else
138
+ "\e[91m".freeze
139
+
140
+ end
141
+ end
142
+
143
+ # @param block [Proc]
144
+ # @return [String]
145
+ def light_green(&block)
146
+ if block_given?
147
+ "\e[92m".freeze + yield + "\e[39m".freeze
148
+
149
+ else
150
+ "\e[92m".freeze
151
+
152
+ end
153
+ end
154
+
155
+ # @param block [Proc]
156
+ # @return [String]
157
+ def light_yellow(&block)
158
+ if block_given?
159
+ "\e[93m".freeze + yield + "\e[39m".freeze
160
+
161
+ else
162
+ "\e[93m".freeze
163
+
164
+ end
165
+ end
166
+
167
+ # @param block [Proc]
168
+ # @return [String]
169
+ def light_blue(&block)
170
+ if block_given?
171
+ "\e[94m".freeze + yield + "\e[39m".freeze
172
+
173
+ else
174
+ "\e[94m".freeze
175
+
176
+ end
177
+ end
178
+
179
+ # @param block [Proc]
180
+ # @return [String]
181
+ def light_magenta(&block)
182
+ if block_given?
183
+ "\e[95m".freeze + yield + "\e[39m".freeze
184
+
185
+ else
186
+ "\e[95m".freeze
187
+
188
+ end
189
+ end
190
+
191
+ # @param block [Proc]
192
+ # @return [String]
193
+ def light_cyan(&block)
194
+ if block_given?
195
+ "\e[96m".freeze + yield + "\e[39m".freeze
196
+
197
+ else
198
+ "\e[96m".freeze
199
+
200
+ end
201
+ end
202
+
203
+ # @param block [Proc]
204
+ # @return [String]
205
+ def white(&block)
206
+ if block_given?
207
+ "\e[97m".freeze + yield + "\e[39m".freeze
208
+
209
+ else
210
+ "\e[97m".freeze
211
+
212
+ end
213
+ end
214
+
215
+ end # Foreground
216
+
217
+ end # EscapeSequences
218
+
219
+ end # Vedeu