lizarb 1.0.3 → 1.0.5

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 (457) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +34 -7
  3. data/Gemfile.lock +179 -18
  4. data/README.md +53 -9
  5. data/Rakefile +38 -0
  6. data/app/dev/commands/color_command.rb +29 -0
  7. data/app/dev/commands/color_command_test.rb +10 -0
  8. data/app/dev/commands/stick_command.rb +102 -0
  9. data/app/dev/commands/stick_command_test.rb +19 -0
  10. data/app/dev_box.rb +54 -20
  11. data/app/happy_box.rb +4 -3
  12. data/app/net/databases/redis_db.rb +1 -1
  13. data/app/net/databases/redis_db_test.rb +5 -5
  14. data/app/net/databases/sqlite_db.rb +1 -1
  15. data/app/net/databases/sqlite_db_test.rb +5 -5
  16. data/app/net/records/app_record.rb +1 -1
  17. data/app/net/records/app_record_test.rb +1 -1
  18. data/app/net/records/post_record_test.rb +1 -1
  19. data/app/net/records/user_record_test.rb +1 -1
  20. data/app/net_box.rb +29 -6
  21. data/app/web/requests/app_request.rb +1 -1
  22. data/app/web/requests/app_request_test.rb +1 -1
  23. data/app/web/requests/foo_request.rb +26 -0
  24. data/app/web/requests/foo_request_test.rb +7 -0
  25. data/app/web_box.rb +17 -9
  26. data/app.rb +41 -10
  27. data/{exe/Gemfile → app_global.gemfile.rb} +2 -0
  28. data/app_global.gemfile.rb.lock +41 -0
  29. data/app_global.rb +5 -0
  30. data/{app → examples/bench/app}/dev/benches/loops_bench.rb +11 -3
  31. data/examples/bench/app/dev/benches/loops_bench_test.rb +11 -0
  32. data/examples/bench/app/dev/benches/objects_bench.rb +48 -0
  33. data/examples/bench/app/dev/benches/objects_bench_test.rb +11 -0
  34. data/examples/bench/app/dev/benches/sorted_bench.rb +74 -0
  35. data/examples/bench/app/dev/benches/sorted_bench_test.rb +11 -0
  36. data/examples/bench/app/dev/benches/variables_bench.rb +61 -0
  37. data/examples/bench/app/dev/benches/variables_bench_test.rb +11 -0
  38. data/examples/client/app/net/clients/news_client.rb +42 -0
  39. data/examples/client/app/net/clients/news_client_test.rb +24 -0
  40. data/{app → examples/command/app}/dev/commands/calculator_command.rb +2 -2
  41. data/{app → examples/command/app}/dev/commands/calculator_command_test.rb +1 -2
  42. data/{app → examples/command/app}/dev/commands/circle_command.rb +2 -2
  43. data/{app → examples/command/app}/dev/commands/circle_command_test.rb +1 -2
  44. data/{app → examples/command/app}/dev/commands/narrative_method_command.rb +8 -10
  45. data/{app → examples/command/app}/dev/commands/narrative_method_command_test.rb +2 -3
  46. data/{app → examples/command/app}/dev/commands/quadratic_command.rb +2 -2
  47. data/{app → examples/command/app}/dev/commands/quadratic_command_test.rb +1 -2
  48. data/examples/command/app/dev_box.rb +3 -0
  49. data/examples/log/app/dev/logs/logger_log.rb +8 -0
  50. data/examples/log/app/dev/logs/logger_log_test.rb +16 -0
  51. data/examples/new/app/dev_box.rb +67 -0
  52. data/examples/new/app.rb +41 -0
  53. data/examples/shell/app/dev/shells/bash_adapter_shell.rb +25 -0
  54. data/examples/shell/app/dev/shells/bash_adapter_shell_test.rb +23 -0
  55. data/examples/shell/app/dev/shells/business_logic_shell.rb +42 -0
  56. data/examples/shell/app/dev/shells/business_logic_shell_test.rb +39 -0
  57. data/examples/shell/app/dev/shells/gem_adapter_shell.rb +33 -0
  58. data/examples/shell/app/dev/shells/gem_adapter_shell_test.rb +23 -0
  59. data/exe/liza +6 -1
  60. data/exe/lizarb +9 -1
  61. data/lib/app.rb +74 -145
  62. data/lib/art_system/art_box.rb +5 -0
  63. data/lib/art_system/art_box_test.rb +8 -0
  64. data/lib/art_system.rb +8 -0
  65. data/lib/crypto_system/crypto_box.rb +5 -0
  66. data/lib/crypto_system/crypto_box_test.rb +8 -0
  67. data/lib/crypto_system.rb +8 -0
  68. data/lib/deep_system/deep_box.rb +5 -0
  69. data/lib/deep_system/deep_box_test.rb +8 -0
  70. data/lib/deep_system.rb +8 -0
  71. data/lib/desk_system/commands/glimmer_command.rb +26 -0
  72. data/lib/desk_system/commands/glimmer_command_test.rb +10 -0
  73. data/lib/desk_system/desk_box.rb +5 -0
  74. data/lib/desk_system/desk_box_test.rb +8 -0
  75. data/lib/desk_system.rb +8 -0
  76. data/lib/dev_system/{dev/controllers/command → commands}/test_command.rb +37 -9
  77. data/lib/dev_system/{dev/controllers/command → commands}/test_command_test.rb +1 -2
  78. data/lib/dev_system/dev_box.rb +79 -0
  79. data/lib/dev_system/dev_box_test.rb +33 -0
  80. data/lib/dev_system/generators/env_generator.rb +87 -0
  81. data/lib/dev_system/generators/env_generator_test.rb +11 -0
  82. data/lib/dev_system/generators/gemfile_generator.rb +47 -0
  83. data/lib/dev_system/generators/gemfile_generator_test.rb +11 -0
  84. data/lib/dev_system/generators/system_generator.rb +70 -0
  85. data/lib/dev_system/generators/system_generator_test.rb +11 -0
  86. data/lib/dev_system/sub/bench/bench.rb +7 -0
  87. data/lib/dev_system/{dev/panels → sub/bench}/bench_panel_test.rb +6 -2
  88. data/lib/dev_system/sub/bench/bench_test.rb +24 -0
  89. data/lib/dev_system/sub/bench/benches/not_found_bench.rb +33 -0
  90. data/lib/dev_system/{dev/controllers/bench → sub/bench/benches}/not_found_bench_test.rb +1 -2
  91. data/lib/dev_system/{dev/controllers/command → sub/bench/commands}/bench_command.rb +2 -7
  92. data/lib/dev_system/{dev/controllers/command → sub/bench/commands}/bench_command_test.rb +1 -2
  93. data/lib/dev_system/sub/bench/generators/bench_generator.rb +70 -0
  94. data/lib/dev_system/sub/bench/generators/bench_generator_test.rb +10 -0
  95. data/lib/dev_system/sub/command/command.rb +28 -0
  96. data/lib/dev_system/sub/command/command_panel.rb +151 -0
  97. data/lib/dev_system/sub/command/command_panel_test.rb +78 -0
  98. data/lib/dev_system/{dev/controllers → sub/command}/command_test.rb +6 -2
  99. data/lib/dev_system/sub/command/commands/base_command.rb +48 -0
  100. data/lib/dev_system/sub/command/commands/base_command_test.rb +11 -0
  101. data/lib/dev_system/{dev/controllers/terminal/irb_terminal.rb → sub/command/commands/irb_command.rb} +4 -2
  102. data/lib/dev_system/sub/command/commands/irb_command_test.rb +11 -0
  103. data/lib/dev_system/sub/command/commands/not_found_command.rb +156 -0
  104. data/lib/dev_system/sub/command/commands/not_found_command_test.rb +11 -0
  105. data/lib/dev_system/sub/command/commands/pry_command.rb +10 -0
  106. data/lib/dev_system/sub/command/commands/pry_command_test.rb +11 -0
  107. data/lib/dev_system/sub/command/commands/simple_command.rb +143 -0
  108. data/lib/dev_system/sub/command/commands/simple_command_test.rb +11 -0
  109. data/lib/dev_system/sub/command/generators/command_generator.rb +90 -0
  110. data/lib/dev_system/sub/command/generators/command_generator_test.rb +11 -0
  111. data/lib/dev_system/sub/command/input_commands/highline_input_command.rb +17 -0
  112. data/lib/dev_system/sub/command/input_commands/highline_input_command_test.rb +19 -0
  113. data/lib/dev_system/sub/command/input_commands/input_command.rb +20 -0
  114. data/lib/dev_system/sub/command/input_commands/input_command_test.rb +19 -0
  115. data/lib/dev_system/sub/command/input_commands/tty_input_command.rb +55 -0
  116. data/lib/dev_system/sub/command/input_commands/tty_input_command_test.rb +19 -0
  117. data/lib/dev_system/sub/generator/commands/generate_command.rb +9 -0
  118. data/lib/dev_system/sub/generator/commands/generate_command_test.rb +11 -0
  119. data/lib/dev_system/sub/generator/commands/new_command.rb +10 -0
  120. data/lib/dev_system/sub/generator/commands/new_command_test.rb +7 -0
  121. data/lib/dev_system/sub/generator/generator.rb +19 -0
  122. data/lib/dev_system/sub/generator/generator_panel.rb +98 -0
  123. data/lib/dev_system/sub/generator/generator_panel_test.rb +79 -0
  124. data/lib/dev_system/{dev/controllers → sub/generator}/generator_test.rb +6 -2
  125. data/lib/dev_system/sub/generator/generators/base_generator.rb +64 -0
  126. data/lib/dev_system/sub/generator/generators/base_generator_test.rb +11 -0
  127. data/lib/dev_system/sub/generator/generators/generator_generator.rb +71 -0
  128. data/lib/dev_system/sub/generator/generators/generator_generator_test.rb +11 -0
  129. data/lib/dev_system/sub/generator/generators/new_generator.rb +74 -0
  130. data/lib/dev_system/sub/generator/generators/new_generator_test.rb +11 -0
  131. data/lib/dev_system/sub/generator/generators/not_found_generator.rb +155 -0
  132. data/lib/dev_system/sub/generator/generators/not_found_generator_test.rb +11 -0
  133. data/lib/dev_system/sub/generator/generators/simple_generator.rb +257 -0
  134. data/lib/dev_system/sub/generator/generators/simple_generator_test.rb +38 -0
  135. data/lib/dev_system/sub/log/commands/log_command.rb +11 -0
  136. data/lib/dev_system/sub/log/commands/log_command_test.rb +11 -0
  137. data/lib/dev_system/sub/log/generators/log_generator.rb +54 -0
  138. data/lib/dev_system/sub/log/generators/log_generator_test.rb +10 -0
  139. data/lib/dev_system/sub/log/log.rb +3 -0
  140. data/lib/dev_system/sub/log/log_panel.rb +47 -0
  141. data/lib/dev_system/sub/log/log_panel_test.rb +50 -0
  142. data/lib/dev_system/sub/log/log_test.rb +16 -0
  143. data/lib/dev_system/sub/log/logs/output_log.rb +74 -0
  144. data/lib/dev_system/sub/log/logs/output_log_test.rb +47 -0
  145. data/lib/dev_system/sub/log/logs/stick_log.rb +79 -0
  146. data/lib/dev_system/sub/log/logs/stick_log_test.rb +88 -0
  147. data/lib/dev_system/sub/shell/commands/convert_command.rb +27 -0
  148. data/lib/dev_system/sub/shell/commands/convert_command_test.rb +10 -0
  149. data/lib/dev_system/sub/shell/commands/format_command.rb +25 -0
  150. data/lib/dev_system/sub/shell/commands/format_command_test.rb +10 -0
  151. data/lib/dev_system/sub/shell/commands/loc_command.rb +211 -0
  152. data/lib/dev_system/sub/shell/commands/loc_command_test.rb +10 -0
  153. data/lib/dev_system/sub/shell/commands/shell_command.rb +45 -0
  154. data/lib/dev_system/sub/shell/commands/shell_command_test.rb +11 -0
  155. data/lib/dev_system/sub/shell/converter_shells/coffee_converter_shell.rb +21 -0
  156. data/lib/dev_system/sub/shell/converter_shells/coffee_converter_shell_test.rb +41 -0
  157. data/lib/dev_system/sub/shell/converter_shells/converter_shell.rb +13 -0
  158. data/lib/dev_system/sub/shell/converter_shells/converter_shell_test.rb +19 -0
  159. data/lib/dev_system/sub/shell/converter_shells/haml_converter_shell.rb +30 -0
  160. data/lib/dev_system/sub/shell/converter_shells/haml_converter_shell_test.rb +34 -0
  161. data/lib/dev_system/sub/shell/converter_shells/md_converter_shell.rb +21 -0
  162. data/lib/dev_system/sub/shell/converter_shells/md_converter_shell_test.rb +38 -0
  163. data/lib/dev_system/sub/shell/converter_shells/scss_converter_shell.rb +59 -0
  164. data/lib/dev_system/sub/shell/converter_shells/scss_converter_shell_test.rb +59 -0
  165. data/lib/dev_system/sub/shell/formatter_shells/formatter_shell.rb +13 -0
  166. data/lib/dev_system/sub/shell/formatter_shells/formatter_shell_test.rb +19 -0
  167. data/lib/dev_system/sub/shell/formatter_shells/html_formatter_shell.rb +20 -0
  168. data/lib/dev_system/sub/shell/formatter_shells/html_formatter_shell_test.rb +51 -0
  169. data/lib/dev_system/sub/shell/generators/shell_generator.rb +68 -0
  170. data/lib/dev_system/sub/shell/generators/shell_generator_test.rb +10 -0
  171. data/lib/dev_system/{dev/controllers → sub/shell}/shell.rb +22 -0
  172. data/lib/dev_system/sub/shell/shell_panel.rb +98 -0
  173. data/lib/dev_system/sub/shell/shell_panel_test.rb +18 -0
  174. data/lib/dev_system/{dev/controllers → sub/shell}/shell_test.rb +31 -2
  175. data/lib/dev_system/sub/shell/shells/app_shell.rb +185 -0
  176. data/lib/dev_system/sub/shell/shells/app_shell_test.rb +26 -0
  177. data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/bin_shell_test.rb +1 -2
  178. data/lib/dev_system/sub/shell/shells/color_shell.rb +389 -0
  179. data/lib/dev_system/sub/shell/shells/color_shell_test.rb +27 -0
  180. data/lib/dev_system/sub/shell/shells/controller_shell.rb +20 -0
  181. data/lib/dev_system/sub/shell/shells/controller_shell_test.rb +16 -0
  182. data/lib/dev_system/sub/shell/shells/dir_shell.rb +27 -0
  183. data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/dir_shell_test.rb +1 -5
  184. data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/file_shell.rb +4 -4
  185. data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/file_shell_test.rb +1 -2
  186. data/lib/dev_system/sub/shell/shells/gem_shell.rb +21 -0
  187. data/lib/dev_system/sub/shell/shells/gem_shell_test.rb +28 -0
  188. data/lib/dev_system/sub/shell/shells/kernel_shell.rb +22 -0
  189. data/lib/dev_system/sub/shell/shells/kernel_shell_test.rb +10 -0
  190. data/lib/dev_system/sub/shell/shells/line_diff_shell.rb +26 -0
  191. data/lib/dev_system/sub/shell/shells/line_diff_shell_test.rb +11 -0
  192. data/lib/dev_system/sub/shell/shells/line_shell.rb +56 -0
  193. data/lib/dev_system/sub/shell/shells/line_shell_test.rb +70 -0
  194. data/lib/dev_system/sub/shell/shells/method_shell.rb +52 -0
  195. data/lib/dev_system/sub/shell/shells/method_shell_test.rb +34 -0
  196. data/lib/dev_system/sub/shell/shells/text_file_shell.rb +14 -0
  197. data/lib/dev_system/sub/shell/shells/text_file_shell_test.rb +11 -0
  198. data/lib/dev_system/sub/shell/shells/text_shell.rb +65 -0
  199. data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/text_shell_test.rb +1 -2
  200. data/lib/dev_system.rb +8 -2
  201. data/lib/happy_system/happy_box.rb +9 -0
  202. data/lib/happy_system/happy_box_test.rb +24 -0
  203. data/lib/happy_system/sub/axo/axo.rb +10 -0
  204. data/lib/happy_system/sub/axo/axo_panel.rb +9 -0
  205. data/lib/happy_system/sub/axo/axo_panel_test.rb +16 -0
  206. data/lib/happy_system/sub/axo/axo_test.rb +16 -0
  207. data/lib/happy_system/sub/axo/commands/axo_command.rb +40 -0
  208. data/lib/happy_system/sub/axo/commands/axo_command_test.rb +8 -0
  209. data/lib/happy_system/sub/axo/generators/axo_generator.rb +79 -0
  210. data/lib/happy_system/sub/axo/generators/axo_generator_test.rb +11 -0
  211. data/lib/happy_system.rb +4 -2
  212. data/lib/lab_system/clients/kroki_client.rb +134 -0
  213. data/lib/lab_system/clients/kroki_client_test.rb +32 -0
  214. data/lib/lab_system/clients/liza_kroki_client.rb +176 -0
  215. data/lib/lab_system/clients/liza_kroki_client_test.rb +32 -0
  216. data/lib/lab_system/commands/docker_command.rb +61 -0
  217. data/lib/lab_system/commands/docker_command_test.rb +11 -0
  218. data/lib/lab_system/lab_box.rb +5 -0
  219. data/lib/lab_system/lab_box_test.rb +8 -0
  220. data/lib/lab_system/requests/kroki_request.rb +182 -0
  221. data/lib/lab_system/requests/kroki_request_test.rb +11 -0
  222. data/lib/lab_system/shells/docker_shell.rb +60 -0
  223. data/lib/lab_system/shells/docker_shell_test.rb +61 -0
  224. data/lib/lab_system/shells/kroki_docker_shell.rb +20 -0
  225. data/lib/lab_system/shells/kroki_docker_shell_test.rb +11 -0
  226. data/lib/lab_system.rb +8 -0
  227. data/lib/lerb.rb +95 -49
  228. data/lib/liza/base/controller.rb +14 -15
  229. data/lib/liza/base/controller_test.rb +28 -2
  230. data/lib/liza/base/panel.rb +64 -24
  231. data/lib/liza/base/panel_test.rb +168 -3
  232. data/lib/liza/base_parts/controller_subsystem_part.rb +93 -0
  233. data/lib/liza/base_parts/panel_rescuer_part.rb +129 -0
  234. data/lib/liza/meta/box.rb +24 -0
  235. data/lib/liza/meta/box_test.rb +20 -0
  236. data/lib/liza/meta/part_test.rb +6 -1
  237. data/lib/liza/meta/system.rb +50 -7
  238. data/lib/liza/meta/system_test.rb +6 -2
  239. data/lib/liza/ruby_tests/app_test.rb +39 -0
  240. data/lib/liza/ruby_tests/class_test.rb +20 -0
  241. data/lib/liza/ruby_tests/module_test.rb +4 -4
  242. data/lib/liza/{ruby_test.rb → ruby_tests/object_test.rb} +1 -1
  243. data/lib/liza/ruby_tests/string_test.rb +3 -1
  244. data/lib/liza/{test → safety}/test.rb +9 -0
  245. data/lib/liza/{test → safety}/test_test.rb +44 -7
  246. data/lib/liza/{test_parts → safety_parts}/test_assertions_advanced_part.rb +1 -1
  247. data/lib/liza/{test_parts → safety_parts}/test_assertions_part.rb +1 -1
  248. data/lib/liza/{test_parts → safety_parts}/test_dsl_part.rb +3 -3
  249. data/lib/liza/{test_parts → safety_parts}/test_log_part.rb +20 -0
  250. data/lib/liza/{test_parts → safety_parts}/test_subject_part.rb +10 -0
  251. data/lib/liza/safety_parts/test_tree_part.rb +87 -0
  252. data/lib/liza/unit.rb +64 -120
  253. data/lib/liza/unit_parts/unit_classes_part.rb +37 -0
  254. data/lib/liza/unit_parts/unit_classes_part_test.rb +3 -0
  255. data/lib/liza/unit_parts/unit_logging_part.rb +139 -0
  256. data/lib/liza/unit_parts/unit_logging_part_test.rb +3 -0
  257. data/lib/liza/unit_parts/unit_methods_part.rb +35 -0
  258. data/lib/liza/unit_parts/unit_methods_part_test.rb +3 -0
  259. data/lib/liza/unit_parts/unit_procedure_part.rb +2 -2
  260. data/lib/liza/unit_parts/unit_procedure_part_test.rb +9 -9
  261. data/lib/liza/unit_parts/unit_renderer_part.rb +171 -0
  262. data/lib/liza/unit_parts/unit_renderer_part_test.rb +15 -0
  263. data/lib/liza/unit_parts/unit_settings_part.rb +84 -0
  264. data/lib/liza/unit_parts/unit_settings_part_test.rb +3 -0
  265. data/lib/liza/unit_test.rb +114 -5
  266. data/lib/liza.rb +11 -2
  267. data/lib/lizarb/ruby/class.rb +9 -1
  268. data/lib/lizarb/ruby/module.rb +1 -1
  269. data/lib/lizarb/ruby/string.rb +3 -1
  270. data/lib/lizarb/version.rb +1 -1
  271. data/lib/lizarb.rb +404 -29
  272. data/lib/micro_system/micro_box.rb +5 -0
  273. data/lib/micro_system/micro_box_test.rb +8 -0
  274. data/lib/micro_system.rb +8 -0
  275. data/lib/net_system/net_box.rb +21 -0
  276. data/lib/net_system/{net/net_box_test.rb → net_box_test.rb} +1 -2
  277. data/lib/net_system/{net/panels → sub/client}/client_panel_test.rb +1 -2
  278. data/lib/net_system/{net/controllers → sub/client}/client_test.rb +1 -2
  279. data/lib/net_system/sub/client/generators/client_generator.rb +88 -0
  280. data/lib/net_system/sub/client/generators/client_generator_test.rb +10 -0
  281. data/lib/net_system/sub/database/clients/mongo_client.rb +33 -0
  282. data/lib/net_system/sub/database/clients/mongo_client_test.rb +20 -0
  283. data/lib/net_system/sub/database/clients/mysql_client.rb +29 -0
  284. data/lib/net_system/sub/database/clients/mysql_client_test.rb +23 -0
  285. data/lib/net_system/sub/database/clients/pgsql_client.rb +29 -0
  286. data/lib/net_system/sub/database/clients/pgsql_client_test.rb +25 -0
  287. data/lib/net_system/{net/controllers/client → sub/database/clients}/redis_client.rb +5 -2
  288. data/lib/net_system/{net/controllers/client → sub/database/clients}/redis_client_test.rb +2 -2
  289. data/lib/net_system/{net/controllers/client → sub/database/clients}/sqlite_client.rb +5 -2
  290. data/lib/net_system/{net/controllers/client → sub/database/clients}/sqlite_client_test.rb +2 -2
  291. data/lib/net_system/sub/database/commands/database_command.rb +32 -0
  292. data/lib/net_system/sub/database/commands/database_command_test.rb +11 -0
  293. data/lib/net_system/{net/panels → sub/database}/database_panel_test.rb +1 -2
  294. data/lib/net_system/{net/controllers → sub/database}/database_test.rb +1 -2
  295. data/lib/net_system/sub/database/databases/mongo_db.rb +8 -0
  296. data/lib/net_system/sub/database/databases/mongo_db_test.rb +21 -0
  297. data/lib/net_system/sub/database/databases/mysql_db.rb +8 -0
  298. data/lib/net_system/sub/database/databases/mysql_db_test.rb +21 -0
  299. data/lib/net_system/sub/database/databases/pgsql_db.rb +8 -0
  300. data/lib/net_system/sub/database/databases/pgsql_db_test.rb +21 -0
  301. data/lib/net_system/{net/controllers/database → sub/database/databases}/redis_db_test.rb +1 -1
  302. data/lib/net_system/{net/controllers/database → sub/database/databases}/sqlite_db_test.rb +1 -1
  303. data/lib/net_system/sub/record/generators/record_generator.rb +33 -0
  304. data/lib/net_system/sub/record/generators/record_generator_test.rb +11 -0
  305. data/lib/net_system/sub/record/record_panel.rb +3 -0
  306. data/lib/net_system/sub/record/record_panel_test.rb +11 -0
  307. data/lib/net_system/{net/controllers → sub/record}/record_test.rb +1 -2
  308. data/lib/net_system.rb +8 -1
  309. data/lib/web_system/sub/rack/commands/rack_command.rb +30 -0
  310. data/lib/web_system/sub/rack/commands/rack_command_test.rb +11 -0
  311. data/lib/web_system/sub/rack/middle_racks/first_middle_rack.rb +8 -0
  312. data/lib/web_system/sub/rack/middle_racks/first_middle_rack_test.rb +11 -0
  313. data/lib/web_system/sub/rack/middle_racks/last_middle_rack.rb +3 -0
  314. data/lib/web_system/sub/rack/middle_racks/last_middle_rack_test.rb +11 -0
  315. data/lib/web_system/sub/rack/middle_racks/middle_rack.rb +18 -0
  316. data/lib/web_system/sub/rack/middle_racks/middle_rack_test.rb +11 -0
  317. data/lib/web_system/sub/rack/middle_racks/zeitwerk_middle_rack.rb +11 -0
  318. data/lib/web_system/sub/rack/middle_racks/zeitwerk_middle_rack_test.rb +11 -0
  319. data/lib/web_system/sub/rack/rack_panel.rb +52 -0
  320. data/lib/web_system/{web/panels → sub/rack}/rack_panel_test.rb +1 -2
  321. data/lib/web_system/{web/controllers → sub/rack}/rack_test.rb +1 -2
  322. data/lib/web_system/sub/rack/server_racks/agoo_server_rack.rb +53 -0
  323. data/lib/web_system/sub/rack/server_racks/agoo_server_rack_test.rb +11 -0
  324. data/lib/web_system/sub/rack/server_racks/falcon_server_rack.rb +46 -0
  325. data/lib/web_system/sub/rack/server_racks/falcon_server_rack_test.rb +11 -0
  326. data/lib/web_system/sub/rack/server_racks/iodine_server_rack.rb +47 -0
  327. data/lib/web_system/sub/rack/server_racks/iodine_server_rack_test.rb +11 -0
  328. data/lib/web_system/sub/rack/server_racks/puma_server_rack.rb +48 -0
  329. data/lib/web_system/sub/rack/server_racks/puma_server_rack_test.rb +11 -0
  330. data/lib/web_system/sub/rack/server_racks/server_rack.rb +12 -0
  331. data/lib/web_system/sub/rack/server_racks/server_rack_test.rb +11 -0
  332. data/lib/web_system/sub/rack/server_racks/thin_server_rack.rb +85 -0
  333. data/lib/web_system/sub/rack/server_racks/thin_server_rack_test.rb +11 -0
  334. data/lib/web_system/sub/request/commands/request_command.rb +125 -0
  335. data/lib/web_system/sub/request/commands/request_command_test.rb +11 -0
  336. data/lib/web_system/sub/request/generators/request_generator.rb +96 -0
  337. data/lib/web_system/sub/request/generators/request_generator_test.rb +11 -0
  338. data/lib/web_system/sub/request/request_panel.rb +69 -0
  339. data/lib/web_system/sub/request/request_panel_test.rb +54 -0
  340. data/lib/web_system/{web/controllers → sub/request}/request_test.rb +1 -2
  341. data/lib/web_system/sub/request/requests/simple_request.rb +95 -0
  342. data/lib/web_system/sub/request/requests/simple_request_test.rb +11 -0
  343. data/lib/web_system/sub/request/router_requests/router_request.rb +7 -0
  344. data/lib/web_system/sub/request/router_requests/router_request_test.rb +11 -0
  345. data/lib/web_system/sub/request/router_requests/simple_router_request.rb +24 -0
  346. data/lib/web_system/sub/request/router_requests/simple_router_request_test.rb +11 -0
  347. data/lib/web_system/web_box.rb +17 -0
  348. data/lib/web_system/{web/web_box_test.rb → web_box_test.rb} +1 -2
  349. data/lib/web_system.rb +9 -3
  350. data/lib/work_system/work_box.rb +5 -0
  351. data/lib/work_system/work_box_test.rb +8 -0
  352. data/lib/work_system.rb +8 -0
  353. data/lizarb.gemspec +14 -8
  354. metadata +375 -168
  355. data/.ruby-version +0 -1
  356. data/app/dev/benches/app_bench.rb +0 -5
  357. data/app/dev/benches/app_bench_test.rb +0 -7
  358. data/app/dev/benches/loops_bench_test.rb +0 -11
  359. data/app/dev/commands/app_command.rb +0 -5
  360. data/app/dev/commands/app_command_test.rb +0 -7
  361. data/app/dev/commands/new_command.rb +0 -9
  362. data/app/dev/commands/new_command_test.rb +0 -7
  363. data/app/dev/generators/bench_generator/bench.rb.erb +0 -24
  364. data/app/dev/generators/bench_generator/bench_test.rb.erb +0 -12
  365. data/app/dev/generators/bench_generator.rb +0 -18
  366. data/app/dev/generators/bench_generator_test.rb +0 -12
  367. data/app/dev/generators/command_generator/command.rb.erb +0 -26
  368. data/app/dev/generators/command_generator/command_test.rb.erb +0 -12
  369. data/app/dev/generators/command_generator.rb +0 -18
  370. data/app/dev/generators/command_generator_test.rb +0 -12
  371. data/app/dev/generators/record_generator.rb +0 -46
  372. data/app/dev/generators/record_generator_test.rb +0 -12
  373. data/app/dev/generators/request_generator.rb +0 -63
  374. data/app/dev/generators/request_generator_test.rb +0 -12
  375. data/app/happy/axos/axo.rb +0 -50
  376. data/exe/Gemfile.lock +0 -13
  377. data/exe/lrb +0 -3
  378. data/lib/dev_system/dev/controllers/bench/not_found_bench.rb +0 -27
  379. data/lib/dev_system/dev/controllers/bench.rb +0 -9
  380. data/lib/dev_system/dev/controllers/bench_dsl_main_part.rb +0 -58
  381. data/lib/dev_system/dev/controllers/bench_test.rb +0 -12
  382. data/lib/dev_system/dev/controllers/command/echo_command.rb +0 -9
  383. data/lib/dev_system/dev/controllers/command/echo_command_test.rb +0 -12
  384. data/lib/dev_system/dev/controllers/command/generate_command.rb +0 -33
  385. data/lib/dev_system/dev/controllers/command/generate_command_test.rb +0 -12
  386. data/lib/dev_system/dev/controllers/command/not_found_command.rb +0 -27
  387. data/lib/dev_system/dev/controllers/command/not_found_command_test.rb +0 -12
  388. data/lib/dev_system/dev/controllers/command/terminal_command.rb +0 -22
  389. data/lib/dev_system/dev/controllers/command/terminal_command_test.rb +0 -12
  390. data/lib/dev_system/dev/controllers/command/version_command.rb +0 -7
  391. data/lib/dev_system/dev/controllers/command/version_command_test.rb +0 -12
  392. data/lib/dev_system/dev/controllers/command.rb +0 -17
  393. data/lib/dev_system/dev/controllers/generator.rb +0 -9
  394. data/lib/dev_system/dev/controllers/generator_dsl_main_part.rb +0 -52
  395. data/lib/dev_system/dev/controllers/generators/app_generator.rb +0 -146
  396. data/lib/dev_system/dev/controllers/generators/app_generator_test.rb +0 -12
  397. data/lib/dev_system/dev/controllers/generators/generator_generator/generator.rb.erb +0 -18
  398. data/lib/dev_system/dev/controllers/generators/generator_generator/generator_test.rb.erb +0 -12
  399. data/lib/dev_system/dev/controllers/generators/generator_generator/template.rb.erb +0 -9
  400. data/lib/dev_system/dev/controllers/generators/generator_generator/template_test.rb.erb +0 -12
  401. data/lib/dev_system/dev/controllers/generators/generator_generator.rb +0 -30
  402. data/lib/dev_system/dev/controllers/generators/generator_generator_test.rb +0 -12
  403. data/lib/dev_system/dev/controllers/generators/not_found_generator.rb +0 -27
  404. data/lib/dev_system/dev/controllers/generators/not_found_generator_test.rb +0 -12
  405. data/lib/dev_system/dev/controllers/shell/dir_shell.rb +0 -27
  406. data/lib/dev_system/dev/controllers/shell/text_shell.rb +0 -23
  407. data/lib/dev_system/dev/controllers/terminal/irb_terminal_test.rb +0 -12
  408. data/lib/dev_system/dev/controllers/terminal/pry_terminal.rb +0 -10
  409. data/lib/dev_system/dev/controllers/terminal/pry_terminal_test.rb +0 -12
  410. data/lib/dev_system/dev/controllers/terminal.rb +0 -17
  411. data/lib/dev_system/dev/controllers/terminal_test.rb +0 -12
  412. data/lib/dev_system/dev/dev_box.rb +0 -39
  413. data/lib/dev_system/dev/dev_box_test.rb +0 -17
  414. data/lib/dev_system/dev/panels/command_panel.rb +0 -28
  415. data/lib/dev_system/dev/panels/command_panel_test.rb +0 -21
  416. data/lib/dev_system/dev/panels/generator_panel.rb +0 -3
  417. data/lib/dev_system/dev/panels/generator_panel_test.rb +0 -12
  418. data/lib/dev_system/dev/panels/log_panel.rb +0 -13
  419. data/lib/dev_system/dev/panels/log_panel_test.rb +0 -16
  420. data/lib/dev_system/dev/panels/shell_panel.rb +0 -3
  421. data/lib/dev_system/dev/panels/shell_panel_test.rb +0 -12
  422. data/lib/dev_system/dev/panels/terminal_panel.rb +0 -3
  423. data/lib/dev_system/dev/panels/terminal_panel_test.rb +0 -12
  424. data/lib/happy_system/dev/happy_command.rb +0 -11
  425. data/lib/happy_system/happy/controllers/axo.rb +0 -7
  426. data/lib/happy_system/happy/happy_box.rb +0 -9
  427. data/lib/happy_system/happy/happy_box_test.rb +0 -16
  428. data/lib/happy_system/happy/panels/axo_panel.rb +0 -3
  429. data/lib/liza/base/box.rb +0 -85
  430. data/lib/liza/base/box_test.rb +0 -10
  431. data/lib/liza/base_parts/controller_renderer_part.rb +0 -140
  432. data/lib/liza/base_parts/controller_renderer_part_test.rb +0 -16
  433. data/lib/liza/meta/part_extension.rb +0 -16
  434. data/lib/liza/test_parts/test_tree_part.rb +0 -137
  435. data/lib/net_system/dev/net_command.rb +0 -22
  436. data/lib/net_system/net/net_box.rb +0 -15
  437. data/lib/web_system/dev/rack_command.rb +0 -35
  438. data/lib/web_system/dev/request_command.rb +0 -143
  439. data/lib/web_system/dev/web_command.rb +0 -9
  440. data/lib/web_system/web/panels/rack_panel.rb +0 -42
  441. data/lib/web_system/web/panels/request_panel.rb +0 -72
  442. data/lib/web_system/web/panels/request_panel_test.rb +0 -33
  443. data/lib/web_system/web/web_box.rb +0 -20
  444. /data/lib/dev_system/{dev/panels → sub/bench}/bench_panel.rb +0 -0
  445. /data/lib/dev_system/{dev/controllers/shell → sub/shell/shells}/bin_shell.rb +0 -0
  446. /data/lib/net_system/{net/controllers → sub/client}/client.rb +0 -0
  447. /data/lib/net_system/{net/panels → sub/client}/client_panel.rb +0 -0
  448. /data/lib/net_system/{net/controllers → sub/database}/database.rb +0 -0
  449. /data/lib/net_system/{net/panels → sub/database}/database_panel.rb +0 -0
  450. /data/lib/net_system/{net/controllers/database → sub/database/databases}/redis_db.rb +0 -0
  451. /data/lib/net_system/{net/controllers/database → sub/database/databases}/sqlite_db.rb +0 -0
  452. /data/lib/net_system/{net/controllers → sub/record}/record.rb +0 -0
  453. /data/lib/web_system/{web/controllers → sub/rack}/rack.rb +0 -0
  454. /data/lib/web_system/{web/controllers → sub/request}/request.rb +0 -0
  455. /data/lib/web_system/{web/controllers/request → sub/request/requests}/client_error_request.rb +0 -0
  456. /data/lib/web_system/{web/controllers/request → sub/request/requests}/not_found_request.rb +0 -0
  457. /data/lib/web_system/{web/controllers/request → sub/request/requests}/server_error_request.rb +0 -0
