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,139 @@
1
+ class Liza::UnitLoggingPart < Liza::Part
2
+
3
+ insertion do
4
+
5
+ # LOG
6
+
7
+ def self.log_levels()=App::LOG_LEVELS
8
+ def log_levels()= App::LOG_LEVELS
9
+
10
+ def self.log log_level = App::DEFAULT_LOG_LEVEL, object, kaller: caller
11
+ log_level = log_levels[log_level] if log_level.is_a? Symbol
12
+ raise "invalid log_level `#{log_level}`" unless log_levels.values.include? log_level
13
+ return unless log_level? log_level
14
+
15
+ env = {}
16
+ env[:type] = :log
17
+ env[:unit] = self
18
+ env[:unit_class] = self
19
+ env[:message_log_level] = log_level
20
+ env[:unit_log_level] = self.log_level
21
+ env[:caller] = kaller
22
+ env[:object] = object
23
+
24
+ DevBox[:log].call env
25
+ end
26
+
27
+ def log log_level = App::DEFAULT_LOG_LEVEL, object, kaller: caller
28
+ log_level = log_levels[log_level] if log_level.is_a? Symbol
29
+ raise "invalid log_level `#{log_level}`" unless log_levels.values.include? log_level
30
+ return unless log_level? log_level
31
+
32
+ env = {}
33
+ env[:type] = :log
34
+ env[:unit] = self
35
+ env[:unit_class] = self.class
36
+ env[:message_log_level] = log_level
37
+ env[:unit_log_level] = self.log_level
38
+ env[:caller] = kaller
39
+ env[:object] = object
40
+
41
+ DevBox[:log].call env
42
+ end
43
+
44
+ def self.stick *args
45
+ StickLog.new *args
46
+ end
47
+
48
+ def stick *args
49
+ StickLog.new *args
50
+ end
51
+
52
+ def self.sticks *args
53
+ StickLog.bundle *args
54
+ end
55
+
56
+ def sticks *args
57
+ StickLog.bundle *args
58
+ end
59
+
60
+ #
61
+
62
+ def self.log_level new_value = nil
63
+ if new_value
64
+ new_value = log_levels[new_value] if new_value.is_a? Symbol
65
+ raise "invalid log_level `#{new_value}`" unless log_levels.values.include? new_value
66
+ set :log_level, new_value
67
+ else
68
+ get :log_level
69
+ end
70
+ end
71
+
72
+ def log_level new_value = nil
73
+ if new_value
74
+ new_value = log_levels[new_value] if new_value.is_a? Symbol
75
+ raise "invalid log_level `#{new_value}`" unless log_levels.values.include? new_value
76
+ set :log_level, new_value
77
+ else
78
+ get :log_level
79
+ end
80
+ end
81
+
82
+ #
83
+
84
+ def self.log_hash log_level = :normal, hash, prefix: "", kaller: caller[1..-1]
85
+ prefix = prefix.to_s
86
+ size = hash.keys.map(&:to_s).map(&:size).max
87
+
88
+ hash.each do |k,v|
89
+ log log_level, "#{prefix}#{k.to_s.ljust size} = #{v.to_s.inspect}", kaller: kaller
90
+ end
91
+ end
92
+
93
+ def log_hash log_level = :normal, hash, prefix: "", kaller: caller[1..-1]
94
+ prefix = prefix.to_s
95
+ size = hash.keys.map(&:to_s).map(&:size).max
96
+
97
+ hash.each do |k,v|
98
+ log log_level, "#{prefix}#{k.to_s.ljust size} = #{v.to_s.inspect}", kaller: kaller
99
+ end
100
+ end
101
+
102
+ #
103
+
104
+ def self.log_array log_level = :normal, array, prefix: "", kaller: caller[1..-1]
105
+ prefix = prefix.to_s
106
+ size = array.size.to_s.size+1
107
+
108
+ array.each.with_index do |v, i|
109
+ log log_level, "#{prefix}#{i.to_s.ljust size} = #{v.inspect}", kaller: kaller
110
+ end
111
+ end
112
+
113
+ def log_array log_level = :normal, array, prefix: "", kaller: caller[1..-1]
114
+ prefix = prefix.to_s
115
+ size = array.size.to_s.size+1
116
+
117
+ array.each.with_index do |v, i|
118
+ log log_level, "#{prefix}#{i.to_s.ljust size} = #{v.inspect}", kaller: kaller
119
+ end
120
+ end
121
+
122
+ #
123
+
124
+ def self.log?(log_level = App::DEFAULT_LOG_LEVEL)= log_level? log_level
125
+ def log?(...)= log_level? log_level
126
+
127
+ def self.log_level? log_level = App::DEFAULT_LOG_LEVEL
128
+ log_level = log_levels[log_level] if log_level.is_a? Symbol
129
+ log_level >= self.log_level
130
+ end
131
+
132
+ def log_level? log_level = App::DEFAULT_LOG_LEVEL
133
+ log_level = log_levels[log_level] if log_level.is_a? Symbol
134
+ log_level >= self.log_level
135
+ end
136
+
137
+ end
138
+
139
+ end
@@ -0,0 +1,3 @@
1
+ class Liza::UnitLoggingPartTest < Liza::UnitTest
2
+
3
+ end
@@ -0,0 +1,35 @@
1
+ class Liza::UnitMethodsPart < Liza::Part
2
+
3
+ insertion do
4
+ def self.methods_defined
5
+ a = methods - superclass.methods
6
+ a.reject! { _1.to_s[0] == "_" }
7
+ a.sort!
8
+ end
9
+
10
+ def self.instance_methods_defined
11
+ a = instance_methods - superclass.instance_methods
12
+ a.reject! { _1.to_s[0] == "_" }
13
+ a.sort!
14
+ end
15
+
16
+ def self.methods_for_rendering
17
+ methods_defined.select { _1[0..5] == "render" || _1[0..2] == "erb" }.sort
18
+ end
19
+
20
+ def self.instance_methods_for_rendering
21
+ instance_methods_defined.select { _1[0..5] == "render" || _1[0..2] == "erb" }.sort
22
+ end
23
+
24
+ def self.methods_for_logging
25
+ array = methods_defined.select { _1[0..2] == "log" }.sort
26
+ [*array, :stick, :sticks]
27
+ end
28
+
29
+ def self.instance_methods_for_logging
30
+ array = instance_methods_defined.select { _1[0..2] == "log" }.sort
31
+ [*array, :stick, :sticks]
32
+ end
33
+ end
34
+
35
+ end
@@ -0,0 +1,3 @@
1
+ class Liza::UnitMethodsPartTest < Liza::UnitTest
2
+
3
+ end
@@ -1,7 +1,7 @@
1
1
  class Liza::UnitProcedurePart < Liza::Part
