vedeu 0.4.13 → 0.4.14

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 (251) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -1
  3. data/.travis.yml +2 -1
  4. data/Guardfile +6 -5
  5. data/README.md +3 -30
  6. data/Rakefile +5 -5
  7. data/bin/vedeu_drb_client +1 -1
  8. data/bin/vedeu_drb_server +91 -89
  9. data/bin/vedeu_test +4 -0
  10. data/config/rubocop_enabled.yml +5 -10
  11. data/examples/borders_app.rb +2 -1
  12. data/examples/colours_app.rb +13 -8
  13. data/examples/configuration_app.rb +3 -2
  14. data/examples/cursor_app.rb +16 -11
  15. data/examples/drb_app.rb +88 -89
  16. data/examples/focus_app.rb +31 -32
  17. data/examples/geometry_app.rb +2 -1
  18. data/examples/hello_world.rb +2 -1
  19. data/examples/lines_app.rb +2 -1
  20. data/examples/material_colours_app.rb +126 -0
  21. data/examples/typed_commands/typed_commands_app.rb +5 -1
  22. data/examples/view_templates_app/view_templates_app.rb +6 -3
  23. data/lib/vedeu/all.rb +1 -1
  24. data/lib/vedeu/api.rb +18 -10
  25. data/lib/vedeu/application.rb +0 -1
  26. data/lib/vedeu/bindings.rb +77 -16
  27. data/lib/vedeu/buffers/all.rb +2 -5
  28. data/lib/vedeu/buffers/buffer.rb +69 -25
  29. data/lib/vedeu/buffers/display_buffer.rb +3 -7
  30. data/lib/vedeu/configuration/all.rb +3 -6
  31. data/lib/vedeu/configuration/api.rb +28 -4
  32. data/lib/vedeu/configuration/cli.rb +9 -9
  33. data/lib/vedeu/configuration/configuration.rb +11 -7
  34. data/lib/vedeu/cursor/all.rb +3 -6
  35. data/lib/vedeu/cursor/cursor.rb +22 -14
  36. data/lib/vedeu/cursor/move.rb +32 -22
  37. data/lib/vedeu/cursor/refresh_cursor.rb +1 -1
  38. data/lib/vedeu/debug.rb +2 -1
  39. data/lib/vedeu/distributed/client.rb +1 -7
  40. data/lib/vedeu/distributed/server.rb +0 -4
  41. data/lib/vedeu/distributed/subprocess.rb +1 -1
  42. data/lib/vedeu/distributed/templates/default_configuration.vedeu +1 -1
  43. data/lib/vedeu/distributed/test_application.rb +3 -5
  44. data/lib/vedeu/distributed/uri.rb +2 -2
  45. data/lib/vedeu/dsl/all.rb +6 -6
  46. data/lib/vedeu/dsl/components/all.rb +0 -3
  47. data/lib/vedeu/dsl/components/border.rb +20 -12
  48. data/lib/vedeu/dsl/components/geometry.rb +68 -3
  49. data/lib/vedeu/dsl/components/keymap.rb +1 -2
  50. data/lib/vedeu/dsl/composition.rb +8 -1
  51. data/lib/vedeu/dsl/interface.rb +61 -11
  52. data/lib/vedeu/dsl/line.rb +12 -12
  53. data/lib/vedeu/dsl/shared/all.rb +4 -7
  54. data/lib/vedeu/dsl/shared/colour.rb +2 -2
  55. data/lib/vedeu/dsl/shared/text.rb +2 -35
  56. data/lib/vedeu/dsl/shared/use.rb +2 -2
  57. data/lib/vedeu/dsl/view.rb +4 -4
  58. data/lib/vedeu/events/all.rb +3 -5
  59. data/lib/vedeu/events/event.rb +5 -5
  60. data/lib/vedeu/geometry/all.rb +11 -16
  61. data/lib/vedeu/geometry/area.rb +2 -5
  62. data/lib/vedeu/geometry/canvas.rb +12 -16
  63. data/lib/vedeu/geometry/dimension.rb +20 -22
  64. data/lib/vedeu/geometry/geometry.rb +28 -30
  65. data/lib/vedeu/geometry/grid.rb +1 -1
  66. data/lib/vedeu/geometry/index_position.rb +7 -0
  67. data/lib/vedeu/geometry/null_geometry.rb +61 -0
  68. data/lib/vedeu/geometry/position.rb +0 -3
  69. data/lib/vedeu/geometry/position_index.rb +7 -0
  70. data/lib/vedeu/geometry/position_validator.rb +44 -33
  71. data/lib/vedeu/input/all.rb +5 -4
  72. data/lib/vedeu/input/keymap.rb +0 -1
  73. data/lib/vedeu/input/mapper.rb +1 -3
  74. data/lib/vedeu/launcher.rb +6 -7
  75. data/lib/vedeu/main_loop.rb +1 -2
  76. data/lib/vedeu/models/all.rb +1 -0
  77. data/lib/vedeu/models/cell.rb +5 -8
  78. data/lib/vedeu/models/char.rb +50 -15
  79. data/lib/vedeu/models/composition.rb +8 -1
  80. data/lib/vedeu/models/focus.rb +4 -4
  81. data/lib/vedeu/models/group.rb +3 -3
  82. data/lib/vedeu/models/interface.rb +62 -46
  83. data/lib/vedeu/models/line.rb +1 -1
  84. data/lib/vedeu/models/null.rb +48 -0
  85. data/lib/vedeu/models/stream.rb +5 -5
  86. data/lib/vedeu/output/all.rb +20 -30
  87. data/lib/vedeu/output/border.rb +93 -40
  88. data/lib/vedeu/output/clear.rb +100 -15
  89. data/lib/vedeu/output/colour.rb +56 -12
  90. data/lib/vedeu/output/compressor.rb +59 -0
  91. data/lib/vedeu/output/html_char.rb +4 -2
  92. data/lib/vedeu/output/null_border.rb +16 -4
  93. data/lib/vedeu/output/output.rb +13 -21
  94. data/lib/vedeu/output/presentation.rb +28 -23
  95. data/lib/vedeu/output/refresh.rb +2 -2
  96. data/lib/vedeu/output/renderers/all.rb +80 -3
  97. data/lib/vedeu/output/renderers/file_renderer.rb +38 -2
  98. data/lib/vedeu/output/renderers/html_renderer.rb +6 -4
  99. data/lib/vedeu/output/renderers/json_renderer.rb +52 -0
  100. data/lib/vedeu/output/renderers/null_renderer.rb +14 -0
  101. data/lib/vedeu/output/renderers/terminal_renderer.rb +2 -12
  102. data/lib/vedeu/output/style.rb +33 -3
  103. data/lib/vedeu/output/text.rb +98 -1
  104. data/lib/vedeu/output/translator.rb +30 -7
  105. data/lib/vedeu/output/viewport.rb +43 -79
  106. data/lib/vedeu/output/wordwrap.rb +4 -4
  107. data/lib/vedeu/repositories/all.rb +22 -179
  108. data/lib/vedeu/repositories/collection.rb +11 -13
  109. data/lib/vedeu/repositories/collections/all.rb +8 -0
  110. data/lib/vedeu/repositories/collections/chars.rb +9 -0
  111. data/lib/vedeu/repositories/collections/events.rb +9 -0
  112. data/lib/vedeu/repositories/collections/interfaces.rb +9 -0
  113. data/lib/vedeu/repositories/collections/keys.rb +9 -0
  114. data/lib/vedeu/repositories/collections/lines.rb +9 -0
  115. data/lib/vedeu/repositories/collections/streams.rb +9 -0
  116. data/lib/vedeu/repositories/model.rb +7 -2
  117. data/lib/vedeu/repositories/repositories/all.rb +14 -0
  118. data/lib/vedeu/repositories/repositories/background_colours.rb +14 -0
  119. data/lib/vedeu/repositories/repositories/borders.rb +38 -0
  120. data/lib/vedeu/repositories/repositories/buffers.rb +36 -0
  121. data/lib/vedeu/repositories/repositories/colours.rb +63 -0
  122. data/lib/vedeu/repositories/repositories/cursors.rb +29 -0
  123. data/lib/vedeu/repositories/repositories/events_repository.rb +24 -0
  124. data/lib/vedeu/repositories/repositories/foreground_colours.rb +14 -0
  125. data/lib/vedeu/repositories/repositories/geometries.rb +37 -0
  126. data/lib/vedeu/repositories/repositories/groups.rb +24 -0
  127. data/lib/vedeu/repositories/repositories/interfaces_repository.rb +24 -0
  128. data/lib/vedeu/repositories/repositories/keymaps.rb +24 -0
  129. data/lib/vedeu/repositories/repositories/menus.rb +24 -0
  130. data/lib/vedeu/repositories/repository.rb +29 -47
  131. data/lib/vedeu/storage/all.rb +6 -0
  132. data/lib/vedeu/storage/associative_store.rb +47 -0
  133. data/lib/vedeu/storage/conveyor_store.rb +69 -0
  134. data/lib/vedeu/storage/fifo_store.rb +37 -0
  135. data/lib/vedeu/storage/store.rb +58 -0
  136. data/lib/vedeu/support/all.rb +5 -10
  137. data/lib/vedeu/support/common.rb +0 -8
  138. data/lib/vedeu/support/log.rb +13 -24
  139. data/lib/vedeu/support/template.rb +4 -1
  140. data/lib/vedeu/support/terminal.rb +10 -10
  141. data/lib/vedeu/support/trace.rb +15 -88
  142. data/lib/vedeu/support/visibility.rb +73 -0
  143. data/lib/vedeu.rb +37 -0
  144. data/test/lib/vedeu/api_test.rb +7 -3
  145. data/test/lib/vedeu/application_test.rb +9 -3
  146. data/test/lib/vedeu/bindings_test.rb +21 -0
  147. data/test/lib/vedeu/buffers/buffer_test.rb +110 -134
  148. data/test/lib/vedeu/buffers/display_buffer_test.rb +8 -0
  149. data/test/lib/vedeu/configuration/api_test.rb +5 -1
  150. data/test/lib/vedeu/configuration/configuration_test.rb +4 -6
  151. data/test/lib/vedeu/cursor/cursor_test.rb +25 -17
  152. data/test/lib/vedeu/cursor/move_test.rb +7 -7
  153. data/test/lib/vedeu/distributed/client_test.rb +1 -1
  154. data/test/lib/vedeu/distributed/subprocess_test.rb +3 -1
  155. data/test/lib/vedeu/distributed/uri_test.rb +5 -5
  156. data/test/lib/vedeu/dsl/components/geometry_test.rb +43 -0
  157. data/test/lib/vedeu/dsl/components/keymap_test.rb +1 -1
  158. data/test/lib/vedeu/dsl/composition_test.rb +6 -5
  159. data/test/lib/vedeu/dsl/interface_test.rb +81 -16
  160. data/test/lib/vedeu/dsl/shared/colour_test.rb +4 -4
  161. data/test/lib/vedeu/dsl/shared/text_test.rb +87 -9
  162. data/test/lib/vedeu/dsl/stream_test.rb +1 -1
  163. data/test/lib/vedeu/events/event_test.rb +3 -1
  164. data/test/lib/vedeu/events/trigger_test.rb +8 -4
  165. data/test/lib/vedeu/geometry/dimension_test.rb +1 -1
  166. data/test/lib/vedeu/geometry/geometry_test.rb +5 -3
  167. data/test/lib/vedeu/geometry/index_position_test.rb +30 -7
  168. data/test/lib/vedeu/geometry/null_geometry_test.rb +57 -0
  169. data/test/lib/vedeu/geometry/position_index_test.rb +14 -0
  170. data/test/lib/vedeu/geometry/position_validator_test.rb +17 -3
  171. data/test/lib/vedeu/input/keymap_test.rb +3 -1
  172. data/test/lib/vedeu/input/mapper_test.rb +8 -4
  173. data/test/lib/vedeu/launcher_test.rb +1 -1
  174. data/test/lib/vedeu/models/cell_test.rb +10 -8
  175. data/test/lib/vedeu/models/char_test.rb +52 -28
  176. data/test/lib/vedeu/models/composition_test.rb +26 -4
  177. data/test/lib/vedeu/models/group_test.rb +11 -5
  178. data/test/lib/vedeu/models/interface_test.rb +32 -19
  179. data/test/lib/vedeu/models/line_test.rb +21 -25
  180. data/test/lib/vedeu/models/menu_test.rb +10 -6
  181. data/test/lib/vedeu/models/null_test.rb +66 -0
  182. data/test/lib/vedeu/models/stream_test.rb +13 -10
  183. data/test/lib/vedeu/output/border_test.rb +29 -8
  184. data/test/lib/vedeu/output/clear_test.rb +23 -4
  185. data/test/lib/vedeu/output/colour_test.rb +20 -4
  186. data/test/lib/vedeu/output/compressor_test.rb +43 -0
  187. data/test/lib/vedeu/output/html_char_test.rb +29 -17
  188. data/test/lib/vedeu/output/null_border_test.rb +2 -1
  189. data/test/lib/vedeu/output/output_test.rb +20 -30
  190. data/test/lib/vedeu/output/presentation_test.rb +39 -16
  191. data/test/lib/vedeu/output/refresh_test.rb +14 -10
  192. data/test/lib/vedeu/output/renderers/all_test.rb +96 -0
  193. data/test/lib/vedeu/output/renderers/file_renderer_test.rb +1 -1
  194. data/test/lib/vedeu/output/renderers/html_renderer_test.rb +13 -9
  195. data/test/lib/vedeu/output/renderers/json_renderer_test.rb +52 -0
  196. data/test/lib/vedeu/output/renderers/null_renderer_test.rb +19 -0
  197. data/test/lib/vedeu/output/style_test.rb +41 -1
  198. data/test/lib/vedeu/output/text_test.rb +61 -10
  199. data/test/lib/vedeu/output/translator_test.rb +14 -0
  200. data/test/lib/vedeu/output/viewport_test.rb +22 -3
  201. data/test/lib/vedeu/output/virtual_terminal_test.rb +3 -3
  202. data/test/lib/vedeu/output/wordwrap_test.rb +58 -45
  203. data/test/lib/vedeu/repositories/collections/chars_test.rb +16 -0
  204. data/test/lib/vedeu/repositories/collections/events_test.rb +16 -0
  205. data/test/lib/vedeu/repositories/collections/interfaces_test.rb +16 -0
  206. data/test/lib/vedeu/repositories/collections/keys_test.rb +16 -0
  207. data/test/lib/vedeu/repositories/collections/lines_test.rb +16 -0
  208. data/test/lib/vedeu/repositories/collections/streams_test.rb +16 -0
  209. data/test/lib/vedeu/repositories/repositories/background_colours_test.rb +17 -0
  210. data/test/lib/vedeu/repositories/repositories/borders_test.rb +51 -0
  211. data/test/lib/vedeu/repositories/repositories/buffers_test.rb +52 -0
  212. data/test/lib/vedeu/repositories/repositories/colours_test.rb +16 -0
  213. data/test/lib/vedeu/repositories/repositories/cursors_test.rb +39 -0
  214. data/test/lib/vedeu/repositories/repositories/events_repository_test.rb +17 -0
  215. data/test/lib/vedeu/repositories/repositories/foreground_colours_test.rb +17 -0
  216. data/test/lib/vedeu/repositories/repositories/geometries_test.rb +42 -0
  217. data/test/lib/vedeu/repositories/repositories/groups_test.rb +17 -0
  218. data/test/lib/vedeu/repositories/repositories/interfaces_repositories_test.rb +17 -0
  219. data/test/lib/vedeu/repositories/repositories/keymaps_test.rb +17 -0
  220. data/test/lib/vedeu/repositories/repositories/menus_test.rb +17 -0
  221. data/test/lib/vedeu/repositories/repository_test.rb +16 -36
  222. data/test/lib/vedeu/storage/associative_store_test.rb +69 -0
  223. data/test/lib/vedeu/storage/conveyor_store_test.rb +135 -0
  224. data/test/lib/vedeu/storage/fifo_store_test.rb +47 -0
  225. data/test/lib/vedeu/storage/store_test.rb +123 -0
  226. data/test/lib/vedeu/support/common_test.rb +0 -9
  227. data/test/lib/vedeu/support/terminal_test.rb +78 -55
  228. data/test/lib/vedeu/support/visibility_test.rb +80 -0
  229. data/test/test_helper.rb +13 -11
  230. data/vedeu.gemspec +4 -3
  231. metadata +92 -32
  232. data/lib/vedeu/cursor/toggle.rb +0 -55
  233. data/lib/vedeu/exceptions.rb +0 -37
  234. data/lib/vedeu/geometry/centre.rb +0 -85
  235. data/lib/vedeu/geometry/content.rb +0 -70
  236. data/lib/vedeu/geometry/limit.rb +0 -58
  237. data/lib/vedeu/output/compositor.rb +0 -62
  238. data/lib/vedeu/repositories/collections.rb +0 -41
  239. data/lib/vedeu/support/coercions.rb +0 -60
  240. data/lib/vedeu/support/sentence.rb +0 -91
  241. data/lib/vedeu/support/visible.rb +0 -90
  242. data/test/lib/vedeu/cursor/toggle_test.rb +0 -63
  243. data/test/lib/vedeu/geometry/centre_test.rb +0 -58
  244. data/test/lib/vedeu/geometry/content_test.rb +0 -98
  245. data/test/lib/vedeu/geometry/limit_test.rb +0 -30
  246. data/test/lib/vedeu/output/compositor_test.rb +0 -48
  247. data/test/lib/vedeu/repositories/all_test.rb +0 -135
  248. data/test/lib/vedeu/repositories/collections_test.rb +0 -71
  249. data/test/lib/vedeu/support/coercions_test.rb +0 -84
  250. data/test/lib/vedeu/support/sentence_test.rb +0 -56
  251. data/test/lib/vedeu/support/visible_test.rb +0 -161
