vedeu 0.7.4 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
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