2
2
 
3
3
  insertion do
4
- def self.procedure _label, &block
4
+ def self.procedure _label = nil, &block
5
5
  catch :procedure, &block
6
6
  end
7
7
 
@@ -10,7 +10,7 @@ class Liza::UnitProcedurePart < Liza::Part
10
10
  throw :procedure, val
11
11
  end
12
12
 
13
- def procedure(_label, &block)= self.class.procedure _label, &block
13
+ def procedure(_label = nil, &block)= self.class.procedure _label, &block
14
14
  def proceed(...)= self.class.proceed(...)
15
15
  end
16
16
 
@@ -7,7 +7,6 @@ class Liza::UnitProcedurePartTest < Liza::UnitTest
7
7
  procedure "creates a new scope" do
8
8
  @a = 1
9
9
  b = 2
10
- c = 3
11
10
  assert true
12
11
 
13
12
  proceed if true
@@ -21,7 +20,6 @@ class Liza::UnitProcedurePartTest < Liza::UnitTest
21
20
  procedure "asserts old scope is not accessible" do
22
21
  assert instance_variables.include? :@a
23
22
  assert local_variables.include? :b
24
- refute local_variables.include? :c
25
23
 
26
24
  assert @a == 1
27
25
  assert b == 2
@@ -32,13 +30,15 @@ class Liza::UnitProcedurePartTest < Liza::UnitTest
32
30
 
33
31
  assert x == 100
34
32
 