data/examples/drb_app.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- lib_dir = "/Users/gavinlaking/Source/vedeu/lib/vedeu/distributed/../../../lib"
3
+ lib_dir = '/Users/gavinlaking/Source/vedeu/lib/vedeu/distributed/../../../lib'
4
4
  $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
5
5
 
6
6
  require 'vedeu'
@@ -8,108 +8,107 @@ require 'vedeu'
8
8
  # An example application to demonstrate the DRb server.
9
9
  #
10
10
  class VedeuTestApplication
11
- # include Vedeu
12
-
13
- Vedeu.configure do
14
- colour_mode 16_777_216
15
- log '/tmp/vedeu_test_helper.log'
16
- debug!
17
- drb!
18
- drb_host 'localhost'
19
- drb_port 21420
20
- drb_width 80
21
- drb_height 25
22
-
23
- # cooked!
24
- # raw!
25
-
26
- # run_once!
27
-
28
- # interactive!
29
- # standalone!
30
-
31
- # trace!
32
-
33
- # System keys can be redefined
34
- # exit_key 'q'
35
- # focus_next_key :tab
36
- # focus_prev_key :shift_tab
37
- # mode_switch_key :escape
38
-
39
- # Not used yet
40
- # stdin File.open("/dev/tty", "r")
41
- # stdout File.open("/dev/tty", "w")
42
- # stderr File.open("/tmp/vedeu_error.log", "w+")
43
- end
44
11
 
