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
@@ -0,0 +1,281 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'vedeu'
5
+
6
+ class DSLApp
7
+
8
+ Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
9
+
10
+ Vedeu.configure do
11
+ debug!
12
+ log '/tmp/vedeu_views_dsl.log'
13
+ renderers Vedeu::Renderers::File.new(filename: '/tmp/lines.out')
14
+ run_once!
15
+ standalone!
16
+ end
17
+
18
+ Vedeu.interface :test1_interface do
19
+ border do
20
+ title 'Test 1'
21
+ end
22
+ geometry do
23
+ x 4
24
+ y 3
25
+ xn 34
26
+ yn 8
27
+ end
28
+ end
29
+
30
+ Vedeu.interface :help1_interface do
31
+ geometry do
32
+ x use(:test1_interface).x
33
+ y use(:test1_interface).south
34
+ xn use(:test1_interface).xn
35
+ yn use(:test1_interface).south(3)
36
+ end
37
+ end
38
+
39
+ Vedeu.interface :test2_interface do
40
+ border do
41
+ title 'Test 2'
42
+ end
43
+ geometry do
44
+ x use(:test1_interface).east(6)
45
+ y use(:test1_interface).y
46
+ width use(:test1_interface).width
47
+ height use(:test1_interface).height
48
+ end
49
+ end
50
+
51
+ Vedeu.interface :help2_interface do
52
+ geometry do
53
+ x use(:test2_interface).x
54
+ y use(:test2_interface).south
55
+ xn use(:test2_interface).xn
56
+ yn use(:test2_interface).south(3)
57
+ end
58
+ end
59
+
60
+ Vedeu.interface :test3_interface do
61
+ border do
62
+ title 'Test 3'
63
+ end
64
+ geometry do
65
+ x use(:help1_interface).x
66
+ y use(:help1_interface).south
67
+ xn use(:help1_interface).xn
68
+ yn use(:help1_interface).south(5)
69
+ end
70
+ end
71
+
72
+ Vedeu.interface :help3_interface do
73
+ geometry do
74
+ x use(:test3_interface).x
75
+ y use(:test3_interface).south
76
+ xn use(:test3_interface).xn
77
+ yn use(:test3_interface).south(5)
78
+ end
79
+ end
80
+
81
+ Vedeu.interface :test4_interface do
82
+ border do
83
+ title 'Test 4'
84
+ end
85
+ geometry do
86
+ x use(:help2_interface).x
87
+ y use(:help2_interface).south
88
+ xn use(:help2_interface).xn
89
+ yn use(:help2_interface).south(5)
90
+ end
91
+ end
92
+
93
+ Vedeu.interface :help4_interface do
94
+ geometry do
95
+ x use(:test4_interface).x
96
+ y use(:test4_interface).south
97
+ xn use(:test4_interface).xn
98
+ yn use(:test4_interface).south(5)
99
+ end
100
+ end
101
+
102
+ Vedeu.interface :test5_interface do
103
+ border do
104
+ title 'Test 5'
105
+ end
106
+ geometry do
107
+ x use(:help1_interface).x
108
+ y use(:help3_interface).south
109
+ xn use(:help1_interface).xn
110
+ yn use(:help3_interface).south(5)
111
+ end
112
+ end
113
+
114
+ Vedeu.interface :help5_interface do
115
+ geometry do
116
+ x use(:test5_interface).x
117
+ y use(:test5_interface).south
118
+ xn use(:test5_interface).xn
119
+ yn use(:test5_interface).south(5)
120
+ end
121
+ end
122
+
123
+ Vedeu.interface :test6_interface do
124
+ border do
125
+ title 'Test 6'
126
+ end
127
+ geometry do
128
+ x use(:help4_interface).x
129
+ y use(:help4_interface).south
130
+ xn use(:help4_interface).xn
131
+ yn use(:help4_interface).south(5)
132
+ end
133
+ end
134
+
135
+ Vedeu.interface :help6_interface do
136
+ geometry do
137
+ x use(:test6_interface).x
138
+ y use(:test6_interface).south
139
+ xn use(:test6_interface).xn
140
+ yn use(:test6_interface).south(5)
141
+ end
142
+ end
143
+
144
+ Vedeu.render do
145
+ view(:test1_interface) do
146
+ stream 'view->stream', { foreground: '#ff0000' }
147
+ end
148
+
149
+ view(:help1_interface) do
150
+ stream 'A single stream within a view.'
151
+ end
152
+
153
+ view(:test2_interface) do
154
+ stream 'view->stream 1', { foreground: '#ff7f00' }
155
+ stream 'view->stream 2', { foreground: '#ffff00' }
156
+ end
157
+
158
+ view(:help2_interface) do
159
+ stream 'Multiple streams within a view.'
160
+ stream '(No line/lines block)'
161
+ end
162
+
163
+ view(:test3_interface) do
164
+ line do
165
+ stream 'view->line 1->stream', { foreground: '#00ff00' }
166
+ end
167
+ line do
168
+ stream 'view->line 2->stream 1', { foreground: '#007fff' }
169
+ stream 'view->line 2->stream 2', { foreground: '#ff00ff' }
170
+ end
171
+ end
172
+
173
+ view(:help3_interface) do
174
+ line do
175
+ stream 'Multiple `stream` keywords'
176
+ end
177
+ line do
178
+ stream 'within a line '
179
+ stream '(block) are'
180
+ end
181
+ line do
182
+ stream 'treated as separate streams.'
183
+ end
184
+ end
185
+
186
+ view(:test4_interface) do
187
+ lines do
188
+ line do
189
+ stream 'view->lines->line->stream', { foreground: '#5500cc' }
190
+ end
191
+ line do
192
+ stream 'view->stream 2->text 1', { foreground: '#ff00ff' }
193
+ stream 'view->stream 2->text 2', { foreground: '#ffffff' }
194
+ end
195
+ end
196
+ end
197
+
198
+ view(:help4_interface) do
199
+ lines do
200
+ line do
201
+ stream 'A single stream within a line', { foreground: '#5500cc' }
202
+ end
203
+ line do
204
+ stream 'block, ', { foreground: '#5500cc' }
205
+ stream 'is treated as a single', { foreground: '#5500cc' }
206
+ end
207
+ line do
208
+ stream 'line. ', { foreground: '#5500cc' }
209
+ stream 'Multiple ', { foreground: '#ff00ff' }
210
+ stream '`stream` ', { foreground: '#ffffff' }
211
+ stream 'entries', { foreground: '#ff00ff' }
212
+ end
213
+ line do
214
+ stream 'are treated as ', { foreground: '#ff00ff' }
215
+ stream 'separate streams', { foreground: '#ffffff' }
216
+ end
217
+ line do
218
+ stream 'in the line.', { foreground: '#ff00ff' }
219
+ end
220
+ end
221
+ end
222
+
223
+ view(:test5_interface) do
224
+ stream do
225
+ text 'view->stream->text 1', { foreground: '#00ff00' }
226
+ text 'view->stream->text 2', { foreground: '#007fff' }
227
+ end
228
+ end
229
+
230
+ view(:help5_interface) do
231
+ stream do
232
+ text 'Multiple ', { foreground: '#00ff00' }
233
+ text '`text` ', { foreground: '#007fff' }
234
+ text 'keywords within', { foreground: '#00ff00' }
235
+ end
236
+ stream do
237
+ text 'a ', { foreground: '#00ff00' }
238
+ text '`stream` ', { foreground: '#007fff' }
239
+ text 'block view are', { foreground: '#00ff00' }
240
+ end
241
+ stream do
242
+ text 'treated as ', { foreground: '#00ff00' }
243
+ text 'separate streams.', { foreground: '#007fff' }
244
+ end
245
+ end
246
+
247
+ view(:test6_interface) do
248
+ line do
249
+ streams do
250
+ stream 'v->l->ss->stream 1', { foreground: '#00ff00' }
251
+ stream 'v->l->ss->stream 2', { foreground: '#007fff' }
252
+ end
253
+ end
254
+ end
255
+
256
+ view(:help6_interface) do
257
+ line do
258
+ streams do
259
+ stream 'Multiple ', { foreground: '#00ff00' }
260
+ stream '`stream` ', { foreground: '#007fff' }
261
+ stream 'within a ', { foreground: '#00ff00' }
262
+ end
263
+ end
264
+ line do
265
+ streams do
266
+ stream '`streams` ', { foreground: '#007fff' }
267
+ stream 'within a ', { foreground: '#00ff00' }
268
+ stream '`line`', { foreground: '#007fff' }
269
+ stream '.', { foreground: '#00ff00' }
270
+ end
271
+ end
272
+ end
273
+ end
274
+
275
+ def self.start(argv = ARGV)
276
+ Vedeu::Launcher.execute!(argv)
277
+ end
278
+
279
+ end # EditorApp
280
+
281
+ DSLApp.start
@@ -0,0 +1,231 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'vedeu'
5
+
6
+ class DSLApp
7
+
8
+ Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
9
+
10
+ Vedeu.configure do
11
+ debug!
12
+ log '/tmp/vedeu_views_dsl.log'
13
+ renderers Vedeu::Renderers::File.new(filename: '/tmp/lines_alignment.out')
14
+ run_once!
15
+ standalone!
16
+ end
17
+
18
+ Vedeu.interface :test1_interface do
19
+ border do
20
+ title 'Test 1'
21
+ end
22
+ geometry do
23
+ x 4
24
+ y 3
25
+ xn 35
26
+ yn 8
27
+ end
28
+ end
29
+
30
+ Vedeu.interface :help1_interface do
31
+ geometry do
32
+ x use(:test1_interface).x
33
+ y use(:test1_interface).south
34
+ xn use(:test1_interface).xn
35
+ yn use(:test1_interface).south(5)
36
+ end
37
+ end
38
+
39
+ Vedeu.interface :test2_interface do
40
+ border do
41
+ title 'Test 2'
42
+ end
43
+ geometry do
44
+ x use(:test1_interface).east(6)
45
+ y use(:test1_interface).y
46
+ width use(:test1_interface).width
47
+ height use(:test1_interface).height
48
+ end
49
+ end
50
+
51
+ Vedeu.interface :help2_interface do
52
+ geometry do
53
+ x use(:test2_interface).x
54
+ y use(:test2_interface).south
55
+ xn use(:test2_interface).xn
56
+ yn use(:test2_interface).south(5)
57
+ end
58
+ end
59
+
60
+ Vedeu.interface :test3_interface do
61
+ border do
62
+ title 'Test 3'
63
+ end
64
+ geometry do
65
+ x use(:help1_interface).x
66
+ y use(:help1_interface).south
67
+ xn use(:help1_interface).xn
68
+ yn use(:help1_interface).south(5)
69
+ end
70
+ end
71
+
72
+ Vedeu.interface :help3_interface do
73
+ geometry do
74
+ x use(:test3_interface).x
75
+ y use(:test3_interface).south
76
+ xn use(:test3_interface).xn
77
+ yn use(:test3_interface).south(5)
78
+ end
79
+ end
80
+
81
+ Vedeu.interface :test4_interface do
82
+ border do
83
+ title 'Test 4'
84
+ end
85
+ geometry do
86
+ x use(:help2_interface).x
87
+ y use(:help2_interface).south
88
+ xn use(:help2_interface).xn
89
+ yn use(:help2_interface).south(5)
90
+ end
91
+ end
92
+
93
+ Vedeu.interface :help4_interface do
94
+ geometry do
95
+ x use(:test4_interface).x
96
+ y use(:test4_interface).south
97
+ xn use(:test4_interface).xn
98
+ yn use(:test4_interface).south(5)
99
+ end
100
+ end
101
+
102
+ Vedeu.interface :test5_interface do
103
+ border do
104
+ title 'Test 5'
105
+ end
106
+ geometry do
107
+ x use(:help1_interface).x
108
+ y use(:help3_interface).south
109
+ xn use(:help1_interface).xn
110
+ yn use(:help3_interface).south(5)
111
+ end
112
+ end
113
+
114
+ Vedeu.interface :help5_interface do
115
+ geometry do
116
+ x use(:test5_interface).x
117
+ y use(:test5_interface).south
118
+ xn use(:test5_interface).xn
119
+ yn use(:test5_interface).south(5)
120
+ end
121
+ end
122
+
123
+ Vedeu.interface :test6_interface do
124
+ border do
125
+ title 'Test 6'
126
+ end
127
+ geometry do
128
+ x use(:help4_interface).x
129
+ y use(:help4_interface).south
130
+ xn use(:help4_interface).xn
131
+ yn use(:help4_interface).south(5)
132
+ end
133
+ end
134
+
135
+ Vedeu.interface :help6_interface do
136
+ geometry do
137
+ x use(:test6_interface).x
138
+ y use(:test6_interface).south
139
+ xn use(:test6_interface).xn
140
+ yn use(:test6_interface).south(5)
141
+ end
142
+ end
143
+
144
+ Vedeu.render do
145
+ view(:test1_interface) do
146
+ line 'view->line (align: :left)', { align: :left }
147
+ line 'view->line (align: :center)', { align: :center }
148
+ line 'view->line (align: :centre)', { align: :centre }
149
+ line 'view->line (align: :right)', { align: :right }
150
+ end
151
+
152
+ view(:help1_interface) do
153
+ line '`:align` option on the `line`'
154
+ line 'DSL method. (no width or name'
155
+ line 'set)'
156
+ end
157
+
158
+ view(:test2_interface) do
159
+ left 'view->left'
160
+ center 'view->center'
161
+ centre 'view->centre'
162
+ right 'view->right'
163
+ end
164
+
165
+ view(:help2_interface) do
166
+ lines do
167
+ ''
168
+ end
169
+ end
170
+
171
+ view(:test3_interface) do
172
+ lines do
173
+ left 'view->lines->left 1', { foreground: '#ff0000' }
174
+ left 'view->lines->left 2', { background: '#ff0000', foreground: '#000000' }
175
+ end
176
+ end
177
+
178
+ view(:help3_interface) do
179
+ lines do
180
+ ''
181
+ end
182
+ end
183
+
184
+ view(:test4_interface) do
185
+ lines do
186
+ right 'view->lines->right 1', { foreground: '#00ff00' }
187
+ right 'view->lines->right 2', { background: '#00ff00', foreground: '#000000' }
188
+ end
189
+ end
190
+
191
+ view(:help4_interface) do
192
+ lines do
193
+ ''
194
+ end
195
+ end
196
+
197
+ view(:test5_interface) do
198
+ lines do
199
+ centre 'view->lines->centre 1', { foreground: '#0044ff' }
200
+ centre 'view->lines->centre 2', { background: '#0044ff', foreground: '#000000' }
201
+ end
202
+ end
203
+
204
+ view(:help5_interface) do
205
+ lines do
206
+ ''
207
+ end
208
+ end
209
+
210
+ view(:test6_interface) do
211
+ foreground '#ffffff'
212
+ line do
213
+ left 'v->l->left', { background: '#aa2200', width: 15 }
214
+ right 'v->l->right', { background: '#0022ff', width: 15 }
215
+ end
216
+ line do
217
+ centre 'v->l->centre', { background: '#007700', width: 30 }
218
+ end
219
+ end
220
+
221
+ view(:help6_interface) do
222
+ end
223
+ end
224
+
225
+ def self.start(argv = ARGV)
226
+ Vedeu::Launcher.execute!(argv)
227
+ end
228
+
229
+ end # EditorApp
230
+
231
+ DSLApp.start