35
- y =
36
- procedure "asserts proceed calls can be lazy" do
37
- proceed { "slow operation"; 200 } if true
38
- raise "did not get here"
39
- end
40
-
41
- assert y == 200
33
+ y = procedure "asserts proceed calls can be lazy" do
34
+ proceed do
35
+ puts "slow operation"
36
+ 200
37
+ end if true
38
+ raise "did not get here"
39
+ end
40
+
41
+ assert y == 200
42
42
  end
43
43
 
44
44
  test :procedure_rescue_and_ensure do
@@ -0,0 +1,171 @@
1
+ class Liza::UnitRendererPart < Liza::Part
2
+
3
+ RENDER_STACK_IS_EMPTY_MESSAGE = <<~STRING
4
+ You called render without ERB keys,
5
+ but the render stack is empty.
6
+ Did you forget to add ERB keys?
7
+ STRING
8
+
9
+ RENDER_STACK_IS_FULL_MESSAGE = <<~STRING
10
+ You called render with too many ERB keys.
11
+ Did you accidentally fall into an infinite loop?
12
+ STRING
13
+
14
+ insertion do
15
+ def render! *keys, format: nil
16
+ render *keys, format: format, allow_missing: false
17
+ end
18
+
19
+ def render *keys, format: nil, allow_missing: true
20
+ format = @render_format ||= @format if format.nil?
21
+ raise "@render_format or @format must be set, or format keyword-argument must be given" if format.nil?
22
+ @render_format = format = format.to_sym
23
+
24
+ log_rendering = log_level? :low
25
+
26
+ if keys.any?
27
+ log_render_in keys, kaller: caller if log_rendering
28
+
29
+ erbs = self.class.erbs_for format, keys, allow_missing: allow_missing
30
+ erbs.to_a.reverse.each do |key, erb|
31
+ if true
32
+ t = Time.now
33
+ s = erb.result binding, self
34
+ log_render_out "#{erb.name}.#{erb.format}", s.length, t.diff, kaller: caller if log_rendering
35
+ end
36
+
37
+ if DevBox.convert? erb.format
38
+ t = Time.now
39
+ s = DevBox.convert erb.format, s
40
+ log_render_convert "#{erb.name}.#{format}", s.length, t.diff, kaller: caller if log_rendering
41
+ end
42
+
43
+ render_stack.push s
44
+
45
+ raise RenderStackIsFull RENDER_STACK_IS_FULL_MESSAGE, caller if render_stack.size > 10
46
+ end
47
+
48
+ render_stack.pop
49
+ elsif render_stack.any?
50
+ render_stack.pop
51
+ else
52
+ raise RenderStackIsEmpty, RENDER_STACK_IS_EMPTY_MESSAGE, caller
53
+ end
54
+ end
55
+
56
+ def render_stack
57
+ @render_stack ||= []
58
+ end
59
+
60
+ def log_render_in keys, kaller:
61
+ if render_stack.any?
62
+ log "render → #{keys.join " "}", kaller: kaller
63
+ else
64
+ log "render #{"→ " * keys.size}#{keys.join " "}", kaller: kaller
65
+ end
66
+ end
67
+
68
+ def log_render_out key, length, t, kaller:
69
+ if render_stack.any?
70
+ log "render #{"← #{key}".ljust_blanks 25} #{length.to_s.rjust_blanks 4} characters in #{t}s", kaller: kaller
71
+ else
72
+ log "render #{"← #{key}".ljust_blanks 25} #{length.to_s.rjust_blanks 4} characters in #{t}s", kaller: kaller
73
+ end
74
+ end
75
+
76
+ def log_render_convert key, length, t, kaller:
77
+ log "convert #{"#{key}".ljust_blanks 23} #{length.to_s.rjust_blanks 4} characters in #{t}s", kaller: kaller
78
+ end
79
+
80
+ # class level methods
81
+
82
+ def self.erbs_defined
83
+ @erbs_defined ||= LERB.load(self.source_location_radical)
84
+ end
85
+
86
+ def self.erbs_available ref = Liza::Unit
87
+ @erbs_available ||= begin
88
+ h = {}
89
+
90
+ ancestors.take_while do |ancestor|
91
+ ancestor != ref
92
+ end.reverse.each do |ancestor|
93
+ ancestor.erbs_defined.each do |erb|
94
+ h[erb.key] = erb
95
+ end
96
+ end
97
+
98
+ h.values
99
+ end
100
+ end
101
+
102
+ def self.renderable_names
103
+ erbs_available.map(&:name).uniq
104
+ end
105
+
106
+ def self.renderable_formats_for name_string
107
+ erbs_available.select { _1.name == name_string }
108
+ end
109
+
110
+ def self.erbs_for format, names, allow_missing:
111
+ @erbs_for ||= {}
112
+ k = "#{format}-#{names.join("-")}"
113
+ @erbs_for[k] ||= _erbs_for format, names, allow_missing:
114
+ end
115
+
116
+ def self._erbs_for format, names, allow_missing:
117
+ ret = {}
118
+
119
+ log_erb = log_level? :lower
120
+
121
+ converters = DevBox.converters_to[format] || []
122
+ converters_from = converters.map { _1[:from] }
123
+ format_with_converters_from = [format, *converters_from]
124
+ log "names #{names.join(" ").green} | formats #{format_with_converters_from.join(" ").green}" if log_erb
125
+
126
+ names.each do |name|
127
+ name_string = name.to_s
128
+ log " #{name_string}#{".*.erb # filtering name "} #{renderable_names.join(" ")}".light_black if log_erb
129
+
130
+ name_candidates = renderable_formats_for name_string
131
+ if name_candidates.none?
132
+
133
+ if allow_missing
134
+ log " #{name_string}.#{format}.erb not found, but allow_missing: true".light_yellow if log_erb
135
+ found = Liza::Unit.erbs_defined.first
136
+ else
137
+ log " #{name}.#{format}.erb not found, and allow_missing: false".red
138
+ raise RendererNotFound, "ERB #{name}.#{format}.erb not found"
139
+ end
140
+
141
+ else
142
+
143
+ log " #{name_string}#{".*.erb # filtering format "}#{name_candidates.map(&:format).join(" ")}".light_black if log_erb
144
+
145
+ found = name_candidates.find do |erb|
146
+ erb_format_sym = erb.format.to_sym
147
+ format_with_converters_from.include? erb_format_sym
148
+ end
149
+
150
+ if found
151
+ log " #{found.key} found".green if log_erb
152
+ else
153
+ if allow_missing
154
+ log " #{name}.#{format}.erb not found, but allow_missing: true".light_yellow if log_erb
155
+ found = Liza::Unit.erbs_defined.first
156
+ else
157
+ log " #{name}.#{format}.erb not found, and allow_missing: false".red
158
+ raise RendererNotFound, "ERB #{name}.#{format}.erb not found"
159
+ end
160
+ end
161
+
162
+ end
163
+
164
+ ret[name] = found
165
+ end
166
+
167
+ ret
168
+ end
169
+ end
170
+
171
+ end
@@ -0,0 +1,15 @@
1
+ class Liza::UnitRendererPartTest < Liza::UnitTest
2
+
3
+ test :erbs_defined do
4
+ erbs_defined = Unit.erbs_defined.map(&:key)
5
+ expected = ["render.txt.erb"]
6
+ assert_equality erbs_defined, expected
7
+ end
8
+
9
+ test :erbs_available do
10
+ erbs_available = Unit.erbs_available.map(&:key)
11
+ expected = []
12
+ assert_equality erbs_available, expected
13
+ end
14
+
15
+ end
@@ -0,0 +1,84 @@
1
+ class Liza::UnitSettingsPart < Liza::Part
2
+
3
+ insertion do
4
+ def self.methods_for_settings
5
+ [:add, :fetch, :get, :set, :settings].sort
6
+ end
7
+
8
+ def self.instance_methods_for_settings
9
+ [:add, :fetch, :get, :set, :settings].sort
10
+ end
11
+
12
+ def self.settings
13
+ @settings ||= {}
14
+ end
15
+
16
+ def self.get key
17
+ return settings[key] if settings.has_key? key
18
+
19
+ found = nil
20
+
21
+ for klass in ancestors
22
+ break unless klass.respond_to? :settings
23
+
24
+ if klass.settings.has_key? key
25
+ found = klass.settings[key]
26
+
27
+ break
28
+ end
29
+ end
30
+
31
+ found = settings[key] = found.dup if found.is_a? Enumerable
32
+
33
+ found
34
+ end
35
+
36
+ def self.set key, value
37
+ settings[key] = value
38
+ value
39
+ end
40
+
41
+ def self.add list, key = nil, value
42
+ if key
43
+ fetch(list) { Hash.new }[key] = value
44
+ else
45
+ fetch(list) { Set.new } << value
46
+ end
47
+ end
48
+
49
+ def self.fetch key, &block
50
+ x = get key
51
+ x ||= set key, instance_eval(&block)
52
+ x
53
+ end
54
+
55
+ def settings
56
+ @settings ||= {}
57
+ end
58
+
59
+ def get key
60
+ return settings[key] if settings.has_key? key
61
+
62
+ self.class.get key
63
+ end
64
+
65
+ def set key, value
66
+ settings[key] = value
67
+ end
68
+
69
+ def add list, key = nil, value
70
+ if key
71
+ fetch(list) { Hash.new }[key] = value
72
+ else
73
+ fetch(list) { Set.new } << value
74
+ end
75
+ end
76
+
77
+ def fetch key, &block
78
+ x = get key
79
+ x ||= set key, eval(&block)
80
+ x
81
+ end
82
+ end
83
+
84
+ end
@@ -0,0 +1,3 @@
1
+ class Liza::UnitSettingsPartTest < Liza::UnitTest
2
+
3
+ end
@@ -3,13 +3,122 @@ class Liza::UnitTest < Liza::Test
3
3
  assert subject_class == Liza::Unit
