whirled_peas 0.6.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (291) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +30 -1
  4. data/README.md +710 -136
  5. data/Rakefile +3 -32
  6. data/bin/easing +33 -0
  7. data/bin/reset_cursor +11 -0
  8. data/bin/screen_test +68 -0
  9. data/examples/graph.rb +54 -0
  10. data/examples/intro.rb +3 -3
  11. data/examples/scrolling.rb +5 -4
  12. data/lib/whirled_peas.rb +2 -4
  13. data/lib/whirled_peas/animator.rb +5 -0
  14. data/lib/whirled_peas/animator/debug_consumer.rb +17 -0
  15. data/lib/whirled_peas/animator/easing.rb +72 -0
  16. data/lib/whirled_peas/animator/frame.rb +5 -0
  17. data/lib/whirled_peas/animator/frameset.rb +33 -0
  18. data/lib/whirled_peas/animator/producer.rb +35 -0
  19. data/lib/whirled_peas/animator/renderer_consumer.rb +31 -0
  20. data/lib/whirled_peas/command.rb +5 -0
  21. data/lib/whirled_peas/command/base.rb +86 -0
  22. data/lib/whirled_peas/command/config_command.rb +44 -0
  23. data/lib/whirled_peas/command/debug.rb +21 -0
  24. data/lib/whirled_peas/command/fonts.rb +22 -0
  25. data/lib/whirled_peas/command/frame_command.rb +34 -0
  26. data/lib/whirled_peas/command/frames.rb +24 -0
  27. data/lib/whirled_peas/command/help.rb +38 -0
  28. data/lib/whirled_peas/command/play.rb +108 -0
  29. data/lib/whirled_peas/command/record.rb +57 -0
  30. data/lib/whirled_peas/command/still.rb +29 -0
  31. data/lib/whirled_peas/command_line.rb +22 -212
  32. data/lib/whirled_peas/config.rb +56 -6
  33. data/lib/whirled_peas/device.rb +5 -0
  34. data/lib/whirled_peas/device/null_device.rb +8 -0
  35. data/lib/whirled_peas/device/output_file.rb +19 -0
  36. data/lib/whirled_peas/device/screen.rb +26 -0
  37. data/lib/whirled_peas/graphics.rb +14 -0
  38. data/lib/whirled_peas/graphics/box_painter.rb +39 -46
  39. data/lib/whirled_peas/graphics/canvas.rb +22 -11
  40. data/lib/whirled_peas/graphics/composer.rb +18 -0
  41. data/lib/whirled_peas/graphics/container_coords.rb +6 -5
  42. data/lib/whirled_peas/graphics/container_dimensions.rb +26 -8
  43. data/lib/whirled_peas/graphics/container_painter.rb +133 -4
  44. data/lib/whirled_peas/graphics/content_dimensions.rb +19 -0
  45. data/lib/whirled_peas/graphics/content_painter.rb +20 -0
  46. data/lib/whirled_peas/graphics/graph_dimensions.rb +12 -0
  47. data/lib/whirled_peas/graphics/graph_painter.rb +97 -0
  48. data/lib/whirled_peas/graphics/grid_painter.rb +12 -14
  49. data/lib/whirled_peas/graphics/painter.rb +15 -1
  50. data/lib/whirled_peas/graphics/renderer.rb +13 -2
  51. data/lib/whirled_peas/graphics/text_painter.rb +9 -13
  52. data/lib/whirled_peas/settings/alignment.rb +24 -0
  53. data/lib/whirled_peas/settings/bg_color.rb +2 -0
  54. data/lib/whirled_peas/settings/border.rb +16 -16
  55. data/lib/whirled_peas/settings/color.rb +13 -14
  56. data/lib/whirled_peas/settings/container_settings.rb +126 -44
  57. data/lib/whirled_peas/settings/display_flow.rb +13 -11
  58. data/lib/whirled_peas/settings/element_settings.rb +8 -3
  59. data/lib/whirled_peas/settings/graph_settings.rb +21 -0
  60. data/lib/whirled_peas/settings/grid_settings.rb +12 -1
  61. data/lib/whirled_peas/settings/sizing.rb +19 -0
  62. data/lib/whirled_peas/settings/spacing.rb +34 -0
  63. data/lib/whirled_peas/settings/text_color.rb +2 -0
  64. data/lib/whirled_peas/settings/vert_alignment.rb +24 -0
  65. data/lib/whirled_peas/utils/ansi.rb +13 -0
  66. data/lib/whirled_peas/utils/file_handler.rb +57 -0
  67. data/lib/whirled_peas/utils/title_font.rb +1 -1
  68. data/lib/whirled_peas/version.rb +1 -1
  69. data/screen_test/{rendered/elements → elements}/box.frame +1 -1
  70. data/screen_test/{rendered/elements → elements}/box.rb +0 -0
  71. data/screen_test/elements/graph.frame +1 -0
  72. data/screen_test/elements/graph.rb +12 -0
  73. data/screen_test/elements/grid.frame +1 -0
  74. data/screen_test/{rendered/elements → elements}/grid.rb +0 -0
  75. data/screen_test/elements/screen_overflow_x.frame +1 -0
  76. data/screen_test/{rendered/elements/screen_overflow.rb → elements/screen_overflow_x.rb} +0 -0
  77. data/screen_test/elements/screen_overflow_y.frame +1 -0
  78. data/screen_test/elements/screen_overflow_y.rb +9 -0
  79. data/screen_test/elements/text.frame +1 -0
  80. data/screen_test/{rendered/elements → elements}/text.rb +0 -0
  81. data/screen_test/elements/text_multiline.frame +1 -0
  82. data/screen_test/{rendered/elements → elements}/text_multiline.rb +0 -0
  83. data/screen_test/settings/align/box_around.frame +1 -0
  84. data/screen_test/settings/align/box_around.rb +16 -0
  85. data/screen_test/settings/align/box_between.frame +1 -0
  86. data/screen_test/settings/align/box_between.rb +16 -0
  87. data/screen_test/settings/align/box_center.frame +1 -0
  88. data/screen_test/{rendered/settings/align/grid.rb → settings/align/box_center.rb} +7 -6
  89. data/screen_test/settings/align/box_default.frame +1 -0
  90. data/screen_test/settings/align/box_default.rb +20 -0
  91. data/screen_test/settings/align/box_evenly.frame +1 -0
  92. data/screen_test/settings/align/box_evenly.rb +16 -0
  93. data/screen_test/settings/align/box_left.frame +1 -0
  94. data/screen_test/settings/align/box_left.rb +21 -0
  95. data/screen_test/settings/align/box_right.frame +1 -0
  96. data/screen_test/settings/align/box_right.rb +21 -0
  97. data/screen_test/settings/align/children_center.frame +1 -0
  98. data/screen_test/settings/align/children_center.rb +15 -0
  99. data/screen_test/settings/align/children_left.frame +1 -0
  100. data/screen_test/settings/align/children_left.rb +15 -0
  101. data/screen_test/settings/align/children_right.frame +1 -0
  102. data/screen_test/settings/align/children_right.rb +15 -0
  103. data/screen_test/settings/align/grid_center.frame +1 -0
  104. data/screen_test/settings/align/grid_center.rb +18 -0
  105. data/screen_test/settings/align/grid_default.frame +1 -0
  106. data/screen_test/settings/align/grid_default.rb +17 -0
  107. data/screen_test/settings/align/grid_left.frame +1 -0
  108. data/screen_test/settings/align/grid_left.rb +18 -0
  109. data/screen_test/settings/align/grid_right.frame +1 -0
  110. data/screen_test/settings/align/grid_right.rb +18 -0
  111. data/screen_test/settings/ansi/bold.frame +1 -0
  112. data/screen_test/{rendered/settings/height/overflow_box_t2b.rb → settings/ansi/bold.rb} +4 -4
  113. data/screen_test/{rendered/settings → settings}/ansi/color.frame +1 -1
  114. data/screen_test/{rendered/settings → settings}/ansi/color.rb +0 -0
  115. data/screen_test/settings/ansi/underline.frame +1 -0
  116. data/screen_test/{rendered/settings → settings}/ansi/underline.rb +4 -5
  117. data/screen_test/{rendered/settings → settings}/border.frame +1 -1
  118. data/screen_test/{rendered/settings → settings}/border.rb +1 -1
  119. data/screen_test/settings/flow/box_b2t.frame +1 -0
  120. data/screen_test/settings/flow/box_b2t.rb +26 -0
  121. data/screen_test/settings/flow/box_l2r.frame +1 -0
  122. data/screen_test/settings/flow/box_l2r.rb +26 -0
  123. data/screen_test/settings/flow/box_r2l.frame +1 -0
  124. data/screen_test/settings/flow/box_r2l.rb +26 -0
  125. data/screen_test/settings/flow/box_t2b.frame +1 -0
  126. data/screen_test/settings/flow/box_t2b.rb +26 -0
  127. data/screen_test/settings/flow/grid_b2t.frame +1 -0
  128. data/screen_test/{rendered/settings → settings}/flow/grid_b2t.rb +1 -1
  129. data/screen_test/settings/flow/grid_l2r.frame +1 -0
  130. data/screen_test/{rendered/settings → settings}/flow/grid_l2r.rb +1 -1
  131. data/screen_test/settings/flow/grid_r2l.frame +1 -0
  132. data/screen_test/{rendered/settings → settings}/flow/grid_r2l.rb +1 -1
  133. data/screen_test/settings/flow/grid_t2b.frame +1 -0
  134. data/screen_test/{rendered/settings → settings}/flow/grid_t2b.rb +1 -1
  135. data/screen_test/settings/height/box.frame +1 -0
  136. data/screen_test/{rendered/settings → settings}/height/box.rb +0 -0
  137. data/screen_test/settings/height/box_border_sizing.frame +1 -0
  138. data/screen_test/settings/height/box_border_sizing.rb +15 -0
  139. data/screen_test/settings/height/grid.frame +1 -0
  140. data/screen_test/{rendered/settings → settings}/height/grid.rb +0 -0
  141. data/screen_test/settings/height/overflow_box.frame +1 -0
  142. data/screen_test/settings/height/overflow_box.rb +13 -0
  143. data/screen_test/settings/height/overflow_box_l2r.frame +1 -0
  144. data/screen_test/settings/height/overflow_box_l2r.rb +17 -0
  145. data/screen_test/settings/height/overflow_box_t2b.frame +1 -0
  146. data/screen_test/settings/height/overflow_box_t2b.rb +16 -0
  147. data/screen_test/settings/height/overflow_grid.frame +1 -0
  148. data/screen_test/{rendered/settings → settings}/height/overflow_grid.rb +0 -0
  149. data/screen_test/settings/margin.frame +1 -0
  150. data/screen_test/settings/margin.rb +16 -0
  151. data/screen_test/settings/padding.frame +1 -0
  152. data/screen_test/settings/padding.rb +13 -0
  153. data/screen_test/settings/position/box_left.frame +1 -0
  154. data/screen_test/{rendered/settings → settings}/position/box_left.rb +2 -2
  155. data/screen_test/settings/position/box_left_negative.frame +1 -0
  156. data/screen_test/{rendered/settings → settings}/position/box_left_negative.rb +2 -2
  157. data/screen_test/settings/position/box_top.frame +1 -0
  158. data/screen_test/{rendered/settings → settings}/position/box_top.rb +1 -1
  159. data/screen_test/settings/position/box_top_negative.frame +1 -0
  160. data/screen_test/{rendered/settings → settings}/position/box_top_negative.rb +2 -2
  161. data/screen_test/settings/position/grid_left.frame +1 -0
  162. data/screen_test/{rendered/settings → settings}/position/grid_left.rb +1 -1
  163. data/screen_test/settings/position/grid_left_negative.frame +1 -0
  164. data/screen_test/{rendered/settings → settings}/position/grid_left_negative.rb +1 -1
  165. data/screen_test/settings/position/grid_top.frame +1 -0
  166. data/screen_test/{rendered/settings → settings}/position/grid_top.rb +1 -1
  167. data/screen_test/settings/position/grid_top_negative.frame +1 -0
  168. data/screen_test/{rendered/settings → settings}/position/grid_top_negative.rb +1 -1
  169. data/screen_test/settings/scroll/horiz_box.frame +1 -0
  170. data/screen_test/settings/scroll/horiz_box.rb +17 -0
  171. data/screen_test/settings/scroll/horiz_box_align_center.rb +18 -0
  172. data/screen_test/settings/scroll/horiz_box_align_right.rb +18 -0
  173. data/screen_test/settings/scroll/vert_box.frame +1 -0
  174. data/screen_test/settings/scroll/vert_box.rb +20 -0
  175. data/screen_test/settings/title_font.frame +1 -0
  176. data/screen_test/{rendered/settings → settings}/title_font.rb +1 -1
  177. data/screen_test/settings/valign/box_around.frame +1 -0
  178. data/screen_test/settings/valign/box_around.rb +17 -0
  179. data/screen_test/settings/valign/box_between.frame +1 -0
  180. data/screen_test/settings/valign/box_between.rb +17 -0
  181. data/screen_test/settings/valign/box_bottom.frame +1 -0
  182. data/screen_test/settings/valign/box_bottom.rb +17 -0
  183. data/screen_test/settings/valign/box_default.frame +1 -0
  184. data/screen_test/settings/valign/box_default.rb +16 -0
  185. data/screen_test/settings/valign/box_evenly.frame +1 -0
  186. data/screen_test/settings/valign/box_evenly.rb +17 -0
  187. data/screen_test/settings/valign/box_middle.frame +1 -0
  188. data/screen_test/settings/valign/box_middle.rb +17 -0
  189. data/screen_test/settings/valign/box_top.frame +1 -0
  190. data/screen_test/settings/valign/box_top.rb +17 -0
  191. data/screen_test/settings/valign/grid_bottom.frame +1 -0
  192. data/screen_test/settings/valign/grid_bottom.rb +15 -0
  193. data/screen_test/settings/valign/grid_default.frame +1 -0
  194. data/screen_test/settings/valign/grid_default.rb +14 -0
  195. data/screen_test/settings/valign/grid_middle.frame +1 -0
  196. data/screen_test/settings/valign/grid_middle.rb +15 -0
  197. data/screen_test/settings/valign/grid_top.frame +1 -0
  198. data/screen_test/settings/valign/grid_top.rb +15 -0
  199. data/screen_test/settings/width/box_border_sizing.frame +1 -0
  200. data/screen_test/settings/width/box_border_sizing.rb +15 -0
  201. data/screen_test/settings/width/box_content.frame +1 -0
  202. data/screen_test/settings/width/box_content.rb +15 -0
  203. data/screen_test/settings/width/box_default.frame +1 -0
  204. data/screen_test/{rendered/settings/width/box.rb → settings/width/box_default.rb} +3 -2
  205. data/screen_test/settings/width/grid.frame +1 -0
  206. data/screen_test/{rendered/settings → settings}/width/grid.rb +2 -2
  207. data/screen_test/settings/width/overflow_align_center.frame +1 -0
  208. data/screen_test/settings/width/overflow_align_center.rb +14 -0
  209. data/screen_test/settings/width/overflow_align_right.frame +1 -0
  210. data/screen_test/settings/width/overflow_align_right.rb +14 -0
  211. data/screen_test/settings/width/overflow_box.frame +1 -0
  212. data/screen_test/settings/width/overflow_box.rb +13 -0
  213. data/screen_test/settings/width/overflow_box_l2r.frame +1 -0
  214. data/screen_test/settings/width/overflow_box_l2r.rb +16 -0
  215. data/screen_test/settings/width/overflow_box_t2b.frame +1 -0
  216. data/screen_test/settings/width/overflow_box_t2b.rb +17 -0
  217. data/screen_test/settings/width/overflow_grid.frame +1 -0
  218. data/screen_test/{rendered/settings → settings}/width/overflow_grid.rb +0 -0
  219. data/tools/whirled_peas/tools/screen_tester.rb +285 -0
  220. metadata +188 -105
  221. data/lib/whirled_peas/frame.rb +0 -6
  222. data/lib/whirled_peas/frame/consumer.rb +0 -30
  223. data/lib/whirled_peas/frame/debug_consumer.rb +0 -30
  224. data/lib/whirled_peas/frame/event_loop.rb +0 -90
  225. data/lib/whirled_peas/frame/producer.rb +0 -67
  226. data/lib/whirled_peas/graphics/screen.rb +0 -70
  227. data/lib/whirled_peas/graphics/text_dimensions.rb +0 -15
  228. data/lib/whirled_peas/settings/text_align.rb +0 -19
  229. data/screen_test/rendered/elements/grid.frame +0 -1
  230. data/screen_test/rendered/elements/screen_overflow.frame +0 -1
  231. data/screen_test/rendered/elements/text.frame +0 -1
  232. data/screen_test/rendered/elements/text_multiline.frame +0 -1
  233. data/screen_test/rendered/settings/align/box.frame +0 -1
  234. data/screen_test/rendered/settings/align/box.rb +0 -24
  235. data/screen_test/rendered/settings/align/children_center.frame +0 -1
  236. data/screen_test/rendered/settings/align/children_center.rb +0 -13
  237. data/screen_test/rendered/settings/align/children_left.frame +0 -1
  238. data/screen_test/rendered/settings/align/children_left.rb +0 -13
  239. data/screen_test/rendered/settings/align/children_right.frame +0 -1
  240. data/screen_test/rendered/settings/align/children_right.rb +0 -13
  241. data/screen_test/rendered/settings/align/grid.frame +0 -1
  242. data/screen_test/rendered/settings/ansi/bold.frame +0 -1
  243. data/screen_test/rendered/settings/ansi/bold.rb +0 -15
  244. data/screen_test/rendered/settings/ansi/underline.frame +0 -1
  245. data/screen_test/rendered/settings/flow/box_b2t.frame +0 -1
  246. data/screen_test/rendered/settings/flow/box_b2t.rb +0 -24
  247. data/screen_test/rendered/settings/flow/box_l2r.frame +0 -1
  248. data/screen_test/rendered/settings/flow/box_l2r.rb +0 -24
  249. data/screen_test/rendered/settings/flow/box_r2l.frame +0 -1
  250. data/screen_test/rendered/settings/flow/box_r2l.rb +0 -24
  251. data/screen_test/rendered/settings/flow/box_t2b.frame +0 -1
  252. data/screen_test/rendered/settings/flow/box_t2b.rb +0 -24
  253. data/screen_test/rendered/settings/flow/grid_b2t.frame +0 -1
  254. data/screen_test/rendered/settings/flow/grid_l2r.frame +0 -1
  255. data/screen_test/rendered/settings/flow/grid_r2l.frame +0 -1
  256. data/screen_test/rendered/settings/flow/grid_t2b.frame +0 -1
  257. data/screen_test/rendered/settings/height/box.frame +0 -1
  258. data/screen_test/rendered/settings/height/grid.frame +0 -1
  259. data/screen_test/rendered/settings/height/overflow_box.frame +0 -1
  260. data/screen_test/rendered/settings/height/overflow_box.rb +0 -13
  261. data/screen_test/rendered/settings/height/overflow_box_l2r.frame +0 -1
  262. data/screen_test/rendered/settings/height/overflow_box_l2r.rb +0 -15
  263. data/screen_test/rendered/settings/height/overflow_box_t2b.frame +0 -1
  264. data/screen_test/rendered/settings/height/overflow_grid.frame +0 -1
  265. data/screen_test/rendered/settings/margin.frame +0 -1
  266. data/screen_test/rendered/settings/margin.rb +0 -14
  267. data/screen_test/rendered/settings/padding.frame +0 -1
  268. data/screen_test/rendered/settings/padding.rb +0 -11
  269. data/screen_test/rendered/settings/position/box_left.frame +0 -1
  270. data/screen_test/rendered/settings/position/box_left_negative.frame +0 -1
  271. data/screen_test/rendered/settings/position/box_top.frame +0 -1
  272. data/screen_test/rendered/settings/position/box_top_negative.frame +0 -1
  273. data/screen_test/rendered/settings/position/grid_left.frame +0 -1
  274. data/screen_test/rendered/settings/position/grid_left_negative.frame +0 -1
  275. data/screen_test/rendered/settings/position/grid_top.frame +0 -1
  276. data/screen_test/rendered/settings/position/grid_top_negative.frame +0 -1
  277. data/screen_test/rendered/settings/scroll/horiz_box.frame +0 -1
  278. data/screen_test/rendered/settings/scroll/horiz_box.rb +0 -15
  279. data/screen_test/rendered/settings/scroll/vert_box.frame +0 -1
  280. data/screen_test/rendered/settings/scroll/vert_box.rb +0 -18
  281. data/screen_test/rendered/settings/title_font.frame +0 -1
  282. data/screen_test/rendered/settings/width/box.frame +0 -1
  283. data/screen_test/rendered/settings/width/grid.frame +0 -1
  284. data/screen_test/rendered/settings/width/overflow_box.frame +0 -1
  285. data/screen_test/rendered/settings/width/overflow_box.rb +0 -11
  286. data/screen_test/rendered/settings/width/overflow_box_l2r.frame +0 -1
  287. data/screen_test/rendered/settings/width/overflow_box_l2r.rb +0 -14
  288. data/screen_test/rendered/settings/width/overflow_box_t2b.frame +0 -1
  289. data/screen_test/rendered/settings/width/overflow_box_t2b.rb +0 -15
  290. data/screen_test/rendered/settings/width/overflow_grid.frame +0 -1
  291. data/screen_test/screen_tester.rb +0 -201
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: whirled_peas
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Collier
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-26 00:00:00.000000000 Z
11
+ date: 2021-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline
@@ -70,19 +70,40 @@ files:
70
70
  - README.md
