vedeu 0.6.8 → 0.6.9

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 (140) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -0
  3. data/README.md +1 -1
  4. data/docs/api.md +60 -67
  5. data/docs/configuration.md +8 -5
  6. data/docs/events.md +31 -15
  7. data/docs/events/application.md +12 -0
  8. data/docs/events/document.md +57 -0
  9. data/docs/events/drb.md +43 -0
  10. data/docs/events/focus.md +24 -0
  11. data/docs/events/menu.md +57 -0
  12. data/docs/events/movement.md +57 -0
  13. data/docs/events/refresh.md +25 -0
  14. data/docs/events/system.md +90 -0
  15. data/docs/events/visibility.md +68 -0
  16. data/lib/vedeu.rb +2 -2
  17. data/lib/vedeu/all.rb +3 -2
  18. data/lib/vedeu/api.rb +18 -18
  19. data/lib/vedeu/application/controller.rb +1 -1
  20. data/lib/vedeu/application/helper.rb +1 -1
  21. data/lib/vedeu/application/view.rb +1 -1
  22. data/lib/vedeu/bindings/application.rb +1 -12
  23. data/lib/vedeu/bindings/bindings.rb +3 -1
  24. data/lib/vedeu/bindings/document.rb +9 -62
  25. data/lib/vedeu/bindings/drb.rb +12 -56
  26. data/lib/vedeu/bindings/focus.rb +3 -28
  27. data/lib/vedeu/bindings/menus.rb +10 -66
  28. data/lib/vedeu/bindings/movement.rb +4 -69
  29. data/lib/vedeu/bindings/refresh.rb +3 -33
  30. data/lib/vedeu/bindings/system.rb +14 -100
  31. data/lib/vedeu/bindings/visibility.rb +20 -71
  32. data/lib/vedeu/borders/all.rb +4 -3
  33. data/lib/vedeu/borders/border.rb +39 -33
  34. data/lib/vedeu/borders/dsl.rb +40 -33
  35. data/lib/vedeu/borders/null.rb +2 -2
  36. data/lib/vedeu/borders/render.rb +29 -24
  37. data/lib/vedeu/borders/repository.rb +2 -2
  38. data/lib/vedeu/buffers/all.rb +8 -7
  39. data/lib/vedeu/buffers/buffer.rb +47 -39
  40. data/lib/vedeu/buffers/null.rb +2 -2
  41. data/lib/vedeu/buffers/refresh.rb +4 -3
  42. data/lib/vedeu/buffers/virtual_buffer.rb +122 -118
  43. data/lib/vedeu/buffers/virtual_buffers.rb +62 -56
  44. data/lib/vedeu/colours/background.rb +2 -1
  45. data/lib/vedeu/colours/colour.rb +21 -19
  46. data/lib/vedeu/colours/foreground.rb +2 -1
  47. data/lib/vedeu/colours/repository.rb +6 -5
  48. data/lib/vedeu/colours/translator.rb +39 -35
  49. data/lib/vedeu/configuration/api.rb +59 -51
  50. data/lib/vedeu/configuration/cli.rb +9 -7
  51. data/lib/vedeu/configuration/configuration.rb +41 -32
  52. data/lib/vedeu/cursors/cursor.rb +1 -1
  53. data/lib/vedeu/cursors/refresh.rb +20 -16
  54. data/lib/vedeu/distributed/server.rb +8 -6
  55. data/lib/vedeu/distributed/subprocess.rb +90 -86
  56. data/lib/vedeu/distributed/uri.rb +4 -3
  57. data/lib/vedeu/dsl/composition.rb +2 -2
  58. data/lib/vedeu/dsl/group.rb +4 -4
  59. data/lib/vedeu/dsl/interface.rb +5 -5
  60. data/lib/vedeu/dsl/presentation.rb +2 -2
  61. data/lib/vedeu/dsl/text.rb +1 -1
  62. data/lib/vedeu/editor/cropper.rb +4 -4
  63. data/lib/vedeu/editor/cursor.rb +6 -4
  64. data/lib/vedeu/editor/document.rb +20 -18
  65. data/lib/vedeu/editor/editor.rb +2 -2
  66. data/lib/vedeu/editor/line.rb +10 -5
  67. data/lib/vedeu/editor/lines.rb +2 -2
  68. data/lib/vedeu/internal_api.rb +4 -4
  69. data/lib/vedeu/models/focus.rb +197 -191
  70. data/lib/vedeu/models/group.rb +171 -159
  71. data/lib/vedeu/models/groups.rb +14 -10
  72. data/lib/vedeu/models/interface.rb +116 -110
  73. data/lib/vedeu/models/interfaces.rb +24 -20
  74. data/lib/vedeu/models/toggleable.rb +4 -4
  75. data/lib/vedeu/models/views/char.rb +1 -1
  76. data/lib/vedeu/models/views/composition.rb +1 -1
  77. data/lib/vedeu/models/views/line.rb +1 -1
  78. data/lib/vedeu/models/views/stream.rb +1 -1
  79. data/lib/vedeu/models/views/view.rb +1 -1
  80. data/lib/vedeu/null/interface.rb +1 -1
  81. data/lib/vedeu/null/view.rb +1 -1
  82. data/lib/vedeu/output/clear/named_interface.rb +1 -1
  83. data/lib/vedeu/output/compressor.rb +78 -73
  84. data/lib/vedeu/output/direct.rb +61 -57
  85. data/lib/vedeu/output/output.rb +34 -29
  86. data/lib/vedeu/output/{presentation.rb → presentation/presentation.rb} +2 -1
  87. data/lib/vedeu/output/presentation/style.rb +64 -18
  88. data/lib/vedeu/output/presentation/styles.rb +39 -0
  89. data/lib/vedeu/output/renderers/html.rb +2 -2
  90. data/lib/vedeu/output/renderers/json.rb +2 -1
  91. data/lib/vedeu/output/renderers/terminal.rb +3 -3
  92. data/lib/vedeu/output/renderers/text.rb +3 -3
  93. data/lib/vedeu/output/text.rb +186 -180
  94. data/lib/vedeu/output/wordwrap.rb +142 -138
  95. data/lib/vedeu/refresh/refresh.rb +2 -2
  96. data/lib/vedeu/templating/helpers.rb +11 -6
  97. data/lib/vedeu/templating/view_template.rb +1 -1
  98. data/lib/vedeu/terminal/terminal.rb +2 -2
  99. data/lib/vedeu/version.rb +1 -1
  100. data/test/lib/vedeu/borders/render_test.rb +1 -1
  101. data/test/lib/vedeu/buffers/buffer_test.rb +16 -14
  102. data/test/lib/vedeu/buffers/virtual_buffer_test.rb +105 -101
  103. data/test/lib/vedeu/buffers/virtual_buffers_test.rb +43 -39
  104. data/test/lib/vedeu/colours/colour_test.rb +4 -4
  105. data/test/lib/vedeu/cursors/cursor_test.rb +2 -2
  106. data/test/lib/vedeu/cursors/repository_test.rb +3 -3
  107. data/test/lib/vedeu/distributed/subprocess_test.rb +33 -29
  108. data/test/lib/vedeu/dsl/group_test.rb +3 -3
  109. data/test/lib/vedeu/dsl/interface_test.rb +6 -5
  110. data/test/lib/vedeu/dsl/line_test.rb +4 -2
  111. data/test/lib/vedeu/dsl/presentation_test.rb +2 -2
  112. data/test/lib/vedeu/dsl/text_test.rb +8 -8
  113. data/test/lib/vedeu/editor/document_test.rb +10 -6
  114. data/test/lib/vedeu/input/keymap_test.rb +1 -10
  115. data/test/lib/vedeu/models/focus_test.rb +177 -170
  116. data/test/lib/vedeu/models/group_test.rb +99 -95
  117. data/test/lib/vedeu/models/groups_test.rb +13 -9
  118. data/test/lib/vedeu/models/interface_test.rb +93 -87
  119. data/test/lib/vedeu/models/interfaces_test.rb +24 -20
  120. data/test/lib/vedeu/models/views/char_test.rb +2 -2
  121. data/test/lib/vedeu/models/views/line_test.rb +11 -7
  122. data/test/lib/vedeu/models/views/stream_test.rb +1 -1
  123. data/test/lib/vedeu/models/views/view_test.rb +1 -1
  124. data/test/lib/vedeu/output/clear/named_group_test.rb +1 -1
  125. data/test/lib/vedeu/output/clear/named_interface_test.rb +3 -1
  126. data/test/lib/vedeu/output/compressor_test.rb +126 -122
  127. data/test/lib/vedeu/output/direct_test.rb +49 -43
  128. data/test/lib/vedeu/output/output_test.rb +35 -31
  129. data/test/lib/vedeu/output/{presentation_test.rb → presentation/presentation_test.rb} +11 -7
  130. data/test/lib/vedeu/output/presentation/style_test.rb +88 -48
  131. data/test/lib/vedeu/output/presentation/styles_test.rb +84 -0
  132. data/test/lib/vedeu/output/text_test.rb +109 -105
  133. data/test/lib/vedeu/output/viewport_test.rb +3 -1
  134. data/test/lib/vedeu/output/wordwrap_test.rb +209 -205
  135. data/test/lib/vedeu/refresh/refresh_test.rb +3 -1
  136. data/test/lib/vedeu/templating/helpers_test.rb +6 -6
  137. data/test/lib/vedeu/templating/view_template_test.rb +1 -1
  138. metadata +17 -8
  139. data/lib/vedeu/output/style.rb +0 -76
  140. data/test/lib/vedeu/output/style_test.rb +0 -120
