vedeu 0.2.12 → 0.3.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 (305) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/Guardfile +13 -0
  4. data/README.md +11 -9
  5. data/Rakefile +10 -1
  6. data/bin/vedeu_test +14 -0
  7. data/config/cucumber.yml +8 -0
  8. data/docs/api.md +45 -16
  9. data/docs/events.md +21 -9
  10. data/docs/getting_started.md +16 -0
  11. data/docs/views.md +158 -0
  12. data/examples/borders_app.rb +236 -110
  13. data/examples/colour_support.sh +98 -0
  14. data/examples/colours_app.rb +41 -0
  15. data/examples/configuration_app.rb +11 -6
  16. data/examples/cursor_app.rb +60 -61
  17. data/examples/focus_app.rb +72 -34
  18. data/examples/hello_world.rb +13 -8
  19. data/examples/lines_app.rb +37 -28
  20. data/features/start_stop.feature +27 -0
  21. data/features/support/env.rb +14 -0
  22. data/lib/vedeu/all.rb +29 -0
  23. data/lib/vedeu/api.rb +39 -0
  24. data/lib/vedeu/application.rb +15 -7
  25. data/lib/vedeu/bindings.rb +121 -0
  26. data/lib/vedeu/buffers/all.rb +10 -0
  27. data/lib/vedeu/{repositories/models → buffers}/buffer.rb +47 -64
  28. data/lib/vedeu/buffers/display_buffer.rb +118 -0
  29. data/lib/vedeu/configuration/all.rb +6 -0
  30. data/lib/vedeu/configuration/api.rb +3 -1
  31. data/lib/vedeu/configuration/cli.rb +3 -1
  32. data/lib/vedeu/configuration/configuration.rb +23 -2
  33. data/lib/vedeu/cursor/all.rb +23 -0
  34. data/lib/vedeu/cursor/cursor.rb +116 -0
  35. data/lib/vedeu/cursor/move_cursor.rb +137 -0
  36. data/lib/vedeu/cursor/toggle_cursor.rb +53 -0
  37. data/lib/vedeu/dsl/all.rb +28 -0
  38. data/lib/vedeu/dsl/components/all.rb +7 -0
  39. data/lib/vedeu/dsl/components/border.rb +104 -0
  40. data/lib/vedeu/dsl/components/geometry.rb +153 -0
  41. data/lib/vedeu/dsl/components/keymap.rb +93 -0
  42. data/lib/vedeu/dsl/components/menu.rb +82 -0
  43. data/lib/vedeu/dsl/composition.rb +72 -0
  44. data/lib/vedeu/dsl/interface.rb +210 -0
  45. data/lib/vedeu/dsl/line.rb +135 -0
  46. data/lib/vedeu/dsl/shared/all.rb +7 -0
  47. data/lib/vedeu/dsl/shared/colour.rb +85 -0
  48. data/lib/vedeu/dsl/shared/style.rb +38 -0
  49. data/lib/vedeu/dsl/shared/text.rb +102 -0
  50. data/lib/vedeu/dsl/shared/use.rb +47 -0
  51. data/lib/vedeu/dsl/stream.rb +49 -0
  52. data/lib/vedeu/dsl/view.rb +136 -0
  53. data/lib/vedeu/events/all.rb +10 -0
  54. data/lib/vedeu/{repositories/models → events}/event.rb +97 -8
  55. data/lib/vedeu/events/trigger.rb +58 -0
  56. data/lib/vedeu/exceptions.rb +34 -0
  57. data/lib/vedeu/input/all.rb +29 -0
  58. data/lib/vedeu/input/input.rb +26 -0
  59. data/lib/vedeu/{models → input}/key.rb +21 -11
  60. data/lib/vedeu/input/keymap.rb +130 -0
  61. data/lib/vedeu/input/keys.rb +8 -0
  62. data/lib/vedeu/input/mapper.rb +112 -0
  63. data/lib/vedeu/launcher.rb +7 -4
  64. data/lib/vedeu/models/all.rb +12 -0
  65. data/lib/vedeu/models/collection.rb +71 -0
  66. data/lib/vedeu/{repositories → models}/focus.rb +63 -21
  67. data/lib/vedeu/models/geometry.rb +100 -259
  68. data/lib/vedeu/{repositories/models → models}/group.rb +16 -14
  69. data/lib/vedeu/{repositories/models → models}/menu.rb +85 -22
  70. data/lib/vedeu/models/model.rb +51 -0
  71. data/lib/vedeu/models/view/all.rb +12 -0
  72. data/lib/vedeu/models/view/char.rb +84 -0
  73. data/lib/vedeu/models/view/chars.rb +8 -0
  74. data/lib/vedeu/models/view/composition.rb +101 -0
  75. data/lib/vedeu/models/view/interface.rb +215 -0
  76. data/lib/vedeu/models/view/interfaces.rb +8 -0
  77. data/lib/vedeu/models/view/line.rb +134 -0
  78. data/lib/vedeu/models/view/lines.rb +8 -0
  79. data/lib/vedeu/models/view/stream.rb +144 -0
  80. data/lib/vedeu/models/view/streams.rb +8 -0
  81. data/lib/vedeu/output/all.rb +8 -0
  82. data/lib/vedeu/output/border.rb +387 -0
  83. data/lib/vedeu/output/compositor.rb +41 -30
  84. data/lib/vedeu/output/output.rb +6 -13
  85. data/lib/vedeu/output/viewport.rb +78 -94
  86. data/lib/vedeu/output/writer.rb +29 -0
  87. data/lib/vedeu/presentation/all.rb +9 -0
  88. data/lib/vedeu/{colours → presentation}/background.rb +1 -9
  89. data/lib/vedeu/{colours → presentation}/colour.rb +21 -8
  90. data/lib/vedeu/{colours → presentation}/foreground.rb +5 -9
  91. data/lib/vedeu/presentation/presentation.rb +91 -0
  92. data/lib/vedeu/presentation/style.rb +47 -0
  93. data/lib/vedeu/{colours → presentation}/translator.rb +11 -5
  94. data/lib/vedeu/repositories/all.rb +5 -0
  95. data/lib/vedeu/repositories/menus.rb +5 -42
  96. data/lib/vedeu/{support → repositories}/repository.rb +78 -41
  97. data/lib/vedeu/support/all.rb +22 -0
  98. data/lib/vedeu/support/bounding_area.rb +2 -1
  99. data/lib/vedeu/support/coercions.rb +18 -1
  100. data/lib/vedeu/support/console.rb +73 -0
  101. data/lib/vedeu/support/content_geometry.rb +69 -0
  102. data/lib/vedeu/support/coordinate.rb +246 -0
  103. data/lib/vedeu/support/esc.rb +29 -2
  104. data/lib/vedeu/support/log.rb +36 -2
  105. data/lib/vedeu/support/node.rb +61 -0
  106. data/lib/vedeu/support/position.rb +28 -13
  107. data/lib/vedeu/support/position_validator.rb +79 -0
  108. data/lib/vedeu/support/read.rb +65 -0
  109. data/lib/vedeu/support/refresh.rb +8 -32
  110. data/lib/vedeu/support/terminal.rb +34 -4
  111. data/lib/vedeu/support/text.rb +104 -0
  112. data/lib/vedeu/support/trace.rb +11 -23
  113. data/lib/vedeu/support/visible.rb +75 -0
  114. data/lib/vedeu/support/write.rb +85 -0
  115. data/lib/vedeu/traps.rb +18 -0
  116. data/lib/vedeu.rb +41 -101
  117. data/test/integration/dsl/compositions_test.rb +27 -0
  118. data/test/integration/dsl/interfaces_test.rb +261 -0
  119. data/test/integration/dsl/keymaps_test.rb +42 -0
  120. data/test/integration/dsl/lines_test.rb +146 -0
  121. data/test/integration/dsl/menus_test.rb +59 -0
  122. data/test/integration/dsl/streams_test.rb +129 -0
  123. data/test/integration/dsl/views_test.rb +63 -0
  124. data/test/lib/vedeu/api_test.rb +163 -0
  125. data/test/lib/vedeu/application_test.rb +19 -10
  126. data/test/lib/vedeu/bindings_test.rb +54 -0
  127. data/test/lib/vedeu/buffers/all_test.rb +11 -0
  128. data/test/lib/vedeu/buffers/buffer_test.rb +196 -0
  129. data/test/lib/vedeu/buffers/display_buffer_test.rb +58 -0
  130. data/test/lib/vedeu/configuration/api_test.rb +42 -58
  131. data/test/lib/vedeu/configuration/cli_test.rb +4 -4
  132. data/test/lib/vedeu/configuration/configuration_test.rb +11 -29
  133. data/test/lib/vedeu/cursor/all_test.rb +33 -0
  134. data/test/lib/vedeu/cursor/cursor_test.rb +85 -0
  135. data/test/lib/vedeu/cursor/move_cursor_test.rb +212 -0
  136. data/test/lib/vedeu/cursor/toggle_cursor_test.rb +63 -0
  137. data/test/lib/vedeu/dsl/components/border_test.rb +414 -0
  138. data/test/lib/vedeu/dsl/components/geometry_test.rb +231 -0
  139. data/test/lib/vedeu/dsl/components/keymap_test.rb +80 -0
  140. data/test/lib/vedeu/dsl/components/menu_test.rb +115 -0
  141. data/test/lib/vedeu/dsl/composition_test.rb +41 -0
  142. data/test/lib/vedeu/dsl/interface_test.rb +470 -0
  143. data/test/lib/vedeu/dsl/line_test.rb +60 -0
  144. data/test/lib/vedeu/dsl/shared/colour_test.rb +100 -0
  145. data/test/lib/vedeu/dsl/shared/style_test.rb +22 -0
  146. data/test/lib/vedeu/dsl/shared/text_test.rb +15 -0
  147. data/test/lib/vedeu/dsl/shared/use_test.rb +27 -0
  148. data/test/lib/vedeu/dsl/stream_test.rb +26 -0
  149. data/test/lib/vedeu/dsl/view_test.rb +73 -0
  150. data/test/lib/vedeu/events/all_test.rb +11 -0
  151. data/test/lib/vedeu/events/event_test.rb +109 -0
  152. data/test/lib/vedeu/events/trigger_test.rb +60 -0
  153. data/test/lib/vedeu/input/all_test.rb +11 -0
  154. data/test/lib/vedeu/input/input_test.rb +7 -3
  155. data/test/lib/vedeu/input/key_test.rb +72 -0
  156. data/test/lib/vedeu/input/keymap_test.rb +89 -0
  157. data/test/lib/vedeu/input/mapper_test.rb +94 -0
  158. data/test/lib/vedeu/launcher_test.rb +19 -20
  159. data/test/lib/vedeu/models/collection_test.rb +114 -0
  160. data/test/lib/vedeu/{repositories → models}/focus_test.rb +46 -13
  161. data/test/lib/vedeu/models/geometry_test.rb +35 -39
  162. data/test/lib/vedeu/models/group_test.rb +100 -0
  163. data/test/lib/vedeu/models/menu_test.rb +288 -0
  164. data/test/lib/vedeu/models/model_test.rb +31 -0
  165. data/test/lib/vedeu/models/view/char_test.rb +166 -0
  166. data/test/lib/vedeu/models/view/chars_test.rb +18 -0
  167. data/test/lib/vedeu/models/view/composition_test.rb +41 -0
  168. data/test/lib/vedeu/models/view/interface_test.rb +128 -0
  169. data/test/lib/vedeu/models/view/interfaces_test.rb +18 -0
  170. data/test/lib/vedeu/models/view/line_test.rb +214 -0
  171. data/test/lib/vedeu/models/view/lines_test.rb +18 -0
  172. data/test/lib/vedeu/models/view/stream_test.rb +106 -0
  173. data/test/lib/vedeu/models/view/streams_test.rb +18 -0
  174. data/test/lib/vedeu/output/border_test.rb +357 -0
  175. data/test/lib/vedeu/output/compositor_test.rb +61 -15
  176. data/test/lib/vedeu/output/output_test.rb +25 -84
  177. data/test/lib/vedeu/output/viewport_test.rb +171 -45
  178. data/test/lib/vedeu/output/writer_test.rb +45 -0
  179. data/test/lib/vedeu/{colours → presentation}/background_test.rb +0 -0
  180. data/test/lib/vedeu/{colours → presentation}/colour_test.rb +5 -5
  181. data/test/lib/vedeu/{colours → presentation}/foreground_test.rb +0 -0
  182. data/test/lib/vedeu/presentation/presentation_test.rb +56 -0
  183. data/test/lib/vedeu/presentation/style_test.rb +69 -0
  184. data/test/lib/vedeu/presentation/translator_test.rb +63 -0
  185. data/test/lib/vedeu/repositories/all_test.rb +7 -0
  186. data/test/lib/vedeu/repositories/menus_test.rb +3 -156
  187. data/test/lib/vedeu/repositories/repository_test.rb +271 -0
  188. data/test/lib/vedeu/support/bounding_area_test.rb +3 -3
  189. data/test/lib/vedeu/support/coercions_test.rb +39 -0
  190. data/test/lib/vedeu/support/common_test.rb +31 -16
  191. data/test/lib/vedeu/support/console_test.rb +85 -0
  192. data/test/lib/vedeu/support/content_geometry_test.rb +107 -0
  193. data/test/lib/vedeu/support/coordinate_test.rb +190 -0
  194. data/test/lib/vedeu/support/esc_test.rb +18 -0
  195. data/test/lib/vedeu/support/grid_test.rb +15 -10
  196. data/test/lib/vedeu/support/log_test.rb +3 -0
  197. data/test/lib/vedeu/support/position_test.rb +22 -2
  198. data/test/lib/vedeu/support/position_validator_test.rb +11 -0
  199. data/test/lib/vedeu/support/read_test.rb +88 -0
  200. data/test/lib/vedeu/support/refresh_test.rb +44 -12
  201. data/test/lib/vedeu/support/sentence_test.rb +6 -4
  202. data/test/lib/vedeu/support/terminal_test.rb +81 -70
  203. data/test/lib/vedeu/support/text_test.rb +93 -0
  204. data/test/lib/vedeu/support/trace_test.rb +21 -9
  205. data/test/lib/vedeu/support/visible_test.rb +148 -0
  206. data/test/lib/vedeu/support/write_test.rb +136 -0
  207. data/test/lib/vedeu/traps_test.rb +11 -0
  208. data/test/lib/vedeu_test.rb +2 -0
  209. data/test/support/helpers/all.rb +7 -0
  210. data/test/support/helpers/dsl_model_test_class.rb +25 -0
  211. data/test/support/{test_classes → helpers}/helpers.rb +0 -2
  212. data/test/support/helpers/misc.rb +15 -0
  213. data/test/support/helpers/model_test_class.rb +34 -0
  214. data/test/support/{test_classes → helpers}/presentation.rb +0 -0
  215. data/test/support/{test_classes → helpers}/repositories.rb +3 -3
  216. data/test/support/{test_modules/repository.rb → helpers/repository_test_module.rb} +5 -1
  217. data/test/test_helper.rb +19 -22
  218. data/vedeu.gemspec +11 -6
  219. metadata +322 -181
  220. data/lib/vedeu/api/api.rb +0 -239
  221. data/lib/vedeu/api/composition.rb +0 -38
  222. data/lib/vedeu/api/defined.rb +0 -52
  223. data/lib/vedeu/api/helpers.rb +0 -161
  224. data/lib/vedeu/api/interface.rb +0 -287
  225. data/lib/vedeu/api/keymap.rb +0 -75
  226. data/lib/vedeu/api/line.rb +0 -107
  227. data/lib/vedeu/api/menu.rb +0 -111
  228. data/lib/vedeu/api/stream.rb +0 -96
  229. data/lib/vedeu/models/border.rb +0 -238
  230. data/lib/vedeu/models/char.rb +0 -43
  231. data/lib/vedeu/models/composition.rb +0 -72
  232. data/lib/vedeu/models/line.rb +0 -100
  233. data/lib/vedeu/models/stream.rb +0 -130
  234. data/lib/vedeu/models/style.rb +0 -52
  235. data/lib/vedeu/repositories/buffers.rb +0 -52
  236. data/lib/vedeu/repositories/cursors.rb +0 -64
  237. data/lib/vedeu/repositories/events.rb +0 -147
  238. data/lib/vedeu/repositories/groups.rb +0 -47
  239. data/lib/vedeu/repositories/interfaces.rb +0 -78
  240. data/lib/vedeu/repositories/keymaps.rb +0 -196
  241. data/lib/vedeu/repositories/models/cursor.rb +0 -209
  242. data/lib/vedeu/repositories/models/interface.rb +0 -163
  243. data/lib/vedeu/repositories/models/keymap.rb +0 -111
  244. data/lib/vedeu/repositories/models/offset.rb +0 -91
  245. data/lib/vedeu/repositories/offsets.rb +0 -69
  246. data/lib/vedeu/support/exceptions.rb +0 -34
  247. data/lib/vedeu/support/keymap_validator.rb +0 -100
  248. data/lib/vedeu/support/model.rb +0 -14
  249. data/lib/vedeu/support/presentation.rb +0 -86
  250. data/lib/vedeu/support/registrar.rb +0 -53
  251. data/test/integration/api/api_test.rb +0 -97
  252. data/test/integration/api_dsl/dsl_api_test.rb +0 -4
  253. data/test/integration/api_dsl/dsl_composition_test.rb +0 -4
  254. data/test/integration/api_dsl/dsl_defined_test.rb +0 -4
  255. data/test/integration/api_dsl/dsl_helpers_test.rb +0 -4
  256. data/test/integration/api_dsl/dsl_interface_test.rb +0 -4
  257. data/test/integration/api_dsl/dsl_keymap.rb +0 -4
  258. data/test/integration/api_dsl/dsl_line_test.rb +0 -4
  259. data/test/integration/api_dsl/dsl_menu_test.rb +0 -4
  260. data/test/integration/api_dsl/dsl_stream_test.rb +0 -138
  261. data/test/integration/cursors_test.rb +0 -9
  262. data/test/integration/defining_interfaces_test.rb +0 -26
  263. data/test/integration/run_once_test.rb +0 -26
  264. data/test/integration/views/basic_view_test.rb +0 -807
  265. data/test/lib/vedeu/api/api_test.rb +0 -204
  266. data/test/lib/vedeu/api/composition_test.rb +0 -31
  267. data/test/lib/vedeu/api/defined_test.rb +0 -79
  268. data/test/lib/vedeu/api/helpers_test.rb +0 -111
  269. data/test/lib/vedeu/api/interface_test.rb +0 -410
  270. data/test/lib/vedeu/api/keymap_test.rb +0 -65
  271. data/test/lib/vedeu/api/line_test.rb +0 -83
  272. data/test/lib/vedeu/api/menu_test.rb +0 -85
  273. data/test/lib/vedeu/api/stream_test.rb +0 -59
  274. data/test/lib/vedeu/colours/translator_test.rb +0 -22
  275. data/test/lib/vedeu/models/border_test.rb +0 -197
  276. data/test/lib/vedeu/models/char_test.rb +0 -52
  277. data/test/lib/vedeu/models/composition_test.rb +0 -45
  278. data/test/lib/vedeu/models/key_test.rb +0 -43
  279. data/test/lib/vedeu/models/line_test.rb +0 -123
  280. data/test/lib/vedeu/models/stream_test.rb +0 -233
  281. data/test/lib/vedeu/models/style_test.rb +0 -59
  282. data/test/lib/vedeu/repositories/buffers_test.rb +0 -37
  283. data/test/lib/vedeu/repositories/cursors_test.rb +0 -62
  284. data/test/lib/vedeu/repositories/events_test.rb +0 -57
  285. data/test/lib/vedeu/repositories/groups_test.rb +0 -28
  286. data/test/lib/vedeu/repositories/interfaces_test.rb +0 -51
  287. data/test/lib/vedeu/repositories/keymaps_test.rb +0 -223
  288. data/test/lib/vedeu/repositories/models/buffer_test.rb +0 -174
  289. data/test/lib/vedeu/repositories/models/cursor_test.rb +0 -158
  290. data/test/lib/vedeu/repositories/models/event_test.rb +0 -53
  291. data/test/lib/vedeu/repositories/models/group_test.rb +0 -98
  292. data/test/lib/vedeu/repositories/models/interface_test.rb +0 -130
  293. data/test/lib/vedeu/repositories/models/keymap_test.rb +0 -27
  294. data/test/lib/vedeu/repositories/models/menu_test.rb +0 -246
  295. data/test/lib/vedeu/repositories/models/offset_test.rb +0 -128
  296. data/test/lib/vedeu/repositories/offsets_test.rb +0 -39
  297. data/test/lib/vedeu/support/keymap_validator_test.rb +0 -62
  298. data/test/lib/vedeu/support/model_test.rb +0 -23
  299. data/test/lib/vedeu/support/presentation_test.rb +0 -53
  300. data/test/lib/vedeu/support/registrar_test.rb +0 -94
  301. data/test/lib/vedeu/support/repository_test.rb +0 -208
  302. data/test/support/test_classes/all.rb +0 -5
  303. data/test/support/test_classes/coercions.rb +0 -16
  304. data/test/support/test_classes/model.rb +0 -23
  305. data/test/support/test_modules/all.rb +0 -1