71
71
  - Rakefile
72
72
  - bin/console
73
+ - bin/easing
74
+ - bin/reset_cursor
75
+ - bin/screen_test
73
76
  - bin/setup
77
+ - examples/graph.rb
74
78
  - examples/intro.rb
75
79
  - examples/scrolling.rb
76
80
  - exe/whirled_peas
77
81
  - lib/whirled_peas.rb
82
+ - lib/whirled_peas/animator.rb
83
+ - lib/whirled_peas/animator/debug_consumer.rb
84
+ - lib/whirled_peas/animator/easing.rb
85
+ - lib/whirled_peas/animator/frame.rb
86
+ - lib/whirled_peas/animator/frameset.rb
87
+ - lib/whirled_peas/animator/producer.rb
88
+ - lib/whirled_peas/animator/renderer_consumer.rb
89
+ - lib/whirled_peas/command.rb
90
+ - lib/whirled_peas/command/base.rb
91
+ - lib/whirled_peas/command/config_command.rb
92
+ - lib/whirled_peas/command/debug.rb
93
+ - lib/whirled_peas/command/fonts.rb
94
+ - lib/whirled_peas/command/frame_command.rb
95
+ - lib/whirled_peas/command/frames.rb
96
+ - lib/whirled_peas/command/help.rb
97
+ - lib/whirled_peas/command/play.rb
98
+ - lib/whirled_peas/command/record.rb
99
+ - lib/whirled_peas/command/still.rb
78
100
  - lib/whirled_peas/command_line.rb