@@ -21,7 +21,9 @@ module Vedeu
21
21
  end
22
22
 
23
23
  context 'when there are registered interfaces' do
24
- let(:interface) { Vedeu::Interface.new(name: 'Vedeu::Refresh') }
24
+ let(:interface) {
25
+ Vedeu::Models::Interface.new(name: 'Vedeu::Refresh')
26
+ }
25
27
  let(:interfaces) { [interface] }
26
28
 
27
29
  before { Vedeu.interfaces.stubs(:zindexed).returns(interfaces) }
@@ -17,7 +17,7 @@ module Vedeu
17
17
 
18
18
  describe '#background' do
19
19
  let(:expected) {
20
- "{{eJx1j08PATEQxR2ki5YQLuJA1hdwnr1MCMmeiXvZIRtrK93Wn/jyqiyJRC+dl9f3m9dqTUF/TQlZgHVKlwJgaTTJo4A2SmN0urGGijsHvs1Sys3EDSpTVisYvHMzr4tyCFxyI7eHvVY2TxQMf59NPyYDgS9aHIrxxB8GbL5yiJ3S9Bex+JgsEnFYYVFzBfwktW/YKMwtIwWdd2z5lAw4nmVmyfn+jsPet+bI0NV4Sj2XRyqRrt7r15HAwKlyA0e/AkXUxSY08JnB1gP9j2kt}}"
20
+ "{{eJx1UE1rAjEQ7UGiNbEI7aX0oKx/wPPsZVAs7E1QvMfdaVlcNyWZtEr/fLPRdUHoXDLDm/eR6Q0MvO6oIA+wK+nHAWzYkj4qGKNmtuXeM7lfCTKvSqp5HhpTGW8NvF15yzi7tukH5l7nh09rfF0YmNyvLW6gAIUXtSxRs3ksAWK1DRIfxtK/Eu83UKQqSx5EOtqC/NI2Jhw6PlfU0daWXAA0l6Zu/hdAARK/deUpbMc3S1660FOmE0fNx1ofqTUIYS83SBX2w9T6SYyGqNJnHMEQGw4+/QF64W6r}}"
21
21
  }
