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
@@ -1,150 +0,0 @@
1
- module Vedeu
2
-
3
- module DSL
4
-
5
- # DSL for creating collections of interfaces.
6
- #
7
- # Views with Vedeu are made up of simple building blocks. These
8
- # blocks can be arranged in a multitude of ways which I hope is
9
- # more than sufficient for your design needs.
10
-
11
- # - A view (`Composition`) is made up of one or more interfaces.
12
- # - An interface is an area on the screen where you can take input
13
- # or direct output. You will define it's colour and style, its
14
- # dimensions, including position and give it a name. You can
15
- # then direct the output of a command, or event, to this
16
- # interface and Vedeu will ensure the content is placed there.
17
- # - Interfaces (`Interface`) are made up of lines (`Line`), their
18
- # length being the width of the interface and their number being
19
- # the height of the interface.
20
- # - An interface with `width: 12, height: 5` will have five lines,
21
- # each made of 12 characters- providing 60 cells. Colours and
22
- # styles are handled by terminal escape sequences and therefore
23
- # do not consume a cell.
24
- # - Lines are made up of zero, one or multiple streams which are
25
- # basically subsets of the line.
26
- # - An interface, line or stream can have a colour attribute.
27
- # - An interface, line or stream can have a style attribute.
28
- # - Interfaces have a position (`y`, `x`) on the screen, and a
29
- # size. (`width`, `height`)
30
- # - Interfaces can be placed relative to each other based on their
31
- # attributes.
32
- # - An interface has a `top`, `right`, `bottom`, `left`.
33
- # - An interface also has a `north` and `west` (`top` and `left`
34
- # minus 1 respectively).
35
- # - An interface also has a `south` and `east` (`bottom` and
36
- # `right` plus 1 respectively).
37
- # - Colours are defined in CSS-style values, i.e. `#ff0000` would
38
- # be red.
39
- # - Styles are named. See the table below for supported styles.
40
- #
41
- class Composition
42
-
43
- include Vedeu::DSL
44
-
45
- # Define a view.
46
- #
47
- # A view is just an Interface object.
48
- #
49
- # When a view already exists, we take its attributes and use
50
- # them as the basis for the newly defined view. This way we
51
- # don't need to specify everything again.
52
- #
53
- # @todo More documentation required.
54
- # @param name [String|Symbol] The name of the interface you are
55
- # targetting for this view.
56
- # @param block [Proc] The directives you wish to send to this
57
- # interface.
58
- #
59
- # @example
60
- # view :my_interface do
61
- # # ...
62
- # end
63
- #
64
- # @raise [Vedeu::Error::RequiresBlock]
65
- # @return [Vedeu::Views::Views<Vedeu::Views::View>]
66
- def view(name = '', &block)
67
- fail Vedeu::Error::RequiresBlock unless block_given?
68
-
69
- new_model = model.member.build(new_attributes(name), &block)
70
-
71
- model.add(new_model)
72
- end
73
-
74
- # Load content from an ERb template.
75
- #
76
- # @example
77
- # Vedeu.renders do
78
- # template_for(:my_interface,
79
- # '/path/to/template.erb',
80
- # @some_object, options)
81
- # end
82
- #
83
- # @todo More documentation required.
84
- #
85
- # @param name [String|Symbol] The name of interface for which this
86
- # template's content belongs to.
87
- # @param filename [String] The filename (including path) to the
88
- # template to be used. Yoy can use `File.dirname(__FILE__)` to
89
- # use relative paths.
90
- # @param object [Object] The object for which the values of
91
- # template's variables can be obtained.
92
- # @param options [Hash<Symbol => void>] See {Vedeu::Output::Wordwrap}
93
- # @raise [Vedeu::Error::MissingRequired]
94
- # @return [Vedeu::Views::Views<Vedeu::Views::View>]
95
- def template_for(name, filename, object = nil, options = {})
96
- fail Vedeu::Error::MissingRequired,
97
- 'Cannot render template without the name of the ' \
98
- 'view.'.freeze unless name
99
- fail Vedeu::Error::MissingRequired,
100
- 'Cannot render template without a filename.'.freeze unless filename
101
-
102
- options.merge!(name: name)
103
-
104
- content = Vedeu::Templating::ViewTemplate.parse(object,
105
- filename,
106
- options)
107
-
108
- # lines = Vedeu::Output::Wordwrap.for(content, options)
109
-
110
- new_model = model.member.build(template_attributes(name, content))
111
-
112
- model.add(new_model)
113
- end
114
-
115
- private
116
-
117
- # @param name [String|Symbol]
118
- # @param lines [Vedeu::Views::Lines]
119
- # @return [Hash<Symbol => void>]
120
- def template_attributes(name, lines)
121
- new_attributes(name).merge!(value: lines)
122
- end
123
-
124
- # Return the current attributes combined with the existing
125
- # interface attributes defined by the interface.
126
- #
127
- # @param name [String|Symbol] The name of the interface.
128
- # @return [Hash<Symbol => void>]
129
- def new_attributes(name)
130
- existing_attributes(name).merge!(attributes)
131
- end
132
-
133
- # Retrieve the attributes of the interface by name.
134
- #
135
- # @param name [String|Symbol] The name of the interface.
136
- # @return [Hash<Symbol => void>]
137
- def existing_attributes(name)
138
- interface(name).attributes
139
- end
140
-
141
- # @return [Vedeu::Interfaces::Interface]
142
- def interface(name)
143
- Vedeu.interfaces.by_name(name)
144
- end
145
-
146
- end # Composition
147
-
148
- end # DSL
149
-
150
- end # Vedeu
@@ -1,119 +0,0 @@
1
- module Vedeu
2
-
3
- module DSL
4
-
5
- # Provides methods to be used to define views.
6
- #
7
- # Vedeu.renders do
8
- # view :my_interface do
9
- # lines do
10
- # background '#000000'
11
- # foreground '#ffffff'
12
- # line 'This is white text on a black background.'
13
- # line 'Next is a blank line:'
14
- # line ''
15
- #
16
- # streams { stream 'We can define ' }
17
- #
18
- # streams do
19
- # foreground '#ff0000'
20
- # stream 'parts of a line '
21
- # end
22
- #
23
- # streams { stream 'independently using ' }
24
- #
25
- # streams do
26
- # foreground '#00ff00'
27
- # stream 'streams.'
28
- # end
29
- # end
30
- # end
31
- # end
32
- #
33
- class Line
34
-
35
- include Vedeu::DSL
36
- include Vedeu::DSL::Presentation
37
- include Vedeu::DSL::Text
38
-
39
- # Specify a single line in a view.
40
- #
41
- # Vedeu.renders do
42
- # view :my_interface do
43
- # lines do
44
- # line 'some text...'
45
- # # ... some code
46
- #
47
- # line 'some more text...'
48
- # # ... some code
49
- # end
50
- # end
51
- # end
52
- #
53
- # @raise [Vedeu::Error::RequiresBlock]
54
- # @return [Vedeu::Views::Lines]
55
- def line(value = '', &block)
56
- if block_given?
57
- content = Vedeu::Views::Line.build(client: client,
58
- parent: model.parent, &block)
59
-
60
- elsif value
61
- content = Vedeu::Views::Line.build(client: client,
62
- parent: model.parent,
63
- value: [build_stream(value)])
64
-
65
- else
66
- fail Vedeu::Error::RequiresBlock unless block_given?
67
-
68
- end
69
-
70
- model.parent.add(content)
71
- end
72
- alias_method :line=, :line
73
-
74
- # Define multiple streams (a stream is a subset of a line).
75
- # Uses {Vedeu::DSL::Stream} for all directives within the
76
- # required block.
77
- #
78
- # Vedeu.renders do
79
- # view :my_interface do
80
- # lines do
81
- # line do
82
- # streams do
83
- # # ... some code
84
- # end
85
- #
86
- # stream do
87
- # # ... some code
88
- # end
89
- # end
90
- # end
91
- # end
92
- # end
93
- #
94
- # @param block [Proc]
95
- # @raise [Vedeu::Error::RequiresBlock]
96
- # @return [Vedeu::Views::Streams<Vedeu::Views::Stream>]
97
- # @see Vedeu::DSL::Stream for subdirectives.
98
- def streams(&block)
99
- fail Vedeu::Error::RequiresBlock unless block_given?
100
-
101
- model.add(model.member.build(attributes, &block))
102
- end
103
- alias_method :stream, :streams
104
- alias_method :stream=, :streams
105
- alias_method :streams=, :streams
106
-
107
- private
108
-
109
- # @param value [String]
110
- # @return [Vedeu::Views::Stream]
111
- def build_stream(value)
112
- Vedeu::Views::Stream.build(client: client, parent: model, value: value)
113
- end
114
-
115
- end # Line
116
-
117
- end # DSL
118
-
119
- end # Vedeu
@@ -1,23 +0,0 @@
1
- module Vedeu
2
-
3
- module DSL
4
-
5
- # Provides the mechanism to add lines to a view via the DSL.
6
- #
7
- class Lines
8
-
9
- # @raise [Vedeu::Error::RequiresBlock]
10
- # @return [Vedeu::Views::Lines]
11
- # def lines(&block)
12
- # fail Vedeu::Error::RequiresBlock unless block_given?
13
-
14
- # client = eval('self', block.binding)
15
-
16
- # # Vedeu::Models::Lines.new
17
- # end
18
-
19
- end # Lines
20
-
21
- end # DSL
22
-
23
- end # Vedeu
@@ -1,85 +0,0 @@
1
- module Vedeu
2
-
3
- module DSL
4
-
5
- # Provides behaviour to be shared between both
6
- # {Vedeu::Interfaces::DSL} and {Vedeu::DSL::View} objects.
7
- #
8
- module Shared
9
-
10
- # Allows the setting of a border for the interface.
11
- #
12
- # @example
13
- # Vedeu.interface :my_interface do
14
- # border do
15
- # # ... see Vedeu::Borders::DSL for DSL methods for
16
- # # borders.
17
- # end
18
- # end
19
- #
20
- # @param name [String|Symbol] The name of the interface; this is
21
- # already provided when we define the interface or view,
22
- # setting it here is just mirroring functionality of
23
- # {Vedeu::Borders::DSL.border}.
24
- # @param block [Proc]
25
- # @raise [Vedeu::Error::RequiresBlock]
26
- # @return [Vedeu::Borders::Border]
27
- # @see Vedeu::Borders::DSL
28
- def border(name = nil, &block)
29
- fail Vedeu::Error::RequiresBlock unless block_given?
30
-
31
- model_name = name ? name : model.name
32
-
33
- border_attrs = attributes.merge!(enabled: true,
34
- name: model_name)
35
-
36
- Vedeu::Borders::Border.build(border_attrs, &block).store
37
- end
38
-
39
- # Applies the default border to the interface.
40
- #
41
- # @example
42
- # Vedeu.interface :my_interface do
43
- # border!
44
- #
45
- # # ... some code
46
- # end
47
- #
48
- # @return [Vedeu::Borders::Border]
49
- def border!
50
- border do
51
- # adds default border
52
- end
53
- end
54
-
55
- # Define the geometry for an interface.
56
- #
57
- # @example
58
- # Vedeu.interface :my_interface do
59
- # geometry do
60
- # # ... see Vedeu::Geometries::DSL for DSL methods for
61
- # # geometries.
62
- # end
63
- # end
64
- #
65
- # @param name [String|Symbol] The name of the interface; this is
66
- # already provided when we define the interface or view,
67
- # setting it here is just mirroring functionality of
68
- # {Vedeu::Geometries::DSL.geometry}.
69
- # @param block [Proc]
70
- # @raise [Vedeu::Error::RequiresBlock]
71
- # @return [Vedeu::Geometries::Geometry]
72
- # @see Vedeu::Geometries::DSL
73
- def geometry(name = nil, &block)
74
- fail Vedeu::Error::RequiresBlock unless block_given?
75
-
76
- model_name = name ? name : model.name
77
-
78
- Vedeu::Geometries::Geometry.build(name: model_name, &block).store
79
- end
80
-
81
- end # Shared
82
-
83
- end # DSL
84
-
85
- end # Vedeu
@@ -1,40 +0,0 @@
1
- module Vedeu
2
-
3
- module DSL
4
-
5
- # Provides methods to be used to define views.
6
- #
7
- class Stream
8
-
9
- include Vedeu::DSL
10
- include Vedeu::DSL::Presentation
11
- include Vedeu::DSL::Text
12
-
13
- # @param block [Proc]
14
- # @raise [Vedeu::Error::RequiresBlock]
15
- # @return [void]
16
- def stream(&block)
17
- fail Vedeu::Error::RequiresBlock unless block_given?
18
-
19
- model.add(model.class.build(attributes, &block))
20
- end
21
-
22
- private
23
-
24
- # Returns the default attributes for the new model.
25
- #
26
- # Overrides {Vedeu::DSL#attributes}.
27
- #
28
- # @return [Hash<Symbol => void>]
29
- def attributes
30
- {
31
- client: client,
32
- parent: model.parent,
33
- }
34
- end
35
-
36
- end # Stream
37
-
38
- end # DSL
39
-
40
- end # Vedeu
@@ -1,23 +0,0 @@
1
- module Vedeu
2
-
3
- module DSL
4
-
5
- # Provides the mechanism to add streams to a line via the DSL.
6
- #
7
- class Streams
8
-
9
- # @raise [Vedeu::Error::RequiresBlock]
10
- # @return [Vedeu::Views::Streams]
11
- # def streams(&block)
12
- # fail Vedeu::Error::RequiresBlock unless block_given?
13
-
14
- # client = eval('self', block.binding)
15
-
16
- # # Vedeu::Models::Stream.new
17
- # end
18
-
19
- end # Streams
20
-
21
- end # DSL
22
-
23
- end # Vedeu