79
101
  - lib/whirled_peas/config.rb
102
+ - lib/whirled_peas/device.rb
103
+ - lib/whirled_peas/device/null_device.rb
104
+ - lib/whirled_peas/device/output_file.rb
105
+ - lib/whirled_peas/device/screen.rb
80
106
  - lib/whirled_peas/errors.rb
81
- - lib/whirled_peas/frame.rb
82
- - lib/whirled_peas/frame/consumer.rb
83
- - lib/whirled_peas/frame/debug_consumer.rb
84
- - lib/whirled_peas/frame/event_loop.rb
85
- - lib/whirled_peas/frame/producer.rb
86
107
  - lib/whirled_peas/graphics.rb
87
108
  - lib/whirled_peas/graphics/box_painter.rb
88
109
  - lib/whirled_peas/graphics/canvas.rb
@@ -90,16 +111,19 @@ files:
90
111
  - lib/whirled_peas/graphics/container_coords.rb
91
112
  - lib/whirled_peas/graphics/container_dimensions.rb
92
113
  - lib/whirled_peas/graphics/container_painter.rb
114
+ - lib/whirled_peas/graphics/content_dimensions.rb
115
+ - lib/whirled_peas/graphics/content_painter.rb
93
116
  - lib/whirled_peas/graphics/debugger.rb