22
22
 
23
23
  subject { instance.background('#000000') { 'background text' } }
@@ -43,7 +43,7 @@ module Vedeu
43
43
  }
44
44
  }
45
45
  let(:expected) {
46
- "{{eJx1jzGPwjAMhRlQypEUcboJMYDKH4gY3cW6Eyd1BrGnYFBFaVCacKD784SUMiAx2U/P77Pd7WkYrWlLDmBd0F8NsLSG1FHAEJW1psidpfqfA9+UBVVW+kaX2hkN40fuJ+i6bSKfzNXmsDfaVVsNk9ex76fJQGBDyxIxk3I+l5IBW6w8YqcNvUX8Pk2WiizpsDReAT8pEy7s1/ZakobPR2x5lww4nlXpyPuhZsmw2T21dLGB8FGpI7U4f1rzcSow8qqlcwx4FOkXxtDHewYHNz0LZ6E=}}"
46
+ "{{eJx1j09rAjEQxXso0ZooQk/Sg2X9AsHj7GVoqbC3guI96lQW140kk/7BL2/MdhUETzPDm/ebN49dC6MlbSgALEv68QBzdmT2CoZomF25Ckz+KEGuq5Jq1rGxlQ3Owsu/7z3Nvm060bky693W2VBvLIxv194uogCFDa3I1ETr6VRrAeJjERFf1tFdxOwiilwV2YPI+wuQB+NSwp7nv4qutk9HPgqGS1uf/4uiAInfpgoUt1MtsmGT5JXplxPvqTZ7auExaPN/rrATp/aWxHQMVf6Mfejh2YODE6SObR8=}}"
47
47
  }