4
4
  end
5
5
 
6
+ #
7
+
8
+ def self.test_methods_defined(&block)
9
+ helper = TestMethodsDefinedHelper.new
10
+ helper.instance_eval(&block)
11
+
12
+ test :subject_class, :methods_defined do
13
+ a = subject_class.methods_defined
14
+ b = helper.methods
15
+ assert_equality a, b, kaller: helper.methods_caller
16
+ end
17
+
18
+ test :subject_class, :instance_methods_defined do
19
+ a = subject_class.instance_methods_defined
20
+ b = helper.instance_methods
21
+ assert_equality a, b, kaller: helper.instance_methods_caller
22
+ end
23
+ end
24
+
25
+ class TestMethodsDefinedHelper
26
+ attr_reader :methods, :methods_caller
27
+ attr_reader :instance_methods, :instance_methods_caller
28
+
29
+ def initialize
30
+ @methods, @instance_methods = [], []
31
+ @methods_caller, @instance_methods_caller = caller, caller
32
+ end
33
+
34
+ def on_self(*args)
35
+ @methods = args
36
+ @methods_caller = caller
37
+ end
38
+
39
+ def on_instance(*args)
40
+ @instance_methods = args
41
+ @instance_methods_caller = caller
42
+ end
43
+ end
44
+
45
+ #
46
+
47
+ test :subject_class, :methods_defined do
48
+ a = \
49
+ subject_class.methods_defined -
50
+ subject_class.methods_for_settings -
51
+ subject_class.methods_for_logging -
52
+ subject_class.methods_for_rendering
53
+ b = [
54
+ :descendants_select,
55
+ :division,
56
+ :instance_methods_defined, :instance_methods_for_logging, :instance_methods_for_rendering, :instance_methods_for_settings,
57
+ :methods_defined, :methods_for_logging, :methods_for_rendering, :methods_for_settings,
58
+ :namespace,
59
+ :part,
60
+ :procedure, :proceed,
61
+ :reload!,
62
+ :subclasses_select, :system, :system?,
63
+ :test_class
64
+ ]
65
+ assert_equality a, b
66
+ end
67
+
68
+ test :subject_class, :instance_methods_defined do
69
+ a = \
70
+ subject_class.instance_methods_defined -
71
+ subject_class.instance_methods_for_settings -
72
+ subject_class.instance_methods_for_logging -
73
+ subject_class.instance_methods_for_rendering
74
+ b = [:procedure, :proceed, :reload!, :system]
75
+ assert_equality a, b
76
+ end
77
+
78
+ test :subject_class, :methods_for_settings do
79
+ a = subject_class.methods_for_settings
80
+ b = [:add, :fetch, :get, :set, :settings]
81
+ assert_equality a, b
82
+ end
83
+
84
+ test :subject_class, :instance_methods_for_settings do
85
+ a = subject_class.instance_methods_for_settings
86
+ b = [:add, :fetch, :get, :set, :settings]
87
+ assert_equality a, b
88
+ end
89
+
90
+ test :subject_class, :methods_for_rendering do
91
+ a = subject_class.methods_for_rendering
92
+ b = [:erbs_available, :erbs_defined, :erbs_for, :renderable_formats_for, :renderable_names]
93
+ assert_equality a, b
94
+ end
95
+
96
+ test :subject_class, :instance_methods_for_rendering do
97
+ a = subject_class.instance_methods_for_rendering
98
+ b = [:render, :render!, :render_stack]
99
+ assert_equality a, b
100
+ end
101
+
102
+ test :subject_class, :methods_for_logging do
103
+ a = subject_class.methods_for_logging
104
+ b = [:log, :log?, :log_array, :log_hash, :log_level, :log_level?, :log_levels, :stick, :sticks]
105
+ assert_equality a, b
106
+ end
107
+
108
+ test :subject_class, :instance_methods_for_logging do
109
+ a = subject_class.instance_methods_for_logging
110
+ b = [:log, :log?, :log_array, :log_hash, :log_level, :log_level?, :log_levels, :log_render_convert, :log_render_in, :log_render_out, :stick, :sticks]
111
+ assert_equality a, b
112
+ end
113
+
6
114
  test :settings do