117
+ - lib/whirled_peas/graphics/graph_dimensions.rb
118
+ - lib/whirled_peas/graphics/graph_painter.rb
94
119
  - lib/whirled_peas/graphics/grid_painter.rb
95
120
  - lib/whirled_peas/graphics/mock_screen.rb
96
121
  - lib/whirled_peas/graphics/painter.rb
97
122
  - lib/whirled_peas/graphics/renderer.rb
98
- - lib/whirled_peas/graphics/screen.rb
99
- - lib/whirled_peas/graphics/text_dimensions.rb
100
123
  - lib/whirled_peas/graphics/text_painter.rb
101
124
  - lib/whirled_peas/null_logger.rb
102
125
  - lib/whirled_peas/settings.rb
126
+ - lib/whirled_peas/settings/alignment.rb
103
127
  - lib/whirled_peas/settings/bg_color.rb
104
128
  - lib/whirled_peas/settings/border.rb
105
129
  - lib/whirled_peas/settings/box_settings.rb
@@ -108,115 +132,174 @@ files:
108
132
  - lib/whirled_peas/settings/debugger.rb
109
133
  - lib/whirled_peas/settings/display_flow.rb
110
134
  - lib/whirled_peas/settings/element_settings.rb
135
+ - lib/whirled_peas/settings/graph_settings.rb
111
136
  - lib/whirled_peas/settings/grid_settings.rb