48
48
 
49
49
  it { subject.must_equal(expected) }
@@ -56,7 +56,7 @@ module Vedeu
56
56
  }
57
57
  }
58
58
  let(:expected) {
59
- "{{eJx1j0sLwjAQhD1IfCQVxZN4UOof8Ly9LIpCz4r3qFspto2kiQ/886apehDMJTtMvtlJs61gtKMjWYBdSrcSYGM0yVxAH6UxOt1bQ+WTAz9kKRVm7gaVKasVjN/c0uvyM7QcuZeH80krWxwVTH6fLb4mA4F1Whw2GLDV1rGJ0vSXXX9NFok4FLMkmbvDomAL/CK1b9gtzSMjBYM3vakkA45XmVlyvr/jsF/vnhq6G5/QKWROVZVKuGr1jyOBLac+6Rx9PIpoiAF0sWKw9wKlIWgJ}}"
59
+ "{{eJx1j09rAjEQxXuQaE0UoSfpoWX7BTzPXgaLhb0VFO9RZ8vSdVOSSVX65Tub9Q8Umkvm8eY386Y3cDBd044iwLqiQwBYsie7NzBBy+yrTWQKPxr0tq6o4ZkUrnbRO3g8c69Jh0vRF3Jjt58f3sVm5+Dpb9v8aiow2E0rsjsFarEStnSe/mXfrqbKTZGZl7KcyVP5aAX6y/qUcBj4VNONfvcUxLBcuaa9T0wFGr9tHUm6019kky7JM9OR07z7xu6pDdYKCdrdnxvsi7rs0piWockfcARDbBkc/wISY22H}}"
60
60
  }
61
61
 
62
62
  it { subject.must_equal(expected) }
@@ -70,7 +70,7 @@ module Vedeu
70
70
  }
71
71
  }
72
72
  let(:expected) {
73
- "{{eJx1j0sLwjAQhD1IfCSK4kk8KPoHihdhe1kUBc8V71G3UqyNpIkP/POmqXoQzCU7O5mPSbWuoL+lA1mAbUK3HCAymuRZQAelMTrZWUP5kwPfpwllJnCDSpXVCgbv3MLr/DPUXHIn96ejVjY7KBj+Ppt/TQYCS9p6LCaBO9MpA7bcOESsNP1FrL4mC0WRjePZLAhY2NoAv0jtizZz80hJQfedjgrJgONVppac7+/1uFNWGBm6G09oZPLs9hUvXMPy46HAmlMfOkePRxH2sAVNLDLYfgH3e2lq}}"
73
+ "{{eJx1UMFqAjEQ7aFEa6IIPUkPFf2BxYswexlaWvBWqHiPOiuL66Ykk2rpz3c2WxUKzSXz5s1785LbroPRirYUAVYlHQPAO3uyBwNDtMy+XEem8K1Bb6qSas6kcJWL3sHDr+454XAuOqJc281+512stw4e/449XUgFBlu3xcRMMzmzmQL1shSLwnn61+L1QqrcNNqimM+zTOX9JegP61PQXuCviq7qN09BCMulq5tnCqlA46etIsl0uheTYRtozHTi5HdX24P0bxKQvO035AY7gs67NKZlaPJ77EMPGw0OfgB4C27o}}"
74
74
  }
75
75
 
76
76
  it { subject.must_equal(expected) }
@@ -79,7 +79,7 @@ module Vedeu
79
79
 
80
80
  describe '#foreground' do