45
- Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
46
-
47
- Vedeu.border 'test_interface' do
48
- # Define colour and style of border
49
- colour foreground: '#ffff00', background: '#0000ff'
50
- style 'normal'
51
-
52
- # Define visibility of border
53
- show_bottom!
54
- show_left!
55
- show_right!
56
- show_top!
57
-
58
- # Define characters used to draw border
59
- bottom_right '+'
60
- bottom_left '+'
61
- horizontal '-'
62
- top_right '+'
63
- top_left '+'
64
- vertical '|'
65
- end
12
+ Vedeu.configure do
13
+ log '/tmp/vedeu_test_helper.log'
14
+ debug!
15
+ drb!
16
+ drb_host 'localhost'
17
+ drb_port 21_420
18
+ drb_width 80
19
+ drb_height 25
66
20
 
67
- Vedeu.geometry 'test_interface' do
68
- # centred!
69
- height 6
70
- width 26
71
- x 4
72
- y 4
73
- end
21
+ # cooked!
22
+ # raw!
74
23
 
75
- Vedeu.interface 'test_interface' do
76
- colour foreground: '#ff0000', background: '#000000'
77
- cursor!
78
- end
24
+ # run_once!
79
25
 
80
- Vedeu.keymap 'test_interface' do
81
- key(:up, 'k') { Vedeu.trigger(:_cursor_up_) }
82
- key(:right, 'l') { Vedeu.trigger(:_cursor_right_) }
83
- key(:down, 'j') { Vedeu.trigger(:_cursor_down_) }
84
- key(:left, 'h') { Vedeu.trigger(:_cursor_left_) }
85
- end
26
+ # interactive!
27
+ # standalone!
86
28
 