112
137
  - lib/whirled_peas/settings/margin.rb
113
138
  - lib/whirled_peas/settings/padding.rb
114
139
  - lib/whirled_peas/settings/position.rb
115
140
  - lib/whirled_peas/settings/scrollbar.rb
141
+ - lib/whirled_peas/settings/sizing.rb
116
142
  - lib/whirled_peas/settings/spacing.rb
117
- - lib/whirled_peas/settings/text_align.rb
118
143
  - lib/whirled_peas/settings/text_color.rb
119
144
  - lib/whirled_peas/settings/text_settings.rb
145
+ - lib/whirled_peas/settings/vert_alignment.rb
120
146
  - lib/whirled_peas/utils.rb
121
147
  - lib/whirled_peas/utils/ansi.rb
148
+ - lib/whirled_peas/utils/file_handler.rb
122
149
  - lib/whirled_peas/utils/formatted_string.rb
123
150
  - lib/whirled_peas/utils/title_font.rb
124
151
  - lib/whirled_peas/version.rb
125
- - screen_test/rendered/elements/box.frame
126
- - screen_test/rendered/elements/box.rb
127
- - screen_test/rendered/elements/grid.frame
128
- - screen_test/rendered/elements/grid.rb
129
- - screen_test/rendered/elements/screen_overflow.frame
130
- - screen_test/rendered/elements/screen_overflow.rb
131
- - screen_test/rendered/elements/text.frame
132
- - screen_test/rendered/elements/text.rb
133
- - screen_test/rendered/elements/text_multiline.frame
134
- - screen_test/rendered/elements/text_multiline.rb
135
- - screen_test/rendered/settings/align/box.frame
136
- - screen_test/rendered/settings/align/box.rb
137
- - screen_test/rendered/settings/align/children_center.frame
138
- - screen_test/rendered/settings/align/children_center.rb
139
- - screen_test/rendered/settings/align/children_left.frame
140
- - screen_test/rendered/settings/align/children_left.rb
141
- - screen_test/rendered/settings/align/children_right.frame
142
- - screen_test/rendered/settings/align/children_right.rb
143
- - screen_test/rendered/settings/align/grid.frame
144
- - screen_test/rendered/settings/align/grid.rb
145
- - screen_test/rendered/settings/ansi/bold.frame
146
- - screen_test/rendered/settings/ansi/bold.rb
147
- - screen_test/rendered/settings/ansi/color.frame
148
- - screen_test/rendered/settings/ansi/color.rb
149
- - screen_test/rendered/settings/ansi/underline.frame
150
- - screen_test/rendered/settings/ansi/underline.rb
151
- - screen_test/rendered/settings/border.frame
152
- - screen_test/rendered/settings/border.rb
153
- - screen_test/rendered/settings/flow/box_b2t.frame
154
- - screen_test/rendered/settings/flow/box_b2t.rb
155
- - screen_test/rendered/settings/flow/box_l2r.frame
156
- - screen_test/rendered/settings/flow/box_l2r.rb
157
- - screen_test/rendered/settings/flow/box_r2l.frame
158
- - screen_test/rendered/settings/flow/box_r2l.rb
159
- - screen_test/rendered/settings/flow/box_t2b.frame
160
- - screen_test/rendered/settings/flow/box_t2b.rb
161
- - screen_test/rendered/settings/flow/grid_b2t.frame
162
- - screen_test/rendered/settings/flow/grid_b2t.rb
163
- - screen_test/rendered/settings/flow/grid_l2r.frame
164
- - screen_test/rendered/settings/flow/grid_l2r.rb
165
- - screen_test/rendered/settings/flow/grid_r2l.frame
166
- - screen_test/rendered/settings/flow/grid_r2l.rb
167
- - screen_test/rendered/settings/flow/grid_t2b.frame
168
- - screen_test/rendered/settings/flow/grid_t2b.rb
169
- - screen_test/rendered/settings/height/box.frame
170
- - screen_test/rendered/settings/height/box.rb
171
- - screen_test/rendered/settings/height/grid.frame
172
- - screen_test/rendered/settings/height/grid.rb
173
- - screen_test/rendered/settings/height/overflow_box.frame
174
- - screen_test/rendered/settings/height/overflow_box.rb
175
- - screen_test/rendered/settings/height/overflow_box_l2r.frame
176
- - screen_test/rendered/settings/height/overflow_box_l2r.rb
177
- - screen_test/rendered/settings/height/overflow_box_t2b.frame
178
- - screen_test/rendered/settings/height/overflow_box_t2b.rb
179
- - screen_test/rendered/settings/height/overflow_grid.frame
180
- - screen_test/rendered/settings/height/overflow_grid.rb
181
- - screen_test/rendered/settings/margin.frame
182
- - screen_test/rendered/settings/margin.rb
183
- - screen_test/rendered/settings/padding.frame
184
- - screen_test/rendered/settings/padding.rb
185
- - screen_test/rendered/settings/position/box_left.frame
186
- - screen_test/rendered/settings/position/box_left.rb
187
- - screen_test/rendered/settings/position/box_left_negative.frame
188
- - screen_test/rendered/settings/position/box_left_negative.rb
189
- - screen_test/rendered/settings/position/box_top.frame
190
- - screen_test/rendered/settings/position/box_top.rb
191
- - screen_test/rendered/settings/position/box_top_negative.frame
192
- - screen_test/rendered/settings/position/box_top_negative.rb
193
- - screen_test/rendered/settings/position/grid_left.frame
194
- - screen_test/rendered/settings/position/grid_left.rb
195
- - screen_test/rendered/settings/position/grid_left_negative.frame
196
- - screen_test/rendered/settings/position/grid_left_negative.rb
197
- - screen_test/rendered/settings/position/grid_top.frame
198
- - screen_test/rendered/settings/position/grid_top.rb
199
- - screen_test/rendered/settings/position/grid_top_negative.frame
200
- - screen_test/rendered/settings/position/grid_top_negative.rb
201
- - screen_test/rendered/settings/scroll/horiz_box.frame
202
- - screen_test/rendered/settings/scroll/horiz_box.rb
203
- - screen_test/rendered/settings/scroll/vert_box.frame
204
- - screen_test/rendered/settings/scroll/vert_box.rb
205
- - screen_test/rendered/settings/title_font.frame
206
- - screen_test/rendered/settings/title_font.rb
207
- - screen_test/rendered/settings/width/box.frame
208
- - screen_test/rendered/settings/width/box.rb
209
- - screen_test/rendered/settings/width/grid.frame
210
- - screen_test/rendered/settings/width/grid.rb
211
- - screen_test/rendered/settings/width/overflow_box.frame
212
- - screen_test/rendered/settings/width/overflow_box.rb
213
- - screen_test/rendered/settings/width/overflow_box_l2r.frame
214
- - screen_test/rendered/settings/width/overflow_box_l2r.rb
215
- - screen_test/rendered/settings/width/overflow_box_t2b.frame
216
- - screen_test/rendered/settings/width/overflow_box_t2b.rb
217
- - screen_test/rendered/settings/width/overflow_grid.frame
218
- - screen_test/rendered/settings/width/overflow_grid.rb
219
- - screen_test/screen_tester.rb
152
+ - screen_test/elements/box.frame
153
+ - screen_test/elements/box.rb
154
+ - screen_test/elements/graph.frame
155
+ - screen_test/elements/graph.rb
156
+ - screen_test/elements/grid.frame
157
+ - screen_test/elements/grid.rb
158
+ - screen_test/elements/screen_overflow_x.frame
159
+ - screen_test/elements/screen_overflow_x.rb
160
+ - screen_test/elements/screen_overflow_y.frame
161
+ - screen_test/elements/screen_overflow_y.rb
162
+ - screen_test/elements/text.frame
163
+ - screen_test/elements/text.rb
164
+ - screen_test/elements/text_multiline.frame
165
+ - screen_test/elements/text_multiline.rb
166
+ - screen_test/settings/align/box_around.frame
167
+ - screen_test/settings/align/box_around.rb
168
+ - screen_test/settings/align/box_between.frame
169
+ - screen_test/settings/align/box_between.rb
170
+ - screen_test/settings/align/box_center.frame
171
+ - screen_test/settings/align/box_center.rb
172
+ - screen_test/settings/align/box_default.frame
173
+ - screen_test/settings/align/box_default.rb
174
+ - screen_test/settings/align/box_evenly.frame
175
+ - screen_test/settings/align/box_evenly.rb
176
+ - screen_test/settings/align/box_left.frame
177
+ - screen_test/settings/align/box_left.rb
178
+ - screen_test/settings/align/box_right.frame
179
+ - screen_test/settings/align/box_right.rb
180
+ - screen_test/settings/align/children_center.frame
181
+ - screen_test/settings/align/children_center.rb
182
+ - screen_test/settings/align/children_left.frame
183
+ - screen_test/settings/align/children_left.rb
184
+ - screen_test/settings/align/children_right.frame
185
+ - screen_test/settings/align/children_right.rb
186
+ - screen_test/settings/align/grid_center.frame
187
+ - screen_test/settings/align/grid_center.rb
188
+ - screen_test/settings/align/grid_default.frame
189
+ - screen_test/settings/align/grid_default.rb
190
+ - screen_test/settings/align/grid_left.frame
191
+ - screen_test/settings/align/grid_left.rb
192
+ - screen_test/settings/align/grid_right.frame
193
+ - screen_test/settings/align/grid_right.rb
194
+ - screen_test/settings/ansi/bold.frame
195
+ - screen_test/settings/ansi/bold.rb
196
+ - screen_test/settings/ansi/color.frame
197
+ - screen_test/settings/ansi/color.rb
198
+ - screen_test/settings/ansi/underline.frame
199
+ - screen_test/settings/ansi/underline.rb
200
+ - screen_test/settings/border.frame
201
+ - screen_test/settings/border.rb
202
+ - screen_test/settings/flow/box_b2t.frame
203
+ - screen_test/settings/flow/box_b2t.rb
204
+ - screen_test/settings/flow/box_l2r.frame
205
+ - screen_test/settings/flow/box_l2r.rb
206
+ - screen_test/settings/flow/box_r2l.frame
207
+ - screen_test/settings/flow/box_r2l.rb
208
+ - screen_test/settings/flow/box_t2b.frame
209
+ - screen_test/settings/flow/box_t2b.rb
210
+ - screen_test/settings/flow/grid_b2t.frame
211
+ - screen_test/settings/flow/grid_b2t.rb
212
+ - screen_test/settings/flow/grid_l2r.frame
213
+ - screen_test/settings/flow/grid_l2r.rb
214
+ - screen_test/settings/flow/grid_r2l.frame
215
+ - screen_test/settings/flow/grid_r2l.rb
216
+ - screen_test/settings/flow/grid_t2b.frame
217
+ - screen_test/settings/flow/grid_t2b.rb
218
+ - screen_test/settings/height/box.frame
219
+ - screen_test/settings/height/box.rb
220
+ - screen_test/settings/height/box_border_sizing.frame
221
+ - screen_test/settings/height/box_border_sizing.rb
222
+ - screen_test/settings/height/grid.frame
223
+ - screen_test/settings/height/grid.rb
224
+ - screen_test/settings/height/overflow_box.frame
225
+ - screen_test/settings/height/overflow_box.rb
226
+ - screen_test/settings/height/overflow_box_l2r.frame
227
+ - screen_test/settings/height/overflow_box_l2r.rb
228
+ - screen_test/settings/height/overflow_box_t2b.frame
229
+ - screen_test/settings/height/overflow_box_t2b.rb
230
+ - screen_test/settings/height/overflow_grid.frame
231
+ - screen_test/settings/height/overflow_grid.rb
232
+ - screen_test/settings/margin.frame
233
+ - screen_test/settings/margin.rb
234
+ - screen_test/settings/padding.frame
235
+ - screen_test/settings/padding.rb
236
+ - screen_test/settings/position/box_left.frame
237
+ - screen_test/settings/position/box_left.rb
238
+ - screen_test/settings/position/box_left_negative.frame
239
+ - screen_test/settings/position/box_left_negative.rb
240
+ - screen_test/settings/position/box_top.frame
241
+ - screen_test/settings/position/box_top.rb
242
+ - screen_test/settings/position/box_top_negative.frame
243
+ - screen_test/settings/position/box_top_negative.rb
244
+ - screen_test/settings/position/grid_left.frame
245
+ - screen_test/settings/position/grid_left.rb
246
+ - screen_test/settings/position/grid_left_negative.frame
247
+ - screen_test/settings/position/grid_left_negative.rb
248
+ - screen_test/settings/position/grid_top.frame
249
+ - screen_test/settings/position/grid_top.rb
250
+ - screen_test/settings/position/grid_top_negative.frame
251
+ - screen_test/settings/position/grid_top_negative.rb
252
+ - screen_test/settings/scroll/horiz_box.frame
253
+ - screen_test/settings/scroll/horiz_box.rb
254
+ - screen_test/settings/scroll/horiz_box_align_center.rb
255
+ - screen_test/settings/scroll/horiz_box_align_right.rb
256
+ - screen_test/settings/scroll/vert_box.frame
257
+ - screen_test/settings/scroll/vert_box.rb
258
+ - screen_test/settings/title_font.frame
259
+ - screen_test/settings/title_font.rb
260
+ - screen_test/settings/valign/box_around.frame
261
+ - screen_test/settings/valign/box_around.rb
262
+ - screen_test/settings/valign/box_between.frame
263
+ - screen_test/settings/valign/box_between.rb
264
+ - screen_test/settings/valign/box_bottom.frame
265
+ - screen_test/settings/valign/box_bottom.rb
266
+ - screen_test/settings/valign/box_default.frame
267
+ - screen_test/settings/valign/box_default.rb
268
+ - screen_test/settings/valign/box_evenly.frame
269
+ - screen_test/settings/valign/box_evenly.rb
270
+ - screen_test/settings/valign/box_middle.frame
271
+ - screen_test/settings/valign/box_middle.rb
272
+ - screen_test/settings/valign/box_top.frame
273
+ - screen_test/settings/valign/box_top.rb
274
+ - screen_test/settings/valign/grid_bottom.frame
275
+ - screen_test/settings/valign/grid_bottom.rb
276
+ - screen_test/settings/valign/grid_default.frame
277
+ - screen_test/settings/valign/grid_default.rb
278
+ - screen_test/settings/valign/grid_middle.frame
279
+ - screen_test/settings/valign/grid_middle.rb
280
+ - screen_test/settings/valign/grid_top.frame
281
+ - screen_test/settings/valign/grid_top.rb
282
+ - screen_test/settings/width/box_border_sizing.frame
283
+ - screen_test/settings/width/box_border_sizing.rb
284
+ - screen_test/settings/width/box_content.frame
285
+ - screen_test/settings/width/box_content.rb
286
+ - screen_test/settings/width/box_default.frame
287
+ - screen_test/settings/width/box_default.rb
288
+ - screen_test/settings/width/grid.frame
289
+ - screen_test/settings/width/grid.rb
290
+ - screen_test/settings/width/overflow_align_center.frame
291
+ - screen_test/settings/width/overflow_align_center.rb
292
+ - screen_test/settings/width/overflow_align_right.frame
293
+ - screen_test/settings/width/overflow_align_right.rb
294
+ - screen_test/settings/width/overflow_box.frame
295
+ - screen_test/settings/width/overflow_box.rb
296
+ - screen_test/settings/width/overflow_box_l2r.frame
297
+ - screen_test/settings/width/overflow_box_l2r.rb
298
+ - screen_test/settings/width/overflow_box_t2b.frame
299
+ - screen_test/settings/width/overflow_box_t2b.rb
300
+ - screen_test/settings/width/overflow_grid.frame
301
+ - screen_test/settings/width/overflow_grid.rb
302
+ - tools/whirled_peas/tools/screen_tester.rb
220
303
  - whirled_peas.gemspec