81
81
  let(:expected) {
82
- "{{eJx1j0sLwjAQhD1IqiaKohfxoNQ/4Hl7WRSFnhXv0a5SrI2kiQ/886bxBYK5ZIfJtzOp1hT015SQBVindCkAlkaTPApoozRGpxtrqLhz4NsspdxM3KAyZbWCwYubeV28h8CRG7k97LWyeaJg+Pts+jEZCHxui8MKAzZfOXanNP1lFx+TRSIOxXjiD4uaK+AnqX3DRmFuGSnovOhlKRlwPMvMkvP9HYe9b9TI0NX4LfVcHqmsUwpX7/nrSGDg1DuBo49AEXWxCQ0sGWw9ADevaUg=}}"
82
+ "{{eJx1kMuKAjEQRV1IfCSK4GxkFkr7A66rN4XiQO8ExX3UmqGx7UhS8cH8/KTjC4TJJnW5depWUm8aGKxpRx5gndPZASzZkj4o6KFmtvnGM7lfCXJb5FTyJBSmMN4a+Lxzs6jdo2gEcqO3+x9rfLkzMHxvmz5NAQpv07KkJkDMV4H9Npb+Zb+epkhVlqjxJB6RdlYgj9rGDduOrwW96IUlFwzNuSmr9wVTgMSTLjyF7nhnyccreMR04TizVeoDVctVIix7+4NUYSOoR57EGIgq7WMH2lgx2P0DtPJuxg==}}"
83
83
  }
84
84
 
85
85
  subject { instance.foreground('#000000') { 'foreground text' } }
@@ -91,7 +91,7 @@ module Vedeu
91
91
 
92
92
  describe '#style' do
93
93
  let(:expected) {
94
- "{{eJx1j71OAzEQhCkiJzk7EESFKEB5Auq5ZgUKUupE6X25BZ1wbpHP5ke8PD4nlwIp3Yxmv9nd0URwu+WaI7Bt+KsD1sGz3RvMyYbgmyoG7n419M413IbHJMRJ9IK7I/ecfTeIcSIru3t/8xLbWnD/f+zpFCoYOrStFhcKarlJ7Kt4Psu+nEJVmh4qZxvoD+vzaUUXfhwLro/YurcKmj6ti4xpJa5Gkc1qcZWHHwJ/h9wybe2eh8p01+Hd0tA4uWGDpkyRKW9ohoJ6hi7/AKgrZ54=}}"
94
+ "{{eJx1j0FLAzEQhT1IajepFTyJB0t/Qc+zl0Gp0Jtg6T3bnZal6U5JJrbinzebuhUEb/N48715c33D8LCimiLAqqFjAHgXT3Zv4A6tiG+qKBS+NOi1a6iVWRrYcfQMjz/cS9ahHwaJrOx6t/Uc25rh6e/a88VUYPCctpheKVDzZWI37Olf9vViqtJ0UDlagj5Yn6sVQT4d/WJvnkIyrDTcdo8lU4HGD+siwbBiV0ORxWI6zuhE6CQ5c9jaPfUHUsvz86XBQVL9PY2ZQlPe4wgK7Bi8/QYTK20c}}"
95
95
  }
96
96
 
97
97
  subject { instance.style(:bold) { 'style text' } }
@@ -186,7 +186,7 @@ module Vedeu
186
186
  context 'with a style directive' do
187
187
  let(:content) { "This is a <%= style(:bold) { 'test' } %>." }
188
188
  let(:style) {
189
- Vedeu::Style.new(:bold)
189
+ Vedeu::Presentation::Style.new(:bold)
190
190
  }
191
191
 