7
- assert subject_class.get(:log_level) == :normal
8
- assert subject_class.get(:log_color) == :white
9
- assert subject_class.log_level == :normal
10
- assert subject_class.log_color == :white
115
+ assert_equality subject_class.get(:log_level), 0
116
+ assert_equality subject_class.log_level, 0
11
117
 
12
- assert subject_class.settings == {log_level: :normal, log_color: :white}
118
+ assert_equality subject_class.settings, {
119
+ log_level: 0,
120
+ division: Liza::Controller,
121
+ }
13
122
  end
14
123
 
15
124
  test :settings_inheritance do
data/lib/liza.rb CHANGED
@@ -9,11 +9,15 @@ module Liza
9
9
  module_function
10
10
 
11
11
  def log s
12
- puts s.bold
12
+ puts s
13
13
  end
14
14
 
15
15
  #
16
16
 
17
+ def [] name
18
+ const name
19
+ end
20
+
17
21
  # Checks Object, each system, then Liza for Liza::Unit classes
18
22
  def const name
19
23
  name = name.to_s.camelize.to_sym
@@ -29,7 +33,12 @@ module Liza
29
33
 
30
34
  nil
31
35
  rescue NameError
32
- raise ConstNotFound, name
36
+ log "Liza const #{name} not found!" if $VERBOSE
37
+ if Lizarb.ruby_supports_raise_cause?
38
+ raise ConstNotFound, name, cause: nil
39
+ else
40
+ raise ConstNotFound, name, []
41
+ end
33
42
  end
34
43
 
35
44
  # Checks each system, then Liza for Liza::Unit classes
@@ -1,12 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Class
4
- public :eval
5
4
 
6
5
  def descendants
7
6
  ObjectSpace.each_object(Class).select { |klass| klass < self }
8
7
  end
9
8
 
9
+ def and_descendants
10
+ ObjectSpace.each_object(Class).select { |klass| klass <= self }
11
+ end
12
+
13
+ def ancestors_until klass
14
+ ancestors.take_while { _1 <= klass }
15
+ end
16
+
10
17
  def first_namespace
11
18
  name.rpartition('::')[0]
12
19
  end
@@ -14,4 +21,5 @@ class Class
14
21
  def last_namespace
15
22
  name.rpartition('::')[-1]
16
23
  end
24
+
17
25
  end