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,807 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
- module API
5
- describe Interface do
6
- describe '#build' do
7
- before do
8
- @interface = Vedeu.interface('testing_view') do
9
- x 1
10
- y 1
11
- colour foreground: '#ffffff', background: '#000000'
12
- centred false
13
- end
14
- end
15
-
16
- it 'builds a basic view' do
17
- Vedeu.view 'testing_view' do
18
- line do
19
- text 'All text declarations within a line '
20
- text 'are treated as one line.'
21
- end
22
- end.must_equal(
23
- { interfaces: [{
24
- border: {},
25
- name: 'testing_view',
26
- cursor: :hide,
27
- group: '',
28
- colour: {},
29
- style: '',
30
- geometry: {},
31
- delay: 0.0,
32
- parent: {},
33
- lines: [
34
- {
35
- parent: {colour: {}, style: ''},
36
- colour: {},
37
- style: [],
38
- streams: [
39
- {
40
- text: 'All text declarations within a line '
41
- }, {
42
- text: 'are treated as one line.'
43
- }
44
- ]
45
- }
46
- ]
47
- }] }
48
- )
49
- end
50
-
51
- it 'handles coloured lines' do
52
- Vedeu.view 'testing_view' do
53
- line do
54
- text '1. Line without colours.'
55
- end
56
- end.must_equal(
57
- { interfaces: [{
58
- border: {},
59
- name: 'testing_view',
60
- cursor: :hide,
61
- group: '',
62
- colour: {},
63
- style: '',
64
- geometry: {},
65
- delay: 0.0,
66
- parent: {},
67
- lines: [
68
- {
69
- parent: {colour: {}, style: ''},
70
- colour: {},
71
- style: [],
72
- streams: [{ text: '1. Line without colours.' }]
73
- }
74
- ]
75
- }] }
76
- )
77
- end
78
-
79
- it 'handles coloured lines' do
80
- Vedeu.view 'testing_view' do
81
- line do
82
- colour background: '#ff0000', foreground: '#ffff00'
83
- text '2. Line with colours.'
84
- end
85
- end.must_equal(
86
- { interfaces: [{
87
- border: {},
88
- name: 'testing_view',
89
- cursor: :hide,
90
- group: '',
91
- colour: {},
92
- style: '',
93
- geometry: {},
94
- delay: 0.0,
95
- parent: {},
96
- lines: [
97
- {
98
- parent: {colour: {}, style: ''},
99
- colour: { background: '#ff0000', foreground: '#ffff00' },
100
- style: [],
101
- streams: [{ text: '2. Line with colours.' }]
102
- }
103
- ]
104
- }] }
105
- )
106
- end
107
-
108
- it 'handles coloured lines' do
109
- Vedeu.view 'testing_view' do
110
- line do
111
- colour foreground: '#a7ff00', background: '#005700'
112
- text '3. Line with explicit colour declaration.'
113
- end
114
- end.must_equal(
115
- { interfaces: [{
116
- border: {},
117
- name: 'testing_view',
118
- cursor: :hide,
119
- group: '',
120
- colour: {},
121
- style: '',
122
- geometry: {},
123
- delay: 0.0,
124
- parent: {},
125
- lines: [
126
- {
127
- parent: {colour: {}, style: ''},
128
- colour: { background: '#005700', foreground: '#a7ff00' },
129
- style: [],
130
- streams: [{ text: '3. Line with explicit colour declaration.' }]
131
- }
132
- ]
133
- }] }
134
- )
135
- end
136
-
137
- it 'handles coloured lines' do
138
- Vedeu.view 'testing_view' do
139
- line do # actually uses streams
140
- foreground '#ff00ff' do
141
- text '4. Line with only foreground set.'
142
- end
143
- end
144
- end.must_equal(
145
- { interfaces: [{
146
- border: {},
147
- name: 'testing_view',
148
- cursor: :hide,
149
- group: '',
150
- colour: {},
151
- style: '',
152
- geometry: {},
153
- delay: 0.0,
154
- parent: {},
155
- lines: [
156
- {
157
- parent: {colour: {}, style: ''},
158
- colour: {},
159
- style: [],
160
- streams: [{
161
- colour: { foreground: '#ff00ff' },
162
- style: [],
163
- text: '4. Line with only foreground set.',
164
- width: nil,
165
- align: :left,
166
- parent: {colour: {}, style: []},
167
- }]
168
- }
169
- ]
170
- }] }
171
- )
172
- end
173
-
174
- it 'handles coloured lines' do
175
- Vedeu.view 'testing_view' do
176
- line do # actually uses streams
177
- background '#00ff00' do
178
- text '5. Line with only background set.'
179
- end
180
- end
181
- end.must_equal(
182
- { interfaces: [{
183
- border: {},
184
- name: 'testing_view',
185
- cursor: :hide,
186
- group: '',
187
- colour: {},
188
- style: '',
189
- geometry: {},
190
- delay: 0.0,
191
- parent: {},
192
- lines: [
193
- {
194
- parent: {colour: {}, style: ''},
195
- colour: {},
196
- style: [],
197
- streams: [{
198
- colour: { background: '#00ff00' },
199
- style: [],
200
- text: '5. Line with only background set.',
201
- width: nil,
202
- align: :left,
203
- parent: {colour: {}, style: []},
204
- }]
205
- }
206
- ]
207
- }] }
208
- )
209
- end
210
-
211
- it 'handles styles' do
212
- Vedeu.view 'testing_view' do
213
- line do
214
- style 'normal'
215
- text '1. Line with a normal style.'
216
- end
217
- end.must_equal(
218
- { interfaces: [{
219
- border: {},
220
- name: 'testing_view',
221
- cursor: :hide,
222
- group: '',
223
- colour: {},
224
- style: '',
225
- geometry: {},
226
- delay: 0.0,
227
- parent: {},
228
- lines: [
229
- {
230
- parent: {colour: {}, style: ''},
231
- colour: {},
232
- style: ['normal'],
233
- streams: [{
234
- text: '1. Line with a normal style.'
235
- }]
236
- }
237
- ]
238
- }] }
239
- )
240
- end
241
-
242
- it 'handles styles' do
243
- Vedeu.view 'testing_view' do
244
- line do
245
- style 'underline'
246
- text '2. Line with an underline style.'
247
- end
248
- end.must_equal(
249
- { interfaces: [{
250
- border: {},
251
- name: 'testing_view',
252
- cursor: :hide,
253
- group: '',
254
- colour: {},
255
- style: '',
256
- geometry: {},
257
- delay: 0.0,
258
- parent: {},
259
- lines: [
260
- {
261
- parent: {colour: {}, style: ''},
262
- colour: {},
263
- style: ['underline'],
264
- streams: [{
265
- text: '2. Line with an underline style.'
266
- }]
267
- }
268
- ]
269
- }] }
270
- )
271
- end
272
-
273
- it 'handles styles' do
274
- Vedeu.view 'testing_view' do
275
- line do # actually uses streams
276
- style 'normal' do
277
- text '3. Line with a normal style.'
278
- end
279
- end
280
- end.must_equal(
281
- { interfaces: [{
282
- border: {},
283
- name: 'testing_view',
284
- cursor: :hide,
285
- group: '',
286
- colour: {},
287
- style: '',
288
- geometry: {},
289
- delay: 0.0,
290
- parent: {},
291
- lines: [
292
- {
293
- parent: {colour: {}, style: ''},
294
- colour: {},
295
- style: [],
296
- streams: [{
297
- colour: {},
298
- style: ['normal'],
299
- text: '3. Line with a normal style.',
300
- width: nil,
301
- align: :left,
302
- parent: nil,
303
- }]
304
- }
305
- ]
306
- }] }
307
- )
308
- end
309
-
310
- it 'handles styles' do
311
- Vedeu.view 'testing_view' do
312
- line do # actually uses streams
313
- style 'underline' do
314
- text '4. Line with an underlined style.'
315
- end
316
- end
317
- end.must_equal(
318
- { interfaces: [{
319
- border: {},
320
- name: 'testing_view',
321
- cursor: :hide,
322
- group: '',
323
- colour: {},
324
- style: '',
325
- geometry: {},
326
- delay: 0.0,
327
- parent: {},
328
- lines: [
329
- {
330
- parent: {colour: {}, style: ''},
331
- colour: {},
332
- style: [],
333
- streams: [{
334
- colour: {},
335
- style: ['underline'],
336
- text: '4. Line with an underlined style.',
337
- width: nil,
338
- align: :left,
339
- parent: nil,
340
- }]
341
- }
342
- ]
343
- }] }
344
- )
345
- end
346
-
347
- it 'handles streams, which means sub-line colours and styles' do
348
- Vedeu.view 'testing_view' do
349
- line do
350
- stream do
351
- text 'A stream of text.'
352
- end
353
- end
354
- end.must_equal(
355
- { interfaces: [{
356
- border: {},
357
- name: 'testing_view',
358
- cursor: :hide,
359
- group: '',
360
- colour: {},
361
- style: '',
362
- geometry: {},
363
- delay: 0.0,
364
- parent: {},
365
- lines: [
366
- {
367
- parent: {colour: {}, style: ''},
368
- colour: {},
369
- style: [],
370
- streams: [
371
- {
372
- parent: {colour: {}, style: []},
373
- colour: {},
374
- style: [],
375
- text: 'A stream of text.',
376
- width: nil,
377
- align: :left
378
- }
379
- ]
380
- }
381
- ]
382
- }] }
383
- )
384
- end
385
-
386
- it 'handles streams, which means sub-line colours and styles' do
387
- Vedeu.view 'testing_view' do
388
- line do
389
- stream do # Stream is an 'explicit declaration'.
390
- # We don't need it unless we want to add colours and styles.
391
- # See below.
392
- text '1. Two streams of text, these will be'
393
- end
394
-
395
- stream do
396
- text ' on the same line- note the space.'
397
- end
398
- end
399
- end.must_equal(
400
- { interfaces: [{
401
- border: {},
402
- name: 'testing_view',
403
- cursor: :hide,
404
- group: '',
405
- colour: {},
406
- style: '',
407
- geometry: {},
408
- delay: 0.0,
409
- parent: {},
410
- lines: [
411
- {
412
- parent: {colour: {}, style: ''},
413
- colour: {},
414
- style: [],
415
- streams: [
416
- {
417
- colour: {},
418
- style: [],
419
- text: '1. Two streams of text, these will be',
420
- width: nil,
421
- align: :left,
422
- parent: {colour: {}, style: []},
423
- }, {
424
- colour: {},
425
- style: [],
426
- text: ' on the same line- note the space.',
427
- width: nil,
428
- align: :left,
429
- parent: {colour: {}, style: []},
430
- }
431
- ]
432
- }
433
- ]
434
- }] }
435
- )
436
- end
437
-
438
- it 'handles streams, which means sub-line colours and styles' do
439
- Vedeu.view 'testing_view' do
440
- line do
441
- stream do
442
- text '2. Streams can have'
443
- end
444
-
445
- stream do
446
- colour foreground: '#ff0000', background: '#00ff00'
447
- text ' colours too.'
448
- end
449
- end
450
- end.must_equal(
451
- { interfaces: [{
452
- border: {},
453
- name: 'testing_view',
454
- cursor: :hide,
455
- group: '',
456
- colour: {},
457
- style: '',
458
- geometry: {},
459
- delay: 0.0,
460
- parent: {},
461
- lines: [
462
- {
463
- parent: {colour: {}, style: ''},
464
- colour: {},
465
- style: [],
466
- streams: [
467
- {
468
- colour: {},
469
- style: [],
470
- text: '2. Streams can have',
471
- width: nil,
472
- align: :left,
473
- parent: {colour: {}, style: []},
474
- }, {
475
- colour: {
476
- foreground: '#ff0000',
477
- background: '#00ff00'
478
- },
479
- style: [],
480
- text: ' colours too.',
481
- width: nil,
482
- align: :left,
483
- parent: {colour: {}, style: []},
484
- }
485
- ]
486
- }
487
- ]
488
- }] }
489
- )
490
- end
491
-
492
- it 'handles streams, which means sub-line colours and styles' do
493
- Vedeu.view 'testing_view' do
494
- line do
495
- stream do
496
- text '3. Streams can have'
497
- end
498
-
499
- stream do
500
- style 'underline'
501
- text ' styles too.'
502
- end
503
- end
504
- end.must_equal(
505
- { interfaces: [{
506
- border: {},
507
- name: 'testing_view',
508
- cursor: :hide,
509
- group: '',
510
- colour: {},
511
- style: '',
512
- geometry: {},
513
- delay: 0.0,
514
- parent: {},
515
- lines: [
516
- {
517
- parent: {colour: {}, style: ''},
518
- colour: {},
519
- style: [],
520
- streams: [
521
- {
522
- colour: {},
523
- style: [],
524
- text: '3. Streams can have',
525
- width: nil,
526
- align: :left,
527
- parent: {colour: {}, style: []},
528
- }, {
529
- colour: {},
530
- style: ['underline'],
531
- text: ' styles too.',
532
- width: nil,
533
- align: :left,
534
- parent: {colour: {}, style: []},
535
- }
536
- ]
537
- }
538
- ]
539
- }] }
540
- )
541
- end
542
-
543
- it 'handles alignment' do
544
- Vedeu.view 'testing_view' do
545
- line do
546
- stream do
547
- width 80
548
- text 'This is aligned left, and padded with spaces.'
549
- end
550
- end
551
- end.must_equal(
552
- { interfaces: [{
553
- border: {},
554
- name: 'testing_view',
555
- cursor: :hide,
556
- group: '',
557
- colour: {},
558
- style: '',
559
- geometry: {},
560
- delay: 0.0,
561
- parent: {},
562
- lines: [{
563
- parent: {colour: {}, style: ''},
564
- colour: {},
565
- style: [],
566
- streams: [{
567
- parent: {colour: {}, style: []},
568
- align: :left,
569
- colour: {},
570
- style: [],
571
- width: 80,
572
- text: 'This is aligned left, and padded with spaces.'
573
- }]
574
- }]
575
- }] }
576
- )
577
- end
578
-
579
- it 'handles alignment' do
580
- Vedeu.view 'testing_view' do
581
- line do
582
- stream do
583
- width 80
584
- align :left # explicit
585
- text 'This is aligned left, and padded with spaces.'
586
- end
587
- end
588
- end.must_equal(
589
- { interfaces: [{
590
- border: {},
591
- name: 'testing_view',
592
- cursor: :hide,
593
- group: '',
594
- colour: {},
595
- style: '',
596
- geometry: {},
597
- delay: 0.0,
598
- parent: {},
599
- lines: [{
600
- parent: {colour: {}, style: ''},
601
- colour: {},
602
- style: [],
603
- streams: [{
604
- parent: {colour: {}, style: []},
605
- colour: {},
606
- style: [],
607
- width: 80,
608
- align: :left,
609
- text: 'This is aligned left, and padded with spaces.'
610
- }]
611
- }]
612
- }] }
613
- )
614
- end
615
-
616
- it 'handles alignment' do
617
- Vedeu.view 'testing_view' do
618
- line do
619
- stream do
620
- width 80
621
- align :centre
622
- text 'This is aligned centrally, and padded with spaces.'
623
- end
624
- end
625
- end.must_equal(
626
- { interfaces: [{
627
- border: {},
628
- name: 'testing_view',
629
- cursor: :hide,
630
- group: '',
631
- colour: {},
632
- style: '',
633
- geometry: {},
634
- delay: 0.0,
635
- parent: {},
636
- lines: [{
637
- parent: {colour: {}, style: ''},
638
- colour: {},
639
- style: [],
640
- streams: [{
641
- parent: {colour: {}, style: []},
642
- colour: {},
643
- style: [],
644
- width: 80,
645
- align: :centre,
646
- text: 'This is aligned centrally, and padded with spaces.'
647
- }]
648
- }]
649
- }] }
650
- )
651
- end
652
-
653
- it 'handles alignment' do
654
- Vedeu.view 'testing_view' do
655
- line do
656
- stream do
657
- width 80
658
- align :right
659
- text 'This is aligned right, and padded with spaces.'
660
- end
661
- end
662
- end.must_equal(
663
- { interfaces: [{
664
- border: {},
665
- name: 'testing_view',
666
- cursor: :hide,
667
- group: '',
668
- colour: {},
669
- style: '',
670
- geometry: {},
671
- delay: 0.0,
672
- parent: {},
673
- lines: [{
674
- parent: {colour: {}, style: ''},
675
- colour: {},
676
- style: [],
677
- streams: [{
678
- parent: {colour: {}, style: []},
679
- colour: {},
680
- style: [],
681
- width: 80,
682
- align: :right,
683
- text: 'This is aligned right, and padded with spaces.'
684
- }]
685
- }]
686
- }] }
687
- )
688
- end
689
-
690
- it 'handles multiple colour and text statements correctly' do
691
- Vedeu.view 'testing_view' do
692
- line do
693
- foreground('#ffff00') { text "\u{25B2}" }
694
- text " Prev"
695
-
696
- foreground('#ffff00') { text "\u{25BC}" }
697
- text " Next"
698
-
699
- foreground('#ffff00') { text "\u{21B2}" }
700
- text " Select"
701
-
702
- foreground('#ffff00') { text "\u{2395}" }
703
- text " Pause"
704
-
705
- foreground('#ffff00') { text "Q" }
706
- text " Quit"
707
- end
708
- end.must_equal(
709
- { interfaces: [{
710
- border: {},
711
- name: 'testing_view',
712
- cursor: :hide,
713
- group: '',
714
- colour: {},
715
- style: '',
716
- geometry: {},
717
- delay: 0.0,
718
- parent: {},
719
- lines: [
720
- {
721
- parent: {colour: {}, style: ''},
722
- colour: {},
723
- style: [],
724
- streams: [
725
- {
726
- colour: {
727
- foreground: '#ffff00'
728
- },
729
- style: [],
730
- text: "▲",
731
- width: nil,
732
- align: :left,
733
- parent: {colour: {}, style: []},
734
- }, {
735
- text: " Prev",
736
- }, {
737
- colour: {
738
- foreground: '#ffff00'
739
- },
740
- style: [],
741
- text: "▼",
742
- width: nil,
743
- align: :left,
744
- parent: {colour: {}, style: []},
745
- }, {
746
- text: " Next",
747
- }, {
748
- colour: {
749
- foreground: '#ffff00'
750
- },
751
- style: [],
752
- text: "↲",
753
- width: nil,
754
- align: :left,
755
- parent: {colour: {}, style: []},
756
- }, {
757
- text: " Select",
758
- }, {
759
- colour: {
760
- foreground: '#ffff00'
761
- },
762
- style: [],
763
- text: "⎕",
764
- width: nil,
765
- align: :left,
766
- parent: {colour: {}, style: []},
767
- }, {
768
- text: " Pause",
769
- }, {
770
- colour: {
771
- foreground: '#ffff00'
772
- },
773
- style: [],
774
- text: "Q",
775
- width: nil,
776
- align: :left,
777
- parent: {colour: {}, style: []},
778
- }, {
779
- text: " Quit",
780
- }
781
- ]
782
- }
783
- ]
784
- }] }
785
- )
786
- end
787
-
788
- it 'allows inline values for line' do
789
- Vedeu.interface 'helium' do
790
- # ...
791
- end
792
-
793
- attributes = Vedeu.view 'helium' do
794
- line 'A headline, if you will.'
795
- line # with a spacer line
796
- line 'This is a line of text...'
797
- line do
798
- text '...we can mix and match...'
799
- end
800
- line '...to our hearts content.'
801
- end
802
- attributes[:interfaces].first[:lines].size.must_equal(5)
803
- end
804
- end
805
- end
806
- end
807
- end