87
- Vedeu.menu 'test_interface' do
88
- # ...
89
- end
29
+ # trace!
30
+
31
+ # System keys can be redefined
32
+ # exit_key 'q'
33
+ # focus_next_key :tab
34
+ # focus_prev_key :shift_tab
35
+ # mode_switch_key :escape
36
+
37
+ # Not used yet
38
+ # stdin File.open("/dev/tty", "r")
39
+ # stdout File.open("/dev/tty", "w")
40
+ # stderr File.open("/tmp/vedeu_error.log", "w+")
41
+ end
42
+
43
+ Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
44
+
45
+ Vedeu.border 'test_interface' do
46
+ # Define colour and style of border
47
+ colour foreground: '#ffff00', background: '#0000ff'
48
+ style 'normal'
49
+
50
+ # Define visibility of border
51
+ show_bottom!
52
+ show_left!
53
+ show_right!
54
+ show_top!
55
+
56
+ # Define characters used to draw border
57
+ bottom_right '+'
58
+ bottom_left '+'
59
+ horizontal '-'
60
+ top_right '+'
61
+ top_left '+'
62
+ vertical '|'
63
+ end
90
64
 
91
- Vedeu.renders do
92
- view 'test_interface' do
93
- lines do
94
- line 'a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1'
95
- line 'a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2'
96
- line 'a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3'
97
- line 'a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4'
98
- line 'a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5'
99
- line 'a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6'
100
- line 'a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7'
101
- line 'a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8'
65
+ Vedeu.geometry 'test_interface' do
66
+ # centred!
67
+ height 6
68
+ width 26
69
+ x 4
70
+ y 4
71
+ end
72
+
73
+ Vedeu.interface 'test_interface' do
74
+ colour foreground: '#ff0000', background: '#000000'
75
+ cursor!
76
+ end
77
+
78
+ Vedeu.keymap 'test_interface' do
79
+ key(:up, 'k') { Vedeu.trigger(:_cursor_up_) }
80
+ key(:right, 'l') { Vedeu.trigger(:_cursor_right_) }
81
+ key(:down, 'j') { Vedeu.trigger(:_cursor_down_) }
82
+ key(:left, 'h') { Vedeu.trigger(:_cursor_left_) }
83
+ end
84
+
85
+ Vedeu.menu 'test_interface' do
86
+ # ...
87
+ end
88
+
89
+ Vedeu.renders do
90
+ view 'test_interface' do
91
+ lines do
92
+ line 'a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1'
93
+ line 'a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2'
94
+ line 'a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3'
95
+ line 'a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4'
96
+ line 'a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5'
97
+ line 'a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6'
98
+ line 'a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7'
99
+ line 'a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8'
100
+ end
102
101
  end