192
192
  let(:expected) {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vedeu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.8
4
+ version: 0.6.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Laking
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-15 00:00:00.000000000 Z
11
+ date: 2015-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: guard
@@ -239,6 +239,15 @@ files:
239
239
  - docs/configuration.md
240
240
  - docs/dsl.md
241
241
  - docs/events.md
242
+ - docs/events/application.md
243
+ - docs/events/document.md
244
+ - docs/events/drb.md
245
+ - docs/events/focus.md
246
+ - docs/events/menu.md
247
+ - docs/events/movement.md
248
+ - docs/events/refresh.md
249
+ - docs/events/system.md
250
+ - docs/events/visibility.md
242
251
  - docs/getting_started.md
243
252
  - docs/object_graph.md
244
253
  - lib/vedeu.rb
@@ -398,9 +407,10 @@ files:
398
407
  - lib/vedeu/output/compressor.rb
399
408
  - lib/vedeu/output/direct.rb
400
409
  - lib/vedeu/output/output.rb
401
- - lib/vedeu/output/presentation.rb
402
410
  - lib/vedeu/output/presentation/colour.rb
411
+ - lib/vedeu/output/presentation/presentation.rb
403
412
  - lib/vedeu/output/presentation/style.rb
413
+ - lib/vedeu/output/presentation/styles.rb
404
414
  - lib/vedeu/output/renderers.rb
405
415
  - lib/vedeu/output/renderers/escape_sequence.rb
406
416
  - lib/vedeu/output/renderers/file.rb
@@ -410,7 +420,6 @@ files:
410
420
  - lib/vedeu/output/renderers/renderer_options.rb
411
421
  - lib/vedeu/output/renderers/terminal.rb
412
422
  - lib/vedeu/output/renderers/text.rb
413
- - lib/vedeu/output/style.rb
414
423
  - lib/vedeu/output/templates/html_renderer.vedeu
415
424
  - lib/vedeu/output/text.rb
416
425
  - lib/vedeu/output/viewport.rb
@@ -578,8 +587,9 @@ files:
578
587
  - test/lib/vedeu/output/direct_test.rb
579
588
  - test/lib/vedeu/output/output_test.rb
580
589
  - test/lib/vedeu/output/presentation/colour_test.rb
590
+ - test/lib/vedeu/output/presentation/presentation_test.rb
581
591
  - test/lib/vedeu/output/presentation/style_test.rb
582
- - test/lib/vedeu/output/presentation_test.rb
592
+ - test/lib/vedeu/output/presentation/styles_test.rb
583
593
  - test/lib/vedeu/output/renderers/escape_sequence_test.rb
584
594
  - test/lib/vedeu/output/renderers/file_test.rb
585
595
  - test/lib/vedeu/output/renderers/html_test.rb
@@ -589,7 +599,6 @@ files:
589
599
  - test/lib/vedeu/output/renderers/terminal_test.rb
590
600
  - test/lib/vedeu/output/renderers/text_test.rb
591
601
  - test/lib/vedeu/output/renderers_test.rb
592
- - test/lib/vedeu/output/style_test.rb
593
602
  - test/lib/vedeu/output/text_test.rb
594
603
  - test/lib/vedeu/output/viewport_test.rb
595
604
  - test/lib/vedeu/output/wordwrap_test.rb
@@ -804,8 +813,9 @@ test_files:
804
813
  - test/lib/vedeu/output/direct_test.rb
805
814
  - test/lib/vedeu/output/output_test.rb
806
815
  - test/lib/vedeu/output/presentation/colour_test.rb
816
+ - test/lib/vedeu/output/presentation/presentation_test.rb
807
817
  - test/lib/vedeu/output/presentation/style_test.rb
808
- - test/lib/vedeu/output/presentation_test.rb
818
+ - test/lib/vedeu/output/presentation/styles_test.rb
809
819
  - test/lib/vedeu/output/renderers/escape_sequence_test.rb
810
820
  - test/lib/vedeu/output/renderers/file_test.rb
811
821
  - test/lib/vedeu/output/renderers/html_test.rb
@@ -815,7 +825,6 @@ test_files:
815
825
  - test/lib/vedeu/output/renderers/terminal_test.rb
816
826
  - test/lib/vedeu/output/renderers/text_test.rb
817
827
  - test/lib/vedeu/output/renderers_test.rb
818
- - test/lib/vedeu/output/style_test.rb
819
828
  - test/lib/vedeu/output/text_test.rb
820
829
  - test/lib/vedeu/output/viewport_test.rb
821
830
  - test/lib/vedeu/output/wordwrap_test.rb
@@ -1,76 +0,0 @@
1
- module Vedeu
2
-
3
- # Converts the style value or value collection into a terminal escape
4
- # sequence. Unrecognised values are discarded- an empty string is returned.
5
- #
6
- # Vedeu has a range of symbol styles which are compatible with most terminals
7
- # which are ANSI compatible. Like colours, they can be defined in either
8
- # interfaces, for specific lines or within streams.
9
- # Styles are applied as encountered.
10
- #
11
- # @see Vedeu::Esc
12
- #
13
- class Style
14
-
15
- include Vedeu::Common
16
-
17
- # @!attribute [rw] value
18
- # @return [String|Symbol]
19
- attr_accessor :value
20
-
21
- # Produces new objects of the correct class from the value, ignores objects
22
- # that have already been coerced.
23
- #
24
- # @param value [Object|NilClass]
25
- # @return [Object]
26
- def self.coerce(value)
27
- if value.is_a?(self)
28
- value
29
-
30
- else
31
- new(value)
32
-
33
- end
34
- end
35
-
36
- # Return a new instance of Vedeu::Style.
37
- #
38
- # @param value [Array<String|Symbol>|String|Symbol]
39
- # The style value or a collection of values.
40
- # @return [Vedeu::Style]
41
- def initialize(value = nil)
42
- @value = value
43
- end
44
-
45
- # Return an attributes hash for this class.
46
- #
47
- # @return [Hash<Symbol => Array<String|Symbol>|String|Symbol>]
48
- def attributes
49
- {
50
- style: value,
51
- }
52
- end
53
-
54
- # An object is equal when its values are the same.
55
- #
56
- # @param other [Vedeu::Views::Char]
57
- # @return [Boolean]
58
- def eql?(other)
59
- self.class == other.class && value == other.value
60
- end
61
- alias_method :==, :eql?
62
-
63
- # Return the terminal escape sequences after converting the style or styles.
64
- #
65
- # @return [String]
66
- def to_s
67
- return '' unless present?(value)
68
-
69
- @sequences ||= Array(value).flatten.map { |v| Vedeu::Esc.string(v) }.join
70
- end
71
- alias_method :escape_sequences, :to_s
72
- alias_method :to_str, :to_s
73
-
74
- end # Style
75
-
76
- end # Vedeu
@@ -1,120 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- describe Style do
6
-
7
- let(:described) { Vedeu::Style }
8
- let(:instance) { described.new(_value) }
9
- let(:_value) { 'bold' }
10
-
11
- describe 'alias methods' do
12
- it { instance.must_respond_to(:escape_sequences) }
13
- end
14
-
15
- describe '#initialize' do
16
- it { instance.must_be_instance_of(described) }
17
- it { instance.instance_variable_get('@value').must_equal('bold') }
18
- end
19
-
20
- describe 'accessors' do
21
- it { instance.must_respond_to(:value) }
22
- it { instance.must_respond_to(:value=) }
23
- end
24
-
25
- describe '.coerce' do
26
- let(:_value) { 'bold' }
27
-
28
- subject { described.coerce(_value) }
29
-
30
- it { subject.must_be_instance_of(described) }
31
-
32
- context 'when the value is nil' do
33
- let(:_value) { nil }
34
-
35
- it { subject.must_be_instance_of(described) }
36
- end
37
-
38
- context 'when the value is a Style already' do
39
- let(:_value) { Vedeu::Style.new('bold') }
40
-
41
- it 'returns the value' do
42
- subject.must_equal(_value)
43
- end
44
- end
45
-
46
- context 'when the value is an Array' do
47
- let(:_value) { [:bold, :blink] }
48
-
49
- it { subject.value.must_equal([:bold, :blink]) }
50
- end
51
- end
52
-
53
- describe '#attributes' do
54
- subject { instance.attributes }
55
-
56
- it { subject.must_be_instance_of(Hash) }
57
-
58
- it 'returns an attributes hash for this instance' do
59
- subject.must_equal(style: 'bold')
60
- end
61
- end
62
-
63
- describe '#eql?' do
64
- let(:other) { instance }
65
-
66
- subject { instance.eql?(other) }
67
-
68
- it { subject.must_equal(true) }
69
-
70
- context 'when different to other' do
71
- let(:other) { described.new('underline') }
72
-
73
- it { subject.must_equal(false) }
74
- end
75
- end
76
-
77
- describe '#to_s' do
78
- let(:_value) {}
79
-
80
- subject { instance.to_s }
81
-
82
- it { subject.must_be_instance_of(String) }
83
- it { subject.must_equal('') }
84
-
85
- describe 'for a single style' do
86
- let(:_value) { 'normal' }
87
-
88
- it 'returns an escape sequence' do
89
- subject.must_equal("\e[24m\e[22m\e[27m")
90
- end
91
- end
92
-
93
- describe 'for multiple styles' do
94
- let(:_value) { ['normal', 'underline'] }
95
-
96
- it 'returns an escape sequence for multiple styles' do
97
- subject.must_equal("\e[24m\e[22m\e[27m\e[4m")
98
- end
99
- end
100
-
101
- describe 'for an unknown style' do
102
- let(:_value) { 'unknown' }
103
-
104
- it 'returns an empty string for an unknown style' do
105
- subject.must_equal('')
106
- end
107
- end
108
-
109
- describe 'for an empty or nil' do
110
- let(:_value) { '' }
111
-
112
- it 'returns an empty string for empty or nil' do
113
- subject.must_equal('')
114
- end
115
- end
116
- end
117
-
118
- end # Style
119
-
120
- end # Vedeu