@@ -0,0 +1,182 @@
1
+ class LabSystem::KrokiRequest < WebSystem::SimpleRequest
2
+
3
+ def call_index
4
+ @kroki_clients = []
5
+
6
+ @kroki_clients << KrokiClient.new_plantuml(:ab, :svg)
7
+ @kroki_clients << KrokiClient.new_nomnoml(:ab, :svg)
8
+
9
+ @kroki_clients.map &:call
10
+ end
11
+
12
+ #
13
+
14
+ def call_plantuml
15
+ @kroki_clients = []
16
+
17
+ @kroki_clients << KrokiClient.new_plantuml(:ab, :svg)
18
+
19
+ @kroki_clients.map &:call
20
+ end
21
+
22
+ #
23
+
24
+ def call_nomnoml
25
+ @kroki_clients = []
26
+
27
+ @kroki_clients << KrokiClient.new_nomnoml(:ab, :svg)
28
+
29
+ @kroki_clients.map &:call
30
+ end
31
+
32
+ #
33
+
34
+ def call_plantuml_liza
35
+ @kroki_clients = []
36
+
37
+ Lizarb.loaders.map &:eager_load
38
+
39
+ @kroki_clients << LizaKrokiClient.new_plantuml(:liza_1, :svg) {
40
+ @units = Unit.subclasses.sort { _1.name <=> _2.name }.reverse
41
+ }
42
+ @kroki_clients << LizaKrokiClient.new_plantuml(:liza_1, :svg) {
43
+ @units = [Liza::System]
44
+ @systems_in_objects = [DevSystem, NetSystem, WebSystem]
45
+ }
46
+ @kroki_clients << LizaKrokiClient.new_plantuml(:liza_1, :svg) {
47
+ @units = [Liza::System]
48
+ @systems_in_objects = [HappySystem, LabSystem]
49
+ }
50
+ @kroki_clients << LizaKrokiClient.new_plantuml(:liza_1, :svg) {
51
+ @units = [Liza::System]
52
+ @systems_in_objects = App.systems.values
53
+ }
54
+ @kroki_clients << LizaKrokiClient.new_plantuml(:liza_1, :svg) {
55
+ @units = [Box]
56
+ @boxes = [DevBox]
57
+ @subs = []
58
+ @objects = []
59
+ @systems = (@boxes+@subs+@objects).map(&:system).uniq
60
+ }
61
+ @kroki_clients << LizaKrokiClient.new_plantuml(:liza_1, :svg) {
62
+ @units = [Box]
63
+ @boxes = [DevBox, NetBox, WebBox]
64
+ @subs = []
65
+ @objects = []
66
+ @systems = (@boxes+@subs+@objects).map(&:system).uniq
67
+ }
68
+ @kroki_clients << LizaKrokiClient.new_plantuml(:liza_1, :svg) {
69
+ @units = [Panel, Controller]
70
+ @subs = [Command, Shell]
71
+ @objects = []
72
+ @systems = (@subs+@objects).map(&:system).uniq
73
+ }
74
+ @kroki_clients << LizaKrokiClient.new_plantuml(:liza_1, :svg) {
75
+ @units = [Controller]
76
+ @subs = []
77
+ @objects = App.systems.values.map { _1.box.panels.values.map(&:division) }.flatten
78
+ @systems = (@subs+@objects).map(&:system).uniq
79
+ }
80
+
81
+ # NetSystem
82
+
83
+ @kroki_clients << LizaKrokiClient.new_plantuml(:liza_1, :svg) {
84
+ @units = [Controller]
85
+ @subs = []
86
+ @objects = [Command, Database, Client, DatabaseCommand, *Database.descendants, *Client.descendants]
87
+ @systems = (@subs+@objects).map(&:system).uniq
88
+ }
89
+
90
+ # WebSystem
91
+
92
+ @kroki_clients << LizaKrokiClient.new_plantuml(:liza_1, :svg) {
93
+ @units = [Controller]
94
+ @subs = [Command, WebSystem::Rack]
95
+ @objects = [RackCommand, MiddleRack, ServerRack, *MiddleRack.subclasses, *ServerRack.subclasses]
96
+ @systems = (@subs+@objects).map(&:system).uniq
97
+ }
98
+
99
+ @kroki_clients << LizaKrokiClient.new_plantuml(:liza_1, :svg) {
100
+ @units = [Controller]
101
+ @subs = []
102
+ @objects = [Command, Request, RequestCommand, *Request.descendants]
103
+ @systems = (@subs+@objects).map(&:system).uniq
104
+ }
105
+
106
+ @kroki_clients.map &:call
107
+ end
108
+
109
+ end
110
+
111
+ __END__
112
+
113
+ # view index.html.erb
114
+ <%= render :shared %>
115
+
116
+ # view plantuml.html.erb
117
+ <%= render :shared %>
118
+
119
+ # view plantuml_liza.html.erb
120
+ <%= render :shared %>
121
+
122
+ # view nomnoml.html.erb
123
+ <%= render :shared %>
124
+
125
+ # view shared.html.erb
126
+ <%= render :header %>
127
+
128
+ <style>
129
+ td {
130
+ border: 1px dashed black;
131
+ vertical-align: top;
132
+ }
133
+ td svg {
134
+ text-align: center;
135
+ }
136
+ td code {
137
+ text-align: left;
138
+ }
139
+ </style>
140
+
141
+ <h3>plantuml</h3>
142
+
143
+ <table>
144
+ <tr>
145
+ <td>
146
+ template
147
+ </td>
148
+ <td>
149
+ code
150
+ </td>
151
+ <td>
152
+ SVG
153
+ </td>
154
+ </tr>
155
+
156
+ <% @kroki_clients.each do |kroki| %>
157
+ <tr>
158
+ <td>
159
+ <%= kroki.action %>
160
+ </td>
161
+ <td style="min-width: 700px">
162
+ <code>
163
+ <%= kroki.code.gsub "\n", "<br/>" %>
164
+ </code>
165
+ </td>
166
+ <td>
167
+ <%= kroki.result %>
168
+ </td>
169
+ </tr>
170
+ <% end %>
171
+
172
+ </table>
173
+
174
+ # view header.html.erb
175
+
176
+ <h1>KrokiClient</h1>
177
+ <a href="/kroki">/kroki</a> |
178
+
179
+ <a href="/kroki/plantuml">/kroki/plantuml</a> |
180
+ <a href="/kroki/plantuml_liza">/kroki/plantuml_liza</a> |
181
+ <a href="/kroki/nomnoml">/kroki/nomnoml</a>
182
+ <hr/>
@@ -0,0 +1,11 @@
1
+ class LabSystem::KrokiRequestTest < WebSystem::SimpleRequestTest
2
+
3
+ test :subject_class do
4
+ assert_equality subject_class, LabSystem::KrokiRequest
5
+ end
6
+
7
+ test :settings do
8
+ assert_equality subject_class.log_level, 0
9
+ end
10
+
11
+ end
@@ -0,0 +1,60 @@
1
+ class LabSystem::DockerShell < DevSystem::Shell
2
+
3
+ #
4
+
5
+ def self.hello_world
6
+ KernelShell.call_backticks "docker run hello-world"
7
+
8
+ true
9
+ end
10
+
11
+ #
12
+
13
+ def self.hello_alpine
14
+ KernelShell.call_backticks "docker run alpine echo 'hello world'"
15
+
16
+ true
17
+ end
18
+
19
+ #
20
+
21
+ def self.version
22
+ output = KernelShell.call_backticks "docker version"
23
+ parse_version output
24
+ end
25
+
26
+ def self.parse_version output
27
+ h = {}
28
+ current_section = current_sub = nil
29
+
30
+ output.each_line do |line|
31
+ line = line.strip
32
+ next if line.empty?
33
+
34
+ if line.start_with?("Client:")
35
+
36
+ name = line.split(":", 2).last.strip
37
+ current_section = h["Client"] = {"Name" => name}
38
+ current_sub = current_section
39
+
40
+ elsif line.start_with?("Server:")
41
+ name = line.split(":", 2).last.strip
42
+ current_section = h["Server"] = {"Name" => name}
43
+
44
+ elsif current_section
45
+
46
+ if line.end_with?(":")
47
+ key = line.chomp(":")
48
+ current_sub = current_section[key] = {}
49
+ elsif line.include?(":")
50
+ key, value = line.split(":", 2).map(&:strip)
51
+ current_sub[key] = value
52
+ end
53
+
54
+ end
55
+ end
56
+
57
+ h
58
+ end
59
+
60
+ end
@@ -0,0 +1,61 @@
1
+ class LabSystem::DockerShellTest < DevSystem::ShellTest
2
+
3
+ test :subject_class do
4
+ assert_equality subject_class, LabSystem::DockerShell
5
+ end
6
+
7
+ test :settings do
8
+ assert_equality subject_class.log_level, 0
9
+ end
10
+
11
+ test :parse_version do
12
+ output = render :docker_version, format: :txt
13
+ h = subject_class.parse_version output
14
+
15
+ assert_equality h.keys, ["Client", "Server"]
16
+ # I mostly wanted to start a conversation about which version of docker we should be support.
17
+ assert_equality h.dig("Client", "Name"), "Docker Engine - Community"
18
+ assert_equality h.dig("Server", "Name"), "Docker Engine - Community"
19
+
20
+ assert_equality h["Client"].keys, ["Name", "Version", "API version", "Go version", "Git commit", "Built", "OS/Arch", "Context"]
21
+ assert_equality h["Server"].keys, ["Name", "Engine", "containerd", "runc", "docker-init"]
22
+
23
+ assert_equality h["Server"]["Engine"].keys, ["Version", "API version", "Go version", "Git commit", "Built", "OS/Arch", "Experimental"]
24
+ assert_equality h["Server"]["containerd"].keys, ["Version", "GitCommit"]
25
+ assert_equality h["Server"]["runc"].keys, ["Version", "GitCommit"]
26
+ assert_equality h["Server"]["docker-init"].keys, ["Version", "GitCommit"]
27
+ end
28
+
29
+ end
30
+
31
+ __END__
32
+
33
+ # view docker_version.txt.erb
34
+
35
+ Client: Docker Engine - Community
36
+ Version: 24.0.6
37
+ API version: 1.43
38
+ Go version: go1.20.7
39
+ Git commit: ed223bc
40
+ Built: Mon Sep 4 12:31:44 2023
41
+ OS/Arch: linux/amd64
42
+ Context: default
43
+
44
+ Server: Docker Engine - Community
45
+ Engine:
46
+ Version: 24.0.6
47
+ API version: 1.43 (minimum version 1.12)
48
+ Go version: go1.20.7
49
+ Git commit: 1a79695
50
+ Built: Mon Sep 4 12:31:44 2023
51
+ OS/Arch: linux/amd64
52
+ Experimental: false
53
+ containerd:
54
+ Version: 1.6.24
55
+ GitCommit: 61f9fd88f79f081d64d6fa3bb1a0dc71ec870523
56
+ runc:
57
+ Version: 1.1.9
58
+ GitCommit: v1.1.9-0-gccaecfc
59
+ docker-init:
60
+ Version: 0.19.0
61
+ GitCommit: de40ad0
@@ -0,0 +1,20 @@
1
+ class LabSystem::KrokiDockerShell < LabSystem::DockerShell
2
+
3
+ #
4
+
5
+ set :port, 9001
6
+
7
+ def self.url
8
+ "http://localhost:#{get :port}"
9
+ end
10
+
11
+ def self.start_blocking_server
12
+ log "You can visit #{url} for your kroki server"
13
+
14
+ port = get :port
15
+ KernelShell.call_backticks "docker run -p#{port}:8000 yuzutech/kroki"
16
+
17
+ true
18
+ end
19
+
20
+ end
@@ -0,0 +1,11 @@
1
+ class LabSystem::KrokiDockerShellTest < LabSystem::DockerShellTest
2
+
3
+ test :subject_class do
4
+ assert_equality subject_class, LabSystem::KrokiDockerShell
5
+ end
6
+
7
+ test :settings do
8
+ assert_equality subject_class.log_level, 0
9
+ end
10
+
11
+ end
data/lib/lab_system.rb ADDED
@@ -0,0 +1,8 @@
1
+ class LabSystem < Liza::System
2
+ class Error < Liza::Error; end
3
+
4
+ #
5
+
6
+ color :gray
7
+
8
+ end
data/lib/lerb.rb CHANGED
@@ -3,95 +3,141 @@
3
3
  # https://docs.ruby-lang.org/en/3.2/ERB.html
4
4
  require "erb"
5
5
 
6
+ $LERB_VERBOSE = ENV["LERB_VERBOSE"]
7
+
6
8
  class LERB < ERB
7
9
  class Error < StandardError; end
8
10
  class BuildError < Error; end
9
11
  class ExecutionError < Error; end
10
12
 
11
- # loaders
13
+ # output
12
14
 
13
- def self.load path_radical
14
- load_from_folder(path_radical) + load_from_file("#{path_radical}.rb")
15
+ def self.puts string=nil
16
+ super if $LERB_VERBOSE
15
17
  end
16
18
 
17
- def self.load_from_file path
18
- ret = []
19
-
20
- fname = path
21
- return ret unless File.exist? path
19
+ # loaders
22
20
 
23
- lines = File.readlines fname
21
+ DEFAULT_KEY = "inline.txt.erb"
24
22
 
25
- lineno = lines.index "__END__\n"
26
- return ret if lineno.nil?
23
+ def self.load path_radical
24
+ erbs = []
27
25
 
28
- content = lines[lineno+1..-1].join
29
- array = content.split(/^# (\w*).(\w*).(\w*)$/)
30
- # => ["", "a", "html", "erb", "\n<html>\n<a></a>\n</html>\n", "b", "html", "erb", "\n<html>\n<b></b>\n</html>"]
26
+ "#{path_radical}.rb".tap do |filename|
27
+ _load erbs, filename
28
+ end
31
29
 
32
- while (chunk = array.pop 4; chunk.size == 4)
33
- # => ["b", "html", "erb", "\n<html>\n<b></b>\n</html>"]
34
- # => ["a", "html", "erb", "\n<html>\n<a></a>\n</html>\n"]
35
- key = "#{chunk[0]}.#{chunk[1]}.#{chunk[2]}"
36
- content = chunk[3]
37
- ret.push new :file, key, content, fname, lineno
30
+ Dir.glob("#{path_radical}.*.erb").each do |filename|
31
+ _load erbs, filename
38
32
  end
39
33
 
40
- ret
41
- end
34
+ Dir.glob("#{path_radical}/*.*.erb").each do |filename|
35
+ _load erbs, filename
36
+ end
42
37
 
43
- def self.load_from_folder path
44
- ret = []
38
+ #
45
39
 
46
- lineno = 0
47
- fnames = Dir.glob "#{path}/*.*.erb"
48
- fnames.map do |fname|
49
- key = fname.split("/").last
50
- content = File.read fname
51
- ret.push new :folder, key, content, fname, lineno
40
+ puts "#{erbs.size} erbs".on_red
41
+ erbs.each do |h|
42
+ puts "key: #{h.key}".on_green
52
43
  end
53
44
 
54
- ret
45
+ erbs
55
46
  end
56
47
 
57
- # format
48
+ def self._load erbs, filename
49
+ is_erb = filename.end_with? ".erb"
50
+ is_ignoring_ruby = !is_erb
51
+ is_accepting_views = false
52
+
53
+ puts
54
+ puts "LERB filename: #{filename}".on_red
55
+
56
+ puts "LERB is_erb: #{is_erb}".on_red
57
+ puts "LERB is_ignoring_ruby: #{is_ignoring_ruby}".on_red
58
+ puts "LERB is_accepting_views: #{is_accepting_views}".on_red
59
+
60
+ current_lineno = 0
61
+ current_content = ""
62
+ current_key = is_erb ? filename.split("/").last : DEFAULT_KEY
63
+
64
+ if current_key
65
+ puts "LERB declare: #{current_key} | because not erb".green
66
+ end
58
67
 
59
- TAG_FORMATS = %w|xml html|
68
+ File.readlines(filename).each.with_index do |line, lineno|
69
+ is_line_end = line == "__END__\n"
70
+
71
+ # stop ignoring ruby lines if line is __END__
72
+ # move to next line if ignoring ruby lines
73
+
74
+ if is_ignoring_ruby
75
+ puts "LERB ignore: #{lineno}: #{line[0..-2]}".light_black
76
+ if is_line_end
77
+ is_ignoring_ruby = false
78
+ is_accepting_views = true
79
+ current_lineno = lineno + 1
80
+ puts "LERB declare: #{current_key} | current".green if current_key
81
+ end
82
+ next
83
+ end
84
+
85
+ if is_accepting_views && line[0..6] == "# view "
86
+ _load_into erbs, filename, current_lineno, current_key, current_content
87
+ current_key = line[7..-1].strip
88
+ current_lineno = lineno + 1
89
+ current_content = ""
90
+ puts "LERB declare: #{current_key} | #{lineno}: #{line[0..-2]}".green
91
+ else
92
+ current_content += line
93
+ puts "LERB keeping: #{lineno}: #{line[0..-2]}".bold.white
94
+ end
95
+
96
+ if is_line_end
97
+ puts "LERB warning: #{lineno}: #{line[0..-2]} found! No longer accepting views".light_yellow
98
+ is_accepting_views = false
99
+ end
100
+ end
60
101
 
61
- def tags?
62
- TAG_FORMATS.include? format
102
+ _load_into erbs, filename, current_lineno, current_key, current_content
103
+
104
+ erbs
63
105
  end
64
106
 
65
- # source
107
+ def self._load_into erbs, filename, lineno, key, content
108
+ return unless key
109
+ return unless key.end_with? "erb"
110
+ return if content.strip.empty?
66
111
 
67
- SOURCES = %i|file folder|
112
+ content += "\n" if content[-1] != "\n"
68
113
 
69
- def file?
70
- @source == :file
114
+ erbs.push new filename, lineno, key, content
71
115
  end
72
116
 
73
- def folder?
74
- @source == :folder
117
+ # format
118
+
119
+ TAG_FORMATS = %w|xml html|
120
+
121
+ def tags?
122
+ TAG_FORMATS.include? format
75
123
  end
76
124
 
77
125
  # constructor
78
126
 
79
127
  TRIM_MODE = "<>-"
80
128
 
81
- attr_reader :source, :key, :name, :format
82
-
83
- def initialize source, key, content, filename, lineno
84
- raise BuildError, "source :#{source} must be one of #{SOURCES}" unless SOURCES.include? source
129
+ attr_reader :key, :name, :format
85
130
 
131
+ def initialize filename, lineno, key, content
86
132
  segments = key.split("/").last.split(".")
87
133
  name, format = segments[0..1]
88
134
 
89
- # raise BuildError, "key '#{key}' must be formatted as <name>.<format>.erb" unless segments.count == 3
90
- # raise BuildError, "key '#{key}' must be formatted as <name>.<format>.erb" unless segments[2] == "erb"
91
- raise BuildError, "key '#{key}' has an invalid format '#{format}'" unless format.gsub(/[^a-z0-9]/, "") == format
135
+ if format.gsub(/[^a-z0-9]/, "") != format
136
+ raise BuildError, "key '#{key}' has an invalid format '#{format}'"
137
+ end
92
138
 
93
139
  super content, trim_mode: TRIM_MODE
94
- @source, @key, @name, @format, self.filename, self.lineno = source, key, name, format, filename, lineno
140
+ self.filename, self.lineno, @key, @name, @format = filename, lineno, key, name, format
95
141
  end
96
142
 
97
143
  # result
@@ -1,27 +1,26 @@
1
1
  class Liza::Controller < Liza::Unit
2
- part :controller_renderer
3
2
 
4
- inherited_explicitly_sets_system
3
+ part :controller_subsystem
5
4
 
6
- def self.on_connected box_klass, panel
7
- set :box, box_klass
8
- set :panel, panel
9
- end
5
+ def self.on_connected
6
+ token = self.last_namespace.snakecase.to_sym
7
+ panel = system.const("#{token}_panel").new name
10
8
 
11
- def self.box
12
- get :box
9
+ subsystem! system.box, panel
10
+ division!
13
11
  end
14
12
 
15
- def self.panel
16
- get :panel
17
- end
13
+ def self.inherited klass
14
+ super
18
15
 
19
- def box
20
- self.class.box
16
+ klass.on_connected if klass.superclass == Liza::Controller
21
17
  end
22
18
 
23
- def panel
24
- self.class.panel
19
+ # color
20
+
21
+ def self.color
22
+ return system.color if subsystem?
23
+ subsystem.color
25
24
  end
26
25
 
27
26
  end
@@ -3,8 +3,34 @@ class Liza::ControllerTest < Liza::UnitTest
3
3
  assert subject_class == Liza::Controller
4
4
  end
5
5
 
6
+ test_methods_defined do
7
+ on_self :box, \
8
+ :color,
9
+ :division!, :division?,
10
+ :inherited,
11
+ :on_connected,
12
+ :panel, :plural,
13
+ :puts,
14
+ :singular,
15
+ :subsystem, :subsystem!, :subsystem?,
16
+ :token
17
+ on_instance :box, :panel
18
+ end
19
+
20
+ test :erbs_defined do
21
+ erbs_defined = subject_class.erbs_defined.map(&:key)
22
+ expected = []
23
+ assert_equality erbs_defined, expected
24
+ end
25
+
26
+ test :erbs_available do
27
+ erbs_available = subject_class.erbs_available.map(&:key)
28
+ expected = []
29
+ assert_equality erbs_available, expected
30
+ end
31
+
6
32
  test :settings do
7
- assert subject_class.log_level == :normal
8
- assert subject_class.log_color == :white
33
+ assert_equality subject_class.log_level, 0
9
34
  end
35
+
10
36
  end