@@ -1,100 +0,0 @@
1
- module Vedeu
2
-
3
- # Validates that a given key is can be used and is not already in-use, either
4
- # by the same interface, globally or as a system key.
5
- #
6
- # @api private
7
- class KeymapValidator
8
-
9
- include Common
10
-
11
- # Checks the key is not in use by the system, is not already defined as a
12
- # global key, is not already defined for the interface specified.
13
- #
14
- # @param storage [Hash]
15
- # @param key [String|Symbol]
16
- # @param interface [String]
17
- # @return [Array] A boolean indicating validity, and a helpful message.
18
- def self.check(storage, key, interface = '')
19
- new(storage, key, interface).check
20
- end
21
-
22
- # Instantiates a new KeymapValidator instance.
23
- #
24
- # @param storage [Hash]
25
- # @param key [String|Symbol]
26
- # @param interface [String]
27
- # @return [KeymapValidator]
28
- def initialize(storage, key, interface = '')
29
- @storage, @key, @interface = storage, key, interface
30
- end
31
-
32
- # @raise [KeyInUse] When the key is already in use.
33
- # @see KeymapValidator.check
34
- def check
35
- if system_key?(key)
36
- fail KeyInUse, "'#{key}' is already in use by the system."
37
-
38
- elsif global_key?(key)
39
- fail KeyInUse, "'#{key}' is already in use as a global key."
40
-
41
- elsif interface_key?(key, interface)
42
- if defined_value?(interface)
43
- fail KeyInUse, "'#{key}' is already in use by this interface."
44
-
45
- else
46
- fail KeyInUse, "'#{key}' is already in use and cannot be global."
47
-
48
- end
49
- end
50
-
51
- true
52
- end
53
-
54
- private
55
-
56
- attr_reader :storage, :key, :interface
57
-
58
- # Returns a boolean indicating whether the key has been registered for the
59
- # named interface's keymap. If no interface is specified, then it is
60
- # assumed that the key is attempting to be registered globally, and so all
61
- # interfaces are checked for this key. (A key cannot be global if an
62
- # interface is using it.)
63
- #
64
- # @param key [String|Symbol]
65
- # @param interface [String]
66
- # @return [Boolean]
67
- def interface_key?(key, interface = '')
68
- if defined_value?(interface)
69
- return false unless storage.key?(interface)
70
-
71
- storage.fetch(interface).keys.include?(key)
72
-
73
- else
74
- storage.keys.reject do |keymap|
75
- keymap == '_global_keymap_'
76
- end.map { |name| storage[name].keys.include?(key) }.any?
77
-
78
- end
79
- end
80
-
81
- # Returns a boolean indicating whether the key is in the global keymap.
82
- #
83
- # @param key [String|Symbol]
84
- # @return [Boolean]
85
- def global_key?(key)
86
- storage.fetch('_global_keymap_').keys.include?(key)
87
- end
88
-
89
- # Returns a boolean indicating whether the key is in the system keymap.
90
- # At present, it is not possible to redefine system keys.
91
- #
92
- # @param key [String|Symbol]
93
- # @return [Boolean]
94
- def system_key?(key)
95
- Configuration.system_keys.values.include?(key)
96
- end
97
-
98
- end # KeymapValidator
99
-
100
- end # Vedeu
@@ -1,14 +0,0 @@
1
- module Vedeu
2
-
3
- module Model
4
-
5
- attr_reader :repository
6
-
7
- # @return [void] The model instance stored in the repository.
8
- def store
9
- repository.store(self)
10
- end
11
-
12
- end # Model
13
-
14
- end # Vedeu
@@ -1,86 +0,0 @@
1
- module Vedeu
2
-
3
- # This module allows the sharing of presentation concerns between the models:
4
- # Interface, Line and Stream.
5
- #
6
- # @api private
7
- module Presentation
8
-
9
- # Returns the colour and style attributes of the receiving class.
10
- #
11
- # @return [Hash]
12
- def view_attributes
13
- {
14
- colour: attributes[:colour],
15
- style: attributes[:style],
16
- }
17
- end
18
-
19
- # Returns a new Colour instance.
20
- #
21
- # @return [Colour]
22
- def colour
23
- @colour ||= Colour.new(attributes[:colour])
24
- end
25
-
26
- # Returns a new Style instance.
27
- #
28
- # @return [Style]
29
- def style
30
- @style ||= Style.new(attributes[:style])
31
- end
32
-
33
- # Converts the colours and styles to escape sequences, and if the parent
34
- # model has previously set the colour and style, reverts back to that for
35
- # consistent formatting.
36
- #
37
- # @return [String]
38
- def to_s
39
- render_colour do
40
- render_style do
41
- data
42
- end
43
- end
44
- end
45
-
46
- private
47
-
48
- # Renders the colour attributes of the receiver, yields (to then render the
49
- # the styles) and once returned, attempts to set the colours back to the
50
- # those of the receiver's parent.
51
- #
52
- # @return [String]
53
- def render_colour(&block)
54
- [ colour.to_s, yield, parent_colour ].join
55
- end
56
-
57
- # Renders the style attributes of the receiver, yields (to then render the
58
- # next model, or finally, the content) and once returned, attempts to set
59
- # the colours back to those of the receiver's parent.
60
- #
61
- # @return [String]
62
- def render_style(&block)
63
- [ style.to_s, yield, parent_style ].join
64
- end
65
-
66
- # Returns the parent colour as an escape sequence if set.
67
- #
68
- # @return [String]
69
- def parent_colour
70
- return '' if parent.nil?
71
-
72
- Colour.new(parent[:colour]).to_s
73
- end
74
-
75
- # Returns the parent style as an escape sequence if set.
76
- #
77
- # @return [String]
78
- def parent_style
79
- return '' if parent.nil?
80
-
81
- Style.new(parent[:style]).to_s
82
- end
83
-
84
- end # Presentation
85
-
86
- end # Vedeu
@@ -1,53 +0,0 @@
1
- module Vedeu
2
-
3
- # When the client application has defined an interface to be used, the
4
- # Registrar stores the attributes into various repositories for later use.
5
- #
6
- # @api private
7
- class Registrar
8
-
9
- REPOSITORIES = [Buffers, Cursors, Groups, Interfaces, Offsets]
10
-
11
- # @param attributes [Hash]
12
- # @return [TrueClass|MissingRequired]
13
- def self.record(attributes = {})
14
- new(attributes).record
15
- end
16
-
17
- # Removes all entities from all repositories. Use with caution.
18
- #
19
- # @return [TrueClass]
20
- def self.reset!
21
- REPOSITORIES.each { |repository| repository.reset }
22
-
23
- true
24
- end
25
-
26
- # @param attributes [Hash]
27
- # @return [Registrar]
28
- def initialize(attributes = {})
29
- @attributes = attributes
30
- end
31
-
32
- # Adds the attributes to a variety of repositories to use later.
33
- #
34
- # @return [TrueClass|MissingRequired]
35
- def record
36
- focus
37
-
38
- REPOSITORIES.each { |repository| repository.add(attributes) }
39
-
40
- true
41
- end
42
-
43
- private
44
-
45
- attr_reader :attributes
46
-
47
- def focus
48
- Focus.add(attributes[:name], attributes[:focus])
49
- end
50
-
51
- end # Registrar
52
-
53
- end # Vedeu
@@ -1,97 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe 'Testing Vedeu::API methods' do
4
-
5
- describe '.configure' do
6
- it 'raises an exception when the required block is not given' do
7
- proc { Vedeu.configure }.must_raise(Vedeu::InvalidSyntax)
8
- end
9
- end
10
-
11
- describe '.defined' do
12
- it 'returns the Vedeu::API::Defined module name' do
13
- Vedeu.defined.must_equal(Vedeu::API::Defined)
14
- end
15
- end
16
-
17
- describe '.event' do
18
- it 'returns a list of event associated with the provided event name ' \
19
- 'after adding the event' do
20
- skip 'Need to mock an event'
21
- Vedeu.event(:_hydrogen_event_).must_equal('')
22
- end
23
-
24
- it 'should raise an exception when the event name is nil or empty' do
25
- skip 'Need to raise an exception'
26
- Vedeu.event(nil).must_equal('')
27
- end
28
- end
29
-
30
- describe '.focus' do
31
- it 'raises an exception when the interface does not exist' do
32
- proc { Vedeu.focus(nil) }.must_raise(Vedeu::ModelNotFound)
33
- end
34
-
35
- it 'raises an exception when the interface does not exist' do
36
- proc { Vedeu.focus('not_defined') }.must_raise(Vedeu::ModelNotFound)
37
- end
38
-
39
- it 'sets the specified interface as in focus' do
40
- skip 'Finish this test off'
41
- Vedeu.focus('hydrogen')
42
- end
43
- end
44
-
45
- describe '.height' do
46
- before { Vedeu::Terminal.console.stubs(:winsize).returns([25, 80]) }
47
-
48
- it 'returns the height of the terminal' do
49
- Vedeu.height.must_equal(25)
50
- end
51
- end
52
-
53
- describe '.interface' do
54
- end
55
-
56
- describe '.keypress' do
57
- end
58
-
59
- describe '.keys' do
60
- end
61
-
62
- describe '.log' do
63
- end
64
-
65
- describe '.menu' do
66
- end
67
-
68
- describe '.render' do
69
- end
70
-
71
- describe '.resize' do
72
- end
73
-
74
- describe '.trigger' do
75
- end
76
-
77
- describe '.unevent' do
78
- end
79
-
80
- describe '.use' do
81
- end
82
-
83
- describe '.view' do
84
- end
85
-
86
- describe '.views' do
87
- end
88
-
89
- describe '.width' do
90
- before { Vedeu::Terminal.console.stubs(:winsize).returns([25, 80]) }
91
-
92
- it 'returns the width of the terminal' do
93
- Vedeu.width.must_equal(80)
94
- end
95
- end
96
-
97
- end
@@ -1,4 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe 'DSL API tests' do
4
- end
@@ -1,4 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe 'DSL Composition tests' do
4
- end
@@ -1,4 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe 'DSL Defined tests' do
4
- end
@@ -1,4 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe 'DSL Helpers tests' do
4
- end
@@ -1,4 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe 'DSL Interface tests' do
4
- end
@@ -1,4 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe 'DSL Keymap tests' do
4
- end
@@ -1,4 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe 'DSL Line tests' do
4
- end
@@ -1,4 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe 'DSL Menu tests' do
4
- end
@@ -1,138 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe 'DSL Stream tests' do
4
-
5
- # describe '#align' do
6
- # it ':left' do
7
- # Vedeu.view 'test' do
8
- # line do
9
- # stream do
10
- # align :left
11
- # end
12
- # end
13
- # end.must_equal({})
14
- # end
15
-
16
- # it ':right' do
17
- # Vedeu.view 'test' do
18
- # line do
19
- # stream do
20
- # align :right
21
- # end
22
- # end
23
- # end.must_equal({})
24
- # end
25
-
26
- # it ':centre' do
27
- # Vedeu.view 'test' do
28
- # line do
29
- # stream do
30
- # align :centre
31
- # end
32
- # end
33
- # end.must_equal({})
34
- # end
35
-
36
- # it ':invalid' do
37
- # proc { Vedeu.view 'test' do
38
- # line do
39
- # stream do
40
- # align :invalid
41
- # end
42
- # end
43
- # end }.must_raise(Vedeu::InvalidSyntax)
44
- # end
45
-
46
- # it ':right overriding :centre' do
47
- # Vedeu.view 'test' do
48
- # line do
49
- # stream do
50
- # align :centre
51
- # align :right
52
- # end
53
- # end
54
- # end.must_equal({})
55
- # end
56
- # end
57
-
58
- # describe '#centre' do
59
- # it 'centre' do
60
- # Vedeu.view 'test' do
61
- # line do
62
- # stream do
63
- # align centre
64
- # end
65
- # end
66
- # end.must_equal({})
67
- # end
68
- # end
69
-
70
- # describe '#left' do
71
- # it 'left' do
72
- # Vedeu.view 'test' do
73
- # line do
74
- # stream do
75
- # align left
76
- # end
77
- # end
78
- # end.must_equal({})
79
- # end
80
- # end
81
-
82
- # describe '#right' do
83
- # it 'right' do
84
- # Vedeu.view 'test' do
85
- # line do
86
- # stream do
87
- # align right
88
- # end
89
- # end
90
- # end.must_equal({})
91
- # end
92
- # end
93
-
94
- # describe '#text' do
95
- # it 'text' do
96
- # Vedeu.view 'test' do
97
- # line do
98
- # stream do
99
- # text 'Some text...'
100
- # end
101
- # end
102
- # end.must_equal({})
103
- # end
104
-
105
- # it 'invalid' do
106
- # proc { Vedeu.view 'test' do
107
- # line do
108
- # stream do
109
- # text
110
- # end
111
- # end
112
- # end }.must_raise(ArgumentError)
113
- # end
114
- # end
115
-
116
- # describe '#width' do
117
- # it 'width' do
118
- # Vedeu.view 'test' do
119
- # line do
120
- # stream do
121
- # width 35
122
- # end
123
- # end
124
- # end.must_equal({})
125
- # end
126
-
127
- # it 'invalid' do
128
- # proc { Vedeu.view 'test' do
129
- # line do
130
- # stream do
131
- # width
132
- # end
133
- # end
134
- # end }.must_raise(ArgumentError)
135
- # end
136
- # end
137
-
138
- end
@@ -1,9 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- describe 'Integrations: Testing cursors, offsets and viewports' do
6
-
7
- end
8
-
9
- end # Vedeu
@@ -1,26 +0,0 @@
1
- require 'test_helper'
2
-
3
- class MyFirstApplication
4
- include Vedeu
5
-
6
- interface 'hydrogen' do
7
- x 2
8
- y 2
9
- width 40
10
- height 4
11
- centred false
12
- delay 0.25
13
- group 'elements'
14
- end
15
-
16
- def initialize; end
17
- end
18
-
19
- describe 'Define an interface' do
20
- it 'defines an interface' do
21
- skip
22
- MyFirstApplication.new
23
-
24
- Vedeu.defined.interfaces.must_equal(['hydrogen'])
25
- end
26
- end
@@ -1,26 +0,0 @@
1
- require 'test_helper'
2
-
3
- class MyFirstApplication
4
- include Vedeu
5
-
6
- interface 'hydrogen' do
7
- x 2
8
- y 2
9
- width 50
10
- height 2
11
- end
12
-
13
- def self.start
14
- Vedeu::Launcher.new(['--run-once', '--noninteractive']).execute!
15
- end
16
- end
17
-
18
- describe 'Run the application once, printing a message on the screen and ' \
19
- 'gracefully terminating.' do
20
- it 'writes a message to the screen' do
21
- skip
22
- stdout, stderr = capture_io { MyFirstApplication.start }
23
- stdout.must_equal('Great success! Now, try something a little harder.')
24
- stderr.must_equal('')
25
- end
26
- end