221
304
  homepage: https://github.com/tcollier/whirled_peas
222
305
  licenses:
@@ -1,6 +0,0 @@
1
- module WhirledPeas
2
- module Frame
3
- end
4
-
5
- private_constant :Frame
6
- end
@@ -1,30 +0,0 @@
1
- module WhirledPeas
2
- module Frame
3
- # Abstract class for consuming frame events.
4
- class Consumer
5
- EOF = '__EOF__'
6
-
7
- def enqueue(name, duration, args)
8
- raise NotImplemented, "#{self.class} must implement #enqueue"
9
- end
10
-
11
- def running?
12
- @running == true
13
- end
14
-
15
- def start
16
- self.running = true
17
- end
18
-
19
- def stop
20
- enqueue(EOF, nil, {})
21
- end
22
-
23
- private
24
-
25
- attr_writer :running
26
- end
27
-
28
- private_constant :Consumer
29
- end
30
- end
@@ -1,30 +0,0 @@
1
- require 'whirled_peas/null_logger'
2
-
3
- require_relative 'consumer'
4
-
5
- module WhirledPeas
6
- module Frame
7
- class DebugConsumer < Consumer
8
- LOGGER_ID = 'PRINTER'
9
-
10
- def initialize(output=STDOUT, logger=NullLogger.new)
11
- @output = output
12
- @logger = logger
13
- end
14
-
15
- def enqueue(name, duration, args)
16
- if name == EOF
17
- output.puts "EOF frame detected"
18
- else
19
- displayed_for = duration ? "#{duration} second(s)" : '1 frame'
20
- args_str = args.empty? ? '' : " '#{JSON.generate(args)}'"
21
- output.puts "Frame '#{name}' displayed for #{displayed_for}#{args_str}"
22
- end
23
- end
24
-
25
- private
26
-
27
- attr_reader :output, :logger
28
- end
29
- end
30
- end
@@ -1,90 +0,0 @@
1
- require 'whirled_peas/null_logger'
2
- require 'whirled_peas/graphics/screen'
3
-
4
- require_relative 'consumer'
5
-
6
- module WhirledPeas
7
- module Frame
8
- class EventLoop < Consumer
9
- DEFAULT_REFRESH_RATE = 30
10
-
11
- LOGGER_ID = 'EVENT LOOP'
12
-
13
- def initialize(
14
- template_factory,
15
- loading_template_factory=nil,
16
- refresh_rate: DEFAULT_REFRESH_RATE,
17
- logger: NullLogger.new,
18
- screen: Graphics::Screen.new
19
- )
20
- @template_factory = template_factory
21
- @loading_template_factory = loading_template_factory
22
- @queue = Queue.new
23
- @frame_duration = 1.0 / refresh_rate
24
- @logger = logger
25
- @screen = screen
26
- end
27
-
28
- def enqueue(name, duration, args)
29
- # If duration is nil, set it to the duration of a single frame
30
- queue.push([name, duration || frame_duration, args])
31
- end
32
-
33
- def start
34
- super
35
- wait_for_content
36
- play_content
37
- rescue
38
- self.running = false
39
- logger.warn(LOGGER_ID) { 'Exiting with error' }
40
- raise
41
- ensure
42
- screen.finalize
43
- end
44
-
45
- private
46
-
47
- attr_reader :template_factory, :loading_template_factory, :queue, :frame_duration, :logger, :screen
48
-
49
- def wait_for_content
50
- if loading_template_factory
51
- play_loading_screen
52
- else
53
- sleep(frame_duration) while queue.empty?
54
- end
55
- end
56
-
57
- def play_loading_screen
58
- while queue.empty?
59
- screen.paint(loading_template_factory.build)
60
- sleep(frame_duration)
61
- end
62
- end
63
-
64
- def play_content
65
- template = nil
66
- frame_until = Time.new(0) # Tell the loop to immediately pick up a new frame
67
- while running?
68
- frame_start = Time.now
69
- next_frame_at = frame_start + frame_duration
70
- if frame_until > frame_start
71
- # While we're still displaying the previous frame, refresh the screen
72
- screen.refresh
73
- elsif !queue.empty?
74
- name, duration, args = queue.pop
75
- if name == EOF
76
- self.running = false
77
- else
78
- frame_until = frame_start + duration
79
- template = template_factory.build(name, args)
80
- screen.paint(template)
81
- end
82
- else
83
- wait_for_content
84
- end
85
- sleep([0, next_frame_at - Time.now].max)
86
- end
87
- end
88
- end
89
- end
90
- end