103
102
  end
104
- end
105
103
 
106
- def self.start(argv = ARGV,
107
- stdin = STDIN,
104
+ def self.start(argv = ARGV,
105
+ stdin = STDIN,
108
106
  stdout = STDOUT,
109
107
  stderr = STDERR,
110
108
  kernel = Kernel)
111
109
  Vedeu::Launcher.execute!(argv, stdin, stdout, stderr, kernel)
112
110
  end
111
+
113
112
  end
114
113
 
115
114
  VedeuTestApplication.start(ARGV)
@@ -14,102 +14,100 @@ require 'vedeu'
14
14
  #
15
15
  # Use 'space' to change focus, 'q' to exit.
16
16
  class VedeuFocusApp
17
- include Vedeu
18
17
 
19
- configure do
20
- colour_mode 16_777_216
18
+ Vedeu.configure do
21
19
  debug!
22
20
  log '/tmp/vedeu_focus_app.log'
23
21
  end
24
22
 
25
- bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
23
+ Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
26
24
 
27
- update = Proc.new do
25
+ update = proc do
28
26
  Vedeu.focus_next
29
27
 
30
28
  Vedeu.renders { view('status') { lines { line(Vedeu.focus) } } }
31
29
  end
32
30
 
33
- interface 'aluminium' do
31
+ Vedeu.interface 'aluminium' do
34
32
  colour foreground: '#ffffff', background: '#330000'
35
33
  cursor true
36
34
  geometry do
37
- height 2
38
- width 2
35
+ height 3
36
+ width 10
39
37
  x 3
40
38
  y 3
41
39
  end
42
40
  keymap { key(' ') { update.call } }
43
41
  end
44
42
 
45
- interface 'boron' do
46
- colour foreground: '#ffffff', background: '#003300'
47
- cursor true
43
+ Vedeu.interface 'boron' do
44
+ colour foreground: '#ffffff', background: '#003300'
45
+ cursor true
48
46
  geometry do
49
- height 2
50
- width 2
51
- x 6
47
+ height 3
48
+ width 10
49
+ x 15
52
50
  y 3
53
51
  end
54
52
  keymap { key(' ') { update.call } }
55
53
  end
56
54
 
57
- interface 'copper' do
55
+ Vedeu.interface 'copper' do
58
56
  colour foreground: '#ffffff', background: '#000033'
59
57
  cursor true
60
58
  focus!
61
59
  geometry do
62
- height 2
63
- width 2
60
+ height 3
61
+ width 10
64
62
  x 3
65
- y 6
63
+ y 8
66
64
  end
67
65
  keymap { key(' ') { update.call } }
68
66
  end
69
67
 
70
- interface 'dubnium' do
68
+ Vedeu.interface 'dubnium' do
71
69
  colour foreground: '#ffffff', background: '#333300'
72
70
  cursor true
73
71
  geometry do
74
- height 2
75
- width 2
76
- x 6
77
- y 6
72
+ height 3
73
+ width 10
74
+ x 15
75
+ y 8
78
76
  end
79
77
  keymap { key(' ') { update.call } }
80
78
  end
81
79
 
82
- interface 'status' do
80
+ Vedeu.interface 'status' do
83
81
  colour foreground: '#ffffff', background: '#000000'
84
82
  cursor false
85
83
  geometry do
86
- height 2
84
+ height 3
87
85
  width 10
88
- x 9
89
- y 3
86
+ x 3
87
+ y 13
90
88
  end
91
89
  keymap { key(' ') { update.call } }
92
90
  end
93
91
 
94
- renders do
92
+ Vedeu.renders do
95
93
  view('aluminium') do
96
94
  lines do
97
- line 'Al'
95
+ line 'Aluminium'
98
96
  end
99
97
  end
100
98
  view('boron') do
101
99
  lines do
102
- line 'B'
100
+ line 'Boron'
103
101
  end
104
102
  end
105
103
  view('copper') do
106
104
  lines do
107
- line 'Cu'
105
+ line 'Copper'
108
106
  end
109
107
  end
110
108
  view('dubnium') do
111
109
  lines do
112
- line 'Db'
110
+ line 'Dubnium'
113
111
  end
114
112
  end
115
113
  view('status') do
@@ -122,6 +120,7 @@ class VedeuFocusApp
122
120
  def self.start(argv = ARGV)
123
121
  Vedeu::Launcher.execute!(argv)
124
122
  end
123
+
125
124
  end
126
125
 
127
126
  VedeuFocusApp.start(ARGV)
@@ -8,10 +8,10 @@ require 'vedeu'
8
8
  # An example application to demonstrate geometry.
9
9
  #
10
10
  class VedeuGeometryApp
11
+
11
12
  include Vedeu
12
13
 
13
14
  configure do
14
- colour_mode 16_777_216
15
15
  debug!
16
16
  log '/tmp/vedeu_geometry_app.log'
17
17
  end
@@ -135,6 +135,7 @@ class VedeuGeometryApp
135
135
  def self.start(argv = ARGV)
136
136
  Vedeu::Launcher.execute!(argv)
137
137
  end
138
+
138
139
  end
139
140
 
140
141
  VedeuGeometryApp.start(ARGV)
@@ -11,10 +11,10 @@ require 'vedeu'
11
11
  # An example application to demonstrate 'Hello World'.
12
12
  #
13
13
  class HelloWorldApp
14
+
14
15
  include Vedeu
15
16
 
16
17
  configure do
17
- colour_mode 16_777_216
18
18
  debug!
19
19
  log '/tmp/vedeu_hello_world.log'
20
20
  end
@@ -44,6 +44,7 @@ class HelloWorldApp
44
44
  def self.start(argv = ARGV)
45
45
  Vedeu::Launcher.execute!(argv)
46
46
  end
47
+
47
48
  end
48
49
 
49
50
  HelloWorldApp.start(ARGV)
@@ -8,10 +8,10 @@ require 'vedeu'
8
8
  # An example application to demonstrate interface lines.
9
9
  #
10
10
  class VedeuLinesApp
11
+
11
12
  include Vedeu
12
13
 
13
14
  configure do
14
- colour_mode 16_777_216
15
15
  debug!
16
16
  log '/tmp/vedeu_lines_app.log'
17
17
  end
@@ -68,6 +68,7 @@ class VedeuLinesApp
68
68
  def self.start(argv = ARGV)
69
69
  Vedeu::Launcher.execute!(argv)
70
70
  end
71
+
71
72
  end
72
73
 
73
74
  VedeuLinesApp.start(ARGV)
@@ -0,0 +1,126 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ lib_dir = File.dirname(__FILE__) + '/../lib'
4
+ $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
5
+
6
+ require 'vedeu'
7
+
8
+ # An example application to demonstrate colours.
9
+ #
10
+ class VedeuMaterialColoursApp
11
+
12
+ include Vedeu
13
+
14
+ configure do
15
+ # debug!
16
+ log '/tmp/vedeu_material_colours_app.log'
17
+ renderers Vedeu::FileRenderer
18
+ end
19
+
20
+ # bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
21
+
22
+ interface 'main_interface' do
23
+ border 'main_interface' do
24
+ colour foreground: '#ffffff', background: '#000000'
25
+ title 'Rainbow!'
26
+ end
27
+ colour foreground: '#ffffff', background: '#000000'
28
+ cursor!
29
+ geometry 'main_interface' do
30
+ x 5
31
+ xn 25
32
+ y 3
33
+ yn 13
34
+ end
35
+ end
36
+
37
+ interface 'other_interface' do
38
+ border 'other_interface' do
39
+ colour foreground: '#ffffff', background: '#000000'
40
+ title 'Wow!'
41
+ end
42
+ colour foreground: '#ffffff', background: '#000000'
43
+ cursor!
44
+ geometry 'other_interface' do
45
+ x 27
46
+ xn 47
47
+ y 3
48
+ yn 13
49
+ end
50
+ end
51
+
52
+ keymap('_global_') do
53
+ key(:up, 'k') { Vedeu.trigger(:_cursor_up_) }
54
+ key(:right, 'l') { Vedeu.trigger(:_cursor_right_) }
55
+ key(:down, 'j') { Vedeu.trigger(:_cursor_down_) }
56
+ key(:left, 'h') { Vedeu.trigger(:_cursor_left_) }
57
+ key('t') do
58
+ Vedeu.trigger(:_toggle_interface_, 'main_interface')
59
+ Vedeu.trigger(:_toggle_interface_, 'other_interface')
60
+ end
61
+ key('1') { Vedeu.trigger(:_hide_interface_, 'main_interface') }
62
+ key('2') { Vedeu.trigger(:_show_interface_, 'main_interface') }
63
+ key('3') { Vedeu.trigger(:_hide_interface_, 'other_interface') }
64
+ key('4') { Vedeu.trigger(:_show_interface_, 'other_interface') }
65
+ end
66
+
67
+ renders do
68
+ view 'main_interface' do
69
+ line { centre 'Red', width: 20, background: '#f44336' }
70
+ line { centre 'Pink', width: 20, background: '#e91e63' }
71
+ line { centre 'Purple', width: 20, background: '#9c27b0' }
72
+ line { centre 'Deep Purple', width: 20, background: '#673ab7' }
73
+ line { centre 'Indigo', width: 20, background: '#3f51b5' }
74
+ line { centre 'Blue', width: 20, background: '#2196f3' }
75
+ line { centre 'Light Blue', width: 20, background: '#03a9f4' }
76
+ line { centre 'Cyan', width: 20, background: '#00bcd4' }
77
+ line { centre 'Teal', width: 20, background: '#009688' }
78
+ line { centre 'Green', width: 20, background: '#4caf50' }
79
+ line { centre 'Light Green', width: 20, background: '#8bc34a' }
80
+ line { centre 'Lime', width: 20, background: '#cddc39' }
81
+ line { centre 'Yellow', width: 20, background: '#ffeb3b' }
82
+ line { centre 'Amber', width: 20, background: '#ffc107' }
83
+ line { centre 'Orange', width: 20, background: '#ff9800' }
84
+ line { centre 'Deep Orange', width: 20, background: '#ff5722' }
85
+ line { centre 'Brown', width: 20, background: '#795548' }
86
+ line { centre 'Grey', width: 20, background: '#9e9e9e' }
87
+ line { centre 'Blue Grey', width: 20, background: '#607d8b' }
88
+ end
89
+
90
+ view 'other_interface' do
91
+ line { centre 'Blue Grey', width: 20, background: '#607d8b' }
92
+ line { centre 'Grey', width: 20, background: '#9e9e9e' }
93
+ line { centre 'Brown', width: 20, background: '#795548' }
94
+ line { centre 'Deep Orange', width: 20, background: '#ff5722' }
95
+ line { centre 'Orange', width: 20, background: '#ff9800' }
96
+ line { centre 'Amber', width: 20, background: '#ffc107' }
97
+ line { centre 'Yellow', width: 20, background: '#ffeb3b' }
98
+ line { centre 'Lime', width: 20, background: '#cddc39' }
99
+ line { centre 'Light Green', width: 20, background: '#8bc34a' }
100
+ line { centre 'Green', width: 20, background: '#4caf50' }
101
+ line { centre 'Teal', width: 20, background: '#009688' }
102
+ line { centre 'Cyan', width: 20, background: '#00bcd4' }
103
+ line { centre 'Light Blue', width: 20, background: '#03a9f4' }
104
+ line { centre 'Blue', width: 20, background: '#2196f3' }
105
+ line { centre 'Indigo', width: 20, background: '#3f51b5' }
106
+ line { centre 'Deep Purple', width: 20, background: '#673ab7' }
107
+ line { centre 'Purple', width: 20, background: '#9c27b0' }
108
+ line { centre 'Pink', width: 20, background: '#e91e63' }
109
+ line { centre 'Red', width: 20, background: '#f44336' }
110
+ end
111
+ end
112
+
113
+ focus_by_name 'main_interface'
114
+
115
+ def self.start(argv = ARGV)
116
+ Vedeu::Launcher.execute!(argv)
117
+ end
118
+
119
+ end
120
+
121
+ VedeuMaterialColoursApp.start(ARGV)
122
+
123
+
124
+
125
+
126
+
@@ -5,11 +5,14 @@ $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
5
5
 
6
6
  require 'vedeu'
7
7
 
8
+ # A simple example application to test the input of commands. This will test
9
+ # the functionality of 'cooked' mode.
10
+ #
8
11
  class VedeuTypedCommands
12
+
9
13
  include Vedeu
10
14
 
11
15
  configure do
12
- colour_mode 16_777_216
13
16
  debug!
14
17
  log '/tmp/vedeu_typed_commands_app.log'
15
18
  end
@@ -83,6 +86,7 @@ class VedeuTypedCommands
83
86
  def self.start(argv = ARGV)
84
87
  Vedeu::Launcher.execute!(argv)
85
88
  end
89
+
86
90
  end
87
91
 
88
92
  VedeuTypedCommands.start(ARGV)
@@ -8,10 +8,10 @@ require 'vedeu'
8
8
  # An example application to demonstrate templates.
9
9
  #
10
10
  class VedeuViewTemplateApp
11
+
11
12
  include Vedeu
12
13
 
13
14
  configure do
14
- colour_mode 16_777_216
15
15
  debug!
16
16
  log '/tmp/vedeu_view_templates_app.log'
17
17
  end
@@ -72,13 +72,16 @@ class VedeuViewTemplateApp
72
72
 
73
73
  renders do
74
74
  template_for('default', (File.dirname(__FILE__) + '/template.erb'), nil)
75
- template_for('prune', (File.dirname(__FILE__) + '/template.erb'), nil, { mode: :prune, width: 22 })
76
- template_for('wrap', (File.dirname(__FILE__) + '/template.erb'), nil, { mode: :wrap, width: 25 })
75
+ template_for('prune', (File.dirname(__FILE__) + '/template.erb'), nil,
76
+ mode: :prune, width: 22)
77
+ template_for('wrap', (File.dirname(__FILE__) + '/template.erb'), nil,
78
+ mode: :wrap, width: 25)
77
79
  end
78
80
 
79
81
  def self.start(argv = ARGV)
80
82
  Vedeu::Launcher.execute!(argv)
81
83
  end
84
+
82
85
  end
83
86
 
84
87
  VedeuViewTemplateApp.start(ARGV)
data/lib/vedeu/all.rb CHANGED
@@ -3,9 +3,9 @@
3
3
 
4
4
  require 'vedeu/debug'
5
5
  require 'vedeu/traps'
6
- require 'vedeu/exceptions'
7
6
 
8
7
  require 'vedeu/geometry/all'
8
+ require 'vedeu/storage/all'
9
9
  require 'vedeu/repositories/all'
10
10
 
11
11
  require 'vedeu/api'
data/lib/vedeu/api.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'vedeu/support/common'
2
2
  require 'vedeu/support/terminal'
3
+ require 'vedeu/output/renderers/all'
3
4
  require 'vedeu/events/all'
4
5
  require 'vedeu/models/all'
5
6
  require 'vedeu/input/all'
@@ -95,7 +96,7 @@ module Vedeu
95
96
  # @!method unbind
96
97
  # @see Vedeu::Event.unbind
97
98
  def_delegators Vedeu::Event, :bind,
98
- :unbind
99
+ :unbind
99
100
 
100
101
  # @!method trigger
101
102
  # @see Vedeu::Trigger.trigger
@@ -106,7 +107,7 @@ module Vedeu
106
107
  # @!method configuration
107
108
  # @see Vedeu::Configuration.configuration
108
109
  def_delegators Vedeu::Configuration, :configure,
109
- :configuration
110
+ :configuration
110
111
 
111
112
  # @!method border
112
113
  # @see Vedeu::DSL::Border.border
@@ -135,8 +136,8 @@ module Vedeu
135
136
  # @!method views
136
137
  # @see Vedeu::DSL::View.views
137
138
  def_delegators Vedeu::DSL::View, :interface,
138
- :renders,
139
- :views
139
+ :renders,
140
+ :views
140
141
 
141
142
  # @!method focus
142
143
  # @see Vedeu::Focus#focus
@@ -149,10 +150,10 @@ module Vedeu
149
150
  # @!method focus_previous
150
151
  # @see Vedeu::Focus#focus_previous
151
152
  def_delegators Vedeu::Focus, :focus,
152
- :focus_by_name,
153
- :focussed?,
154
- :focus_next,
155
- :focus_previous
153
+ :focus_by_name,
154
+ :focussed?,
155
+ :focus_next,
156
+ :focus_previous
156
157
 
157
158
  # @!method log
158
159
  # @see Vedeu::Log.log
@@ -169,8 +170,15 @@ module Vedeu
169
170
  # @!method resize
170
171
  # @see Vedeu::Terminal#resize
171
172
  def_delegators Vedeu::Terminal, :height,
172
- :width,
173
- :resize
173
+ :width,
174
+ :resize
175
+
176
+ # @!method renderer
177
+ # @see Vedeu::Renderers#renderer
178
+ # @!method renderers
179
+ # @see Vedeu::Renderers#renderers
180
+ def_delegators Vedeu::Renderers, :renderer,
181
+ :renderers
174
182
 
175
183
  end # API
176
184
 
@@ -116,7 +116,6 @@ module Vedeu
116
116
  Vedeu.trigger(:_drb_restart_)
117
117
 
118
118
  Vedeu::Application.restart(configuration)
119
-
120
119
  end
121
120
 
122
121
  # :nocov: