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,155 @@
1
+ class DevSystem::NotFoundGenerator < DevSystem::SimpleGenerator
2
+
3
+ #
4
+
5
+ def call_default
6
+ h3 "Liza is a light application framework written in Ruby 3.3 ❤", color: DevSystem.color
7
+ h5 "We're optimizing for happiness. Come join us!", color: ColorShell.colors.keys.sample
8
+ puts
9
+
10
+ if App.global?
11
+ print_global
12
+ else
13
+ print_systems
14
+ print_app
15
+ end
16
+ end
17
+
18
+ # color helpers
19
+
20
+ def color klass
21
+ return klass unless klass < Liza::Unit
22
+
23
+ namespace, _sep, classname = klass.to_s.rpartition('::')
24
+
25
+ if namespace.empty?
26
+ return stick classname, Liza.const(classname).system.color
27
+ end
28
+
29
+ "#{
30
+ stick namespace, Liza.const(namespace).system.color
31
+ }::#{
32
+ stick classname, Liza.const(classname).color
33
+ }"
34
+ end
35
+
36
+ # print helpers
37
+
38
+ def print_class klass, description: nil
39
+ loc = klass.to_s
40
+
41
+ sidebar_length = 50
42
+ klass.get_generator_signatures.each do |signature|
43
+ signature.name =
44
+ signature.name.empty? \
45
+ ? klass.token.to_s
46
+ : "#{klass.token}:#{signature.name}"
47
+ #
48
+ end.sort_by(&:name).map do |signature|
49
+ puts [
50
+ "liza generate #{signature.name}".ljust(sidebar_length),
51
+ (description or signature.description)
52
+ ].join ""
53
+ end
54
+ end
55
+
56
+ #
57
+
58
+ def print_systems
59
+ h1 "SYSTEMS"
60
+ AppShell.consts[:systems].each do |system_name, tree_system|
61
+ system = tree_system["system"][0]
62
+
63
+ h4 system
64
+ tree_system["controllers"].each do |family, klasses|
65
+ klasses = tree_system["controllers"][family].to_a.select { _1 < Generator }
66
+ next if klasses.empty?
67
+
68
+ h5 "lib/#{system_name}_system/#{family.plural}/", color: system.color
69
+ klasses.each { print_class _1 }
70
+ end
71
+
72
+ print_system_sub system, system_name, tree_system
73
+ end
74
+ puts
75
+ end
76
+
77
+ def print_system_sub system, system_name, tree_system
78
+ tree_system["subsystems"].each do |subsystem, tree_subsystem|
79
+ klasses = tree_subsystem["controllers"].values.flatten.select { _1 < Generator }
80
+ next if klasses.empty?
81
+
82
+ tree_subsystem["controllers"].each do |controller_class, klasses|
83
+ klasses = klasses.select { _1 < Generator }
84
+ klasses = klasses.reject { _1 == NewGenerator }
85
+ next if klasses.empty?
86
+
87
+ h5 "lib/#{system_name}_system/sub/#{subsystem.singular}/#{controller_class.plural}/", color: system.color
88
+ klasses.each { print_class _1 }
89
+ end
90
+ end
91
+ end
92
+
93
+ def print_app
94
+ h1 "TEAM CODE AT app/"
95
+
96
+ system_name = "dev"
97
+ tree_system = AppShell.consts[:app]["dev"]
98
+
99
+ system = Liza.const "#{system_name}_system"
100
+ tree_system["controllers"].each do |family, structure|
101
+ structure.each do |division, klasses|
102
+ klasses = klasses.select { _1 < Generator }
103
+ if klasses.any?
104
+ h5 "app/#{system_name}/#{division.plural}/", color: system.color
105
+ klasses.each { print_class _1 }
106
+ end
107
+ end
108
+ end
109
+ end
110
+
111
+ def print_global
112
+ klasses = {
113
+ # GemfileGenerator => "# no description",
114
+ # EnvGenerator => "# no description",
115
+ }
116
+
117
+ klasses.each { print_class _1, description: _2 }
118
+
119
+ 5.times { puts }
120
+ end
121
+
122
+ # typography helpers
123
+
124
+ def h1 text
125
+ puts stick " #{ text } ".center(80, "="), :b
126
+ end
127
+
128
+ def h2 text, color: :white
129
+ puts stick " #{ text } ".center(80, "-"), :b, color
130
+ end
131
+
132
+ def h3 text, color: :white
133
+ puts
134
+ puts stick " #{ text } ".center(80, " "), :b, color
135
+ end
136
+
137
+ def h4 system
138
+ puts
139
+ s = system.to_s
140
+ s1 = s
141
+ s1 = "#{ color(system) }" if system < Liza::Unit
142
+ color = system.color rescue :white
143
+ t = s.rjust(80, " ")
144
+ t = "#{ stick t, :b, color }"
145
+ t = t.gsub(s, s1)
146
+ puts t
147
+ end
148
+
149
+ def h5 text, color: :white
150
+ puts
151
+ puts stick text.ljust(80, " "), color
152
+ puts
153
+ end
154
+
155
+ end
@@ -0,0 +1,11 @@
1
+ class DevSystem::NotFoundGeneratorTest < DevSystem::SimpleGeneratorTest
2
+
3
+ test :subject_class do
4
+ assert subject_class == DevSystem::NotFoundGenerator
5
+ end
6
+
7
+ test :settings do
8
+ assert_equality subject_class.log_level, 0
9
+ end
10
+
11
+ end
@@ -0,0 +1,257 @@
1
+ class DevSystem::SimpleGenerator < DevSystem::BaseGenerator
2
+
3
+ #
4
+
5
+ def inform
6
+ log :highest, "informing #{changes.count} changes"
7
+
8
+ changes.each do |change|
9
+ puts_line
10
+
11
+ action = "updating"
12
+ action = "creating" if change.old_lines.empty?
13
+ # action = "deleting" if change.new_lines.empty? # not implemented
14
+
15
+ diff = {
16
+ "+": (change.new_lines - change.old_lines).count,
17
+ "-": (change.old_lines - change.new_lines).count,
18
+ }
19
+
20
+ bit = diff.map { "#{_1}#{_2}" }.join(" ")
21
+ relative = Pathname(change.path).relative_path_from(App.root)
22
+ string = "#{action.ljust 8} | #{"#{bit}".rjust 8} lines | #{relative}"
23
+ log :highest, string
24
+
25
+ if log_level? :high
26
+ puts relative
27
+ LineDiffShell.log_diff(change.old_lines, change.new_lines) if diff.values.sum.positive?
28
+ end
29
+ end
30
+ end
31
+
32
+ #
33
+
34
+ def save
35
+ puts_line
36
+ diff = {
37
+ "+": changes.map { _1.new_lines.count }.sum,
38
+ "-": changes.map { _1.old_lines.count }.sum,
39
+ }
40
+ log "saving #{changes.count} files changed: #{diff[:"+"]} insertions(+), #{diff[:"-"]} deletions(-)"
41
+
42
+ if env[:args].include? "+confirm"
43
+ answers = changes
44
+ else
45
+ choices = changes.map { |i| [i.relative_path.to_s, i] }.to_h
46
+ answers = box.pick_many "Approve all changes?", choices
47
+ end
48
+
49
+ #
50
+
51
+ puts_line
52
+ diff = {
53
+ "+": answers.map { _1.new_lines.count }.sum,
54
+ "-": answers.map { _1.old_lines.count }.sum,
55
+ }
56
+ log "saving #{answers.count} files changed: #{diff[:"+"]} insertions(+), #{diff[:"-"]} deletions(-)"
57
+
58
+ answers.each do |change|
59
+ if change.old_lines == change.new_lines
60
+ log "skipping #{change.path}"
61
+ else
62
+ log "writing #{change.path}"
63
+ TextShell.write change.path, change.new_lines.join(""), log_level: :lower
64
+ end
65
+ end
66
+ end
67
+
68
+ # changes
69
+
70
+ def changes
71
+ @changes ||= []
72
+ end
73
+
74
+ def last_change
75
+ @last_change
76
+ end
77
+
78
+ def add_change change
79
+ log :lower, "#{change.class}"
80
+ @last_change = change
81
+ changes << change
82
+ self
83
+ end
84
+
85
+ # create_file
86
+
87
+ def create_file name, template, format
88
+ path = App.root.join name
89
+ file = TextFileShell.new path
90
+
91
+ new_lines = render! template, format: format
92
+ file.new_lines = new_lines.strip.split("\n").map { "#{_1}\n" }
93
+
94
+ add_change file
95
+ end
96
+
97
+ # create_unit
98
+
99
+ def create_unit unit, class_names, path, template = :unit
100
+ unit.sections.each do |section|
101
+ @current_section = section
102
+ section[:content] = render! section[:name], format: :rb
103
+ end
104
+ unit.views.each do |view|
105
+ @current_view = view
106
+ view[:content] = render! view[:name], format: view[:format]
107
+ end
108
+ @sections = unit.sections
109
+ @views = unit.views
110
+ @class_names = class_names
111
+
112
+ file = TextFileShell.new path
113
+ file.new_lines = render! template, format: :rb
114
+ file.new_lines = file.new_lines.split("\n").map { "#{_1}\n" }
115
+ add_change file
116
+ end
117
+
118
+ # helper classes
119
+
120
+ class UnitHelper
121
+ def section name, section = {}
122
+ sections << section
123
+ section[:name] = name
124
+ end
125
+
126
+ def view name, view = {}
127
+ views << view
128
+ view[:name] = name
129
+ view[:key] ||= name
130
+ view[:format] ||= :rb
131
+ end
132
+
133
+ def sections
134
+ @sections ||= []
135
+ end
136
+
137
+ def views
138
+ @views ||= []
139
+ end
140
+ end
141
+
142
+ #
143
+
144
+ def copy_examples controller
145
+ puts
146
+ log controller.to_s
147
+ singular = controller.singular
148
+ plural = controller.plural
149
+ sys = controller.system.token
150
+
151
+ [
152
+ Lizarb::GEM_DIR,
153
+ Lizarb::APP_DIR,
154
+ ].uniq.each do |dir|
155
+ FileShell.directory? "#{dir}/examples/#{singular}" or next
156
+ copy_files "#{dir}/examples/#{singular}/app/#{sys}/#{plural}", "#{App.folder}/#{sys}/#{plural}"
157
+ end
158
+ end
159
+
160
+ #
161
+
162
+ def copy_files from_folder, to_folder
163
+ from_pattern = "#{from_folder}/**/*"
164
+ log "from_pattern = #{from_pattern}"
165
+
166
+ from_files = Dir[from_pattern]
167
+ log "from_files"
168
+ log_array from_files
169
+ puts
170
+
171
+ from_files.each do |source|
172
+ next if File.directory? source
173
+
174
+ target = source.sub(from_folder, to_folder)
175
+ copy_file source, target
176
+ end
177
+ end
178
+
179
+ def copy_file source, target
180
+ path = App.root.join target
181
+ file = TextFileShell.new path
182
+ file.new_lines = TextShell.read_lines source
183
+ add_change file
184
+ end
185
+
186
+ #
187
+
188
+ def name!
189
+ @name = command.simple_arg_ask_snakecase 0, "Name your new #{@controller_class.last_namespace}:"
190
+ log "@name = #{@name.inspect}"
191
+ end
192
+
193
+ #
194
+
195
+ def place!
196
+ places = ControllerShell.places_for(@controller_class)
197
+ @place = places.keys[0] if places.count == 1
198
+ @place ||= command.simple_controller_placement :place, places
199
+ @path = places[@place]
200
+ log "@place, @path = #{@place.inspect}, #{@path.inspect}"
201
+ end
202
+
203
+ # create_controller
204
+
205
+ def create_controller(name, controller, place, path, ancestor: controller, &block)
206
+ unit, test = UnitHelper.new, UnitHelper.new
207
+
208
+ @class_name = "#{name.camelize}#{controller.last_namespace}"
209
+ @class_name = "#{place.split("/").first.camelize}System::#{@class_name}" unless place == "app"
210
+
211
+ unit_classes = [@class_name, ancestor.to_s]
212
+ test_classes = unit_classes.map { "#{_1}Test" }
213
+
214
+ unit_path = App.root.join(path).join("#{name}_#{controller.division.singular}.rb")
215
+ test_path = App.root.join(path).join("#{name}_#{controller.division.singular}_test.rb")
216
+
217
+ # decorate
218
+
219
+ yield unit, test
220
+
221
+ # create
222
+
223
+ create_unit unit, unit_classes, unit_path
224
+ create_unit test, test_classes, test_path
225
+
226
+ log "done"
227
+ end
228
+
229
+ # helper methods
230
+
231
+ def puts_line
232
+ puts "-" * 120
233
+ end
234
+
235
+ end
236
+
237
+ __END__
238
+
239
+ # view unit.rb.erb
240
+ class <%= @class_names[0] %> < <%= @class_names[1] %>
241
+ <% @sections.each do |section| %>
242
+ # <%= section[:caption] %>
243
+ <%= section[:content] -%>
244
+ <% end -%>
245
+
246
+ end
247
+ <% if @views.any? -%>
248
+
249
+ <%= "__END__" %>
250
+
251
+ <% @views.each do |view| -%>
252
+ <%= "#" -%> view <%= view[:key] %>.<%= view[:format] %>.erb
253
+
254
+ <%= view[:content] -%>
255
+
256
+ <% end -%>
257
+ <% end -%>
@@ -0,0 +1,38 @@
1
+ class DevSystem::SimpleGeneratorTest < DevSystem::GeneratorTest
2
+
3
+ test :subject_class do
4
+ assert subject_class == DevSystem::SimpleGenerator
5
+ end
6
+
7
+ test :settings do
8
+ assert_equality subject_class.log_level, 0
9
+ end
10
+
11
+ # helper methods
12
+
13
+ def call_with(name, coil, placement, superklass, path)
14
+ env = {}
15
+ env[:name] = name.to_s
16
+ env[:generator_coil] = coil.to_s
17
+ env[:placement] = placement
18
+ env[:superclass] = superklass
19
+ env[:path] = path
20
+
21
+ subject.call env
22
+ end
23
+
24
+ def assert_change_count count, kaller: nil
25
+ kaller ||= caller
26
+ assert_equality subject.changes.count, count, kaller: kaller
27
+ end
28
+
29
+ def assert_change index, path, lines_count, first_line, kaller: nil
30
+ kaller ||= caller
31
+ unless assert subject.changes[index].path.to_s.end_with?(path), kaller: kaller
32
+ puts stick :red, "#{subject.changes[index].path.inspect} does not end with #{path.inspect}"
33
+ end
34
+ assert_equality subject.changes[index].new_lines.count, lines_count, kaller: kaller
35
+ assert_equality subject.changes[index].new_lines[0].strip, first_line, kaller: kaller
36
+ end
37
+
38
+ end
@@ -0,0 +1,11 @@
1
+ class DevSystem::LogCommand < DevSystem::Command
2
+
3
+ def self.call args
4
+ log :lower, "args = #{args}"
5
+
6
+ DevBox[:log].handlers.each do |key, log_class|
7
+ log "handler #{key} maps to #{log_class}"
8
+ end
9
+ end
10
+
11
+ end
@@ -0,0 +1,11 @@
1
+ class DevSystem::LogCommandTest < DevSystem::CommandTest
2
+
3
+ test :subject_class do
4
+ assert_equality subject_class, DevSystem::LogCommand
5
+ end
6
+
7
+ test :settings do
8
+ assert_equality subject_class.log_level, 0
9
+ end
10
+
11
+ end
@@ -0,0 +1,54 @@
1
+ class DevSystem::LogGenerator < DevSystem::SimpleGenerator
2
+
3
+ # liza g log name place=app
4
+
5
+ def call_default
6
+ @controller_class = Log
7
+
8
+ name!
9
+ place!
10
+ append_handler_to_log_panel
11
+
12
+ create_controller @name, @controller_class, @place, @path do |unit, test|
13
+ unit.section :controller_section_1
14
+ test.section :controller_test_section_1
15
+ end
16
+ end
17
+
18
+ def append_handler_to_log_panel
19
+ file = TextFileShell.new App.path.join("dev_box.rb")
20
+
21
+ lines = LineShell.extract_wall_of file.old_lines, " handler :"
22
+ lines << " handler :#{@name}\n"
23
+ file.new_lines = LineShell.replace_wall_of file.old_lines, " handler :", lines
24
+
25
+ add_change file
26
+ end
27
+
28
+ # liza g log:examples
29
+
30
+ def call_examples
31
+ # TODO: append once per example
32
+ @name = "logger"
33
+ append_handler_to_log_panel
34
+ #
35
+ copy_examples Log
36
+ end
37
+
38
+ end
39
+
40
+ __END__
41
+
42
+ # view controller_section_1.rb.erb
43
+
44
+ # TODO: https://rubyapi.org/3.1/o/logger
45
+ def self.call(env)
46
+ # as of version <%= Lizarb::VERSION %>, OutputLog has been the only controller explored
47
+ end
48
+
49
+ # view controller_test_section_1.rb.erb
50
+
51
+ test :subject_class, :subject do
52
+ assert_equality <%= @class_name %>, subject_class
53
+ assert_equality <%= @class_name %>, subject.class
54
+ end
@@ -0,0 +1,10 @@
1
+ class DevSystem::LogGeneratorTest < DevSystem::SimpleGeneratorTest
2
+
3
+ #
4
+
5
+ test :subject do
6
+ assert_equality DevSystem::LogGenerator, subject_class
7
+ assert_equality DevSystem::LogGenerator, subject.class
8
+ end
9
+
10
+ end
@@ -0,0 +1,3 @@
1
+ class DevSystem::Log < Liza::Controller
2
+
3
+ end
@@ -0,0 +1,47 @@
1
+ class DevSystem::LogPanel < Liza::Panel
2
+
3
+ def call env
4
+ env[:instance] ||= env[:unit_class] != env[:unit]
5
+ env[:method_name] ||= method_name_for env
6
+
7
+ # The unit determines the smallest log level it wants to log
8
+ # Therefore, a message of lower log level will not be logged
9
+ return if env[:message_log_level] < env[:unit_log_level]
10
+
11
+ handlers.values.each do |handler|
12
+ handler.call env
13
+ rescue Exception => e
14
+ log "#{e.class} #{e.message.inspect} on #{e.backtrace[0]}".yellow
15
+ end
16
+ end
17
+
18
+ def handler key
19
+ handlers[key] ||= Liza.const("#{key}_log")
20
+ end
21
+
22
+ def handlers
23
+ @handlers ||= {}
24
+ end
25
+
26
+ # NOTE: improve logs performance and readability
27
+
28
+ def method_name_for env
29
+ env[:caller].each do |s|
30
+ t = s.match(/`(.*)'/)[1]
31
+
32
+ next if t.include? " in <class:"
33
+ return t.split(" ").last if t.include? " in "
34
+
35
+ next if t == "log"
36
+ next if t == "each"
37
+ next if t == "map"
38
+ next if t == "with_index"
39
+ next if t == "instance_exec"
40
+ next if t.start_with? "_"
41
+ return t
42
+ end
43
+
44
+ raise "there's something wrong with kaller"
45
+ end
46
+
47
+ end
@@ -0,0 +1,50 @@
1
+ class DevSystem::LogPanelTest < Liza::PanelTest
2
+
3
+ test :subject_class do
4
+ assert_equality subject_class, DevSystem::LogPanel
5
+ end
6
+
7
+ test_methods_defined do
8
+ on_self
9
+ on_instance :call, :handler, :handlers, :method_name_for
10
+ end
11
+
12
+ test :settings do
13
+ assert_equality subject_class.log_level, 0
14
+ end
15
+
16
+ test :call, :unit_log_level, true do
17
+ handler_env = nil
18
+
19
+ assert_equality subject.handlers, {}
20
+ subject.handlers[:test] = -> env { handler_env = env }
21
+
22
+ input_env = {
23
+ caller: caller,
24
+ unit_log_level: :normal,
25
+ message_log_level: :normal
26
+ }
27
+ subject.call input_env
28
+
29
+ # it has passed the filter
30
+ assert_equality handler_env.object_id, input_env.object_id
31
+ end
32
+
33
+ test :call, :unit_log_level, false do
34
+ handler_env = nil
35
+
36
+ assert_equality subject.handlers, {}
37
+ subject.handlers[:test] = -> env { handler_env = env }
38
+
39
+ input_env = {
40
+ caller: caller,
41
+ unit_log_level: :normal,
42
+ message_log_level: :low
43
+ }
44
+ subject.call input_env
45
+
46
+ # it has not passed the filter
47
+ assert_equality handler_env, nil
48
+ end
49
+
50
+ end
@@ -0,0 +1,16 @@
1
+ class DevSystem::LogTest < Liza::ControllerTest
2
+
3
+ test :subject_class do
4
+ assert subject_class == DevSystem::Log
5
+ end
6
+
7
+ test_methods_defined do
8
+ on_self
9
+ on_instance
10
+ end
11
+
12
+ test :settings do
13
+ assert_equality subject_class.log_level, 0
14
+ end
15
+
16
+ end