lizarb 1.0.3 → 1.0.4

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 (120) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +12 -13
  3. data/Rakefile +38 -0
  4. data/app/dev_box.rb +14 -12
  5. data/app/happy_box.rb +2 -2
  6. data/app/net_box.rb +4 -4
  7. data/app/web_box.rb +4 -4
  8. data/app.rb +6 -7
  9. data/{exe/Gemfile → app_global.gemfile.rb} +2 -0
  10. data/app_global.gemfile.rb.lock +19 -0
  11. data/app_global.rb +4 -0
  12. data/{app → app_new}/dev/benches/loops_bench.rb +3 -2
  13. data/{app/dev/generators/bench_generator_test.rb → app_new/dev/benches/loops_bench_test.rb} +2 -2
  14. data/app_new/dev/benches/objects_bench.rb +83 -0
  15. data/{app/dev/generators/record_generator_test.rb → app_new/dev/benches/objects_bench_test.rb} +2 -2
  16. data/app_new/dev/benches/sorted_bench.rb +54 -0
  17. data/app_new/dev/benches/sorted_bench_test.rb +12 -0
  18. data/app_new/dev/benches/variables_bench.rb +55 -0
  19. data/{app/dev/generators/command_generator_test.rb → app_new/dev/benches/variables_bench_test.rb} +2 -2
  20. data/{app → app_new}/dev/commands/calculator_command.rb +1 -1
  21. data/{app → app_new}/dev/commands/circle_command.rb +1 -1
  22. data/{app → app_new}/dev/commands/narrative_method_command.rb +5 -7
  23. data/{app → app_new}/dev/commands/quadratic_command.rb +1 -1
  24. data/app_new/dev_box.rb +14 -0
  25. data/app_new.rb +15 -0
  26. data/exe/lizarb +9 -1
  27. data/lib/app.rb +27 -95
  28. data/lib/dev_system/dev/controllers/bench/not_found_bench.rb +15 -8
  29. data/lib/dev_system/dev/controllers/bench.rb +0 -6
  30. data/lib/dev_system/dev/controllers/command/bench_command.rb +1 -2
  31. data/lib/dev_system/dev/controllers/command/generate_command.rb +3 -27
  32. data/lib/dev_system/dev/controllers/command/new_command.rb +9 -0
  33. data/lib/dev_system/dev/controllers/command/new_command_test.rb +7 -0
  34. data/lib/dev_system/dev/controllers/command/not_found_command.rb +29 -8
  35. data/lib/dev_system/dev/controllers/command/terminal_command.rb +2 -2
  36. data/lib/dev_system/dev/controllers/command/test_command.rb +6 -6
  37. data/lib/dev_system/dev/controllers/command.rb +9 -13
  38. data/lib/dev_system/dev/controllers/generator_dsl_main_part.rb +2 -4
  39. data/{app/dev/generators/bench_generator/bench.rb.erb → lib/dev_system/dev/controllers/generators/bench_generator/controller.rb.erb} +1 -2
  40. data/{app/dev/generators/bench_generator/bench_test.rb.erb → lib/dev_system/dev/controllers/generators/bench_generator/controller_test.rb.erb} +2 -2
  41. data/lib/dev_system/dev/controllers/generators/bench_generator.rb +12 -0
  42. data/lib/dev_system/dev/controllers/generators/bench_generator_test.rb +12 -0
  43. data/lib/dev_system/dev/controllers/generators/command_generator/controller.rb.erb +41 -0
  44. data/{app/dev/generators/command_generator/command_test.rb.erb → lib/dev_system/dev/controllers/generators/command_generator/controller_test.rb.erb} +2 -2
  45. data/lib/dev_system/dev/controllers/generators/command_generator.rb +19 -0
  46. data/lib/dev_system/dev/controllers/generators/command_generator_test.rb +12 -0
  47. data/lib/dev_system/dev/controllers/generators/controller_generator.rb +97 -0
  48. data/lib/dev_system/dev/controllers/generators/controller_generator_test.rb +12 -0
  49. data/lib/dev_system/dev/controllers/generators/generator_generator/template.rb.erb +1 -1
  50. data/lib/dev_system/dev/controllers/generators/new_generator.rb +117 -0
  51. data/lib/dev_system/dev/controllers/generators/new_generator_test.rb +12 -0
  52. data/lib/dev_system/dev/controllers/generators/not_found_generator.rb +20 -8
  53. data/{app/dev → lib/dev_system/dev/controllers}/generators/record_generator.rb +1 -1
  54. data/lib/dev_system/dev/controllers/generators/record_generator_test.rb +12 -0
  55. data/{app/dev → lib/dev_system/dev/controllers}/generators/request_generator.rb +2 -2
  56. data/lib/dev_system/dev/controllers/generators/request_generator_test.rb +12 -0
  57. data/lib/dev_system/dev/controllers/log.rb +3 -0
  58. data/{app/dev/generators/request_generator_test.rb → lib/dev_system/dev/controllers/log_test.rb} +2 -2
  59. data/lib/dev_system/dev/controllers/shell.rb +22 -0
  60. data/lib/dev_system/dev/controllers/shell_test.rb +25 -0
  61. data/lib/dev_system/dev/controllers/terminal/irb_terminal.rb +7 -1
  62. data/lib/dev_system/dev/controllers/terminal/pry_terminal.rb +1 -1
  63. data/lib/dev_system/dev/dev_box.rb +12 -18
  64. data/lib/dev_system/dev/panels/command_panel.rb +54 -11
  65. data/lib/dev_system/dev/panels/command_panel_test.rb +35 -10
  66. data/lib/dev_system/dev/panels/generator_panel.rb +70 -0
  67. data/lib/dev_system/dev/panels/generator_panel_test.rb +34 -0
  68. data/lib/happy_system/happy/happy_box.rb +2 -3
  69. data/lib/lerb.rb +95 -49
  70. data/lib/liza/base/box.rb +6 -1
  71. data/lib/liza/base/panel.rb +16 -18
  72. data/lib/liza/base/panel_test.rb +27 -1
  73. data/lib/liza/base_parts/controller_renderer_part.rb +1 -1
  74. data/lib/liza/ruby_tests/module_test.rb +2 -2
  75. data/lib/liza/test/test_test.rb +5 -1
  76. data/lib/liza/test_parts/test_assertions_part.rb +1 -1
  77. data/lib/liza/test_parts/test_dsl_part.rb +3 -3
  78. data/lib/liza/test_parts/test_tree_part.rb +4 -49
  79. data/lib/liza/unit.rb +73 -79
  80. data/lib/liza/unit_parts/unit_procedure_part_test.rb +9 -9
  81. data/lib/liza/unit_parts/unit_settings_part.rb +76 -0
  82. data/lib/liza/unit_parts/unit_settings_part_test.rb +3 -0
  83. data/lib/liza/unit_test.rb +11 -0
  84. data/lib/liza.rb +10 -1
  85. data/lib/lizarb/ruby/module.rb +1 -1
  86. data/lib/lizarb/version.rb +1 -1
  87. data/lib/lizarb.rb +247 -23
  88. data/lib/net_system/dev/net_command.rb +9 -9
  89. data/lib/net_system/net/controllers/client/redis_client.rb +1 -1
  90. data/lib/net_system/net/controllers/client/sqlite_client.rb +1 -1
  91. data/lib/net_system/net/net_box.rb +4 -6
  92. data/lib/web_system/dev/rack_command.rb +1 -8
  93. data/lib/web_system/dev/request_command.rb +6 -20
  94. data/lib/web_system/web/panels/request_panel.rb +0 -2
  95. data/lib/web_system/web/web_box.rb +4 -6
  96. data/lizarb.gemspec +1 -1
  97. metadata +46 -41
  98. data/.ruby-version +0 -1
  99. data/app/dev/benches/app_bench.rb +0 -5
  100. data/app/dev/benches/app_bench_test.rb +0 -7
  101. data/app/dev/benches/loops_bench_test.rb +0 -11
  102. data/app/dev/commands/app_command.rb +0 -5
  103. data/app/dev/commands/app_command_test.rb +0 -7
  104. data/app/dev/commands/new_command.rb +0 -9
  105. data/app/dev/commands/new_command_test.rb +0 -7
  106. data/app/dev/generators/bench_generator.rb +0 -18
  107. data/app/dev/generators/command_generator/command.rb.erb +0 -26
  108. data/app/dev/generators/command_generator.rb +0 -18
  109. data/exe/Gemfile.lock +0 -13
  110. data/lib/dev_system/dev/controllers/bench_dsl_main_part.rb +0 -58
  111. data/lib/dev_system/dev/controllers/command/echo_command.rb +0 -9
  112. data/lib/dev_system/dev/controllers/command/echo_command_test.rb +0 -12
  113. data/lib/dev_system/dev/controllers/command/version_command.rb +0 -7
  114. data/lib/dev_system/dev/controllers/command/version_command_test.rb +0 -12
  115. data/lib/dev_system/dev/controllers/generators/app_generator.rb +0 -146
  116. data/lib/dev_system/dev/controllers/generators/app_generator_test.rb +0 -12
  117. /data/{app → app_new}/dev/commands/calculator_command_test.rb +0 -0
  118. /data/{app → app_new}/dev/commands/circle_command_test.rb +0 -0
  119. /data/{app → app_new}/dev/commands/narrative_method_command_test.rb +0 -0
  120. /data/{app → app_new}/dev/commands/quadratic_command_test.rb +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 53e926fac5423110d8a9468bac9598dbe3a88922c61ac584311dc2b9a49ce81f
4
- data.tar.gz: 0a2e15f3cd064944b01d02a8761fca520a3167172c7193c00f7c5d807e0e88ba
3
+ metadata.gz: d65d5afa1b18cd8fa2dee6e92af9e1dff3f29d17c34ccc1d76f5ac5137d4b4d8
4
+ data.tar.gz: 5c38cb0eaa603cba1050fa4ecc38ecf2004a5155ba47a68e65af24a199d7005c
5
5
  SHA512:
6
- metadata.gz: ba9279ab0d31e64b01d41d764542a73465171497950a681119ecc2a2c8f01a66f04172dc67617b03c92a04302c8772c88209f5803053cf1c405216ac5cb003d9
7
- data.tar.gz: 5b27e32f1f16dd6c2536c4ad6046bb782a9eb20a8e8c9f68d7b6ab412950a464367193b435e801f9c3b442120414ad0cf7b8f034c3fae40b9050efebcf2cfe17
6
+ metadata.gz: fe4544def7e3a7a085427efb77707d78071e50848fdf8941ab9490fb8a131cf60594439ce5c46f556c0ae2b20ecaa5dadadd81a224bb98e082513355e25ef1ed
7
+ data.tar.gz: 50e1451cfcd9f5b6981b343a1e400fdb77c1db761c1581e1ad0c49e062225a8e45a82229ae55dbca7b69f8bb50e6791f0f5e10d4147d69aaee543253e1e08179
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lizarb (1.0.3)
4
+ lizarb (1.0.4)
5
5
  colorize (~> 0.8)
6
6
  dotenv (~> 2.8)
7
7
  zeitwerk (~> 2.6)
@@ -11,30 +11,29 @@ GEM
11
11
  specs:
12
12
  coderay (1.1.3)
13
13
  colorize (0.8.1)
14
- connection_pool (2.3.0)
14
+ connection_pool (2.4.0)
15
15
  dotenv (2.8.1)
16
16
  htmlbeautifier (1.4.2)
17
17
  method_source (1.0.0)
18
- mini_portile2 (2.8.1)
19
- nio4r (2.5.8)
20
- pry (0.14.1)
18
+ nio4r (2.5.9)
19
+ pry (0.14.2)
21
20
  coderay (~> 1.1)
22
21
  method_source (~> 1.0)
23
22
  puma (5.6.5)
24
23
  nio4r (~> 2.0)
25
- rack (3.0.0)
26
- rackup (0.2.2)
24
+ rack (3.0.7)
25
+ rackup (0.2.3)
27
26
  rack (>= 3.0.0.beta1)
28
27
  webrick
29
28
  rake (13.0.6)
30
- redis (5.0.5)
29
+ redis (5.0.6)
31
30
  redis-client (>= 0.9.0)
32
- redis-client (0.10.0)
31
+ redis-client (0.14.1)
33
32
  connection_pool
34
- sqlite3 (1.5.4)
35
- mini_portile2 (~> 2.8.0)
36
- webrick (1.7.0)
37
- zeitwerk (2.6.7)
33
+ sqlite3 (1.6.3-arm64-darwin)
34
+ sqlite3 (1.6.3-x86_64-linux)
35
+ webrick (1.8.1)
36
+ zeitwerk (2.6.8)
38
37
 
39
38
  PLATFORMS
40
39
  arm64-darwin-21
data/Rakefile CHANGED
@@ -1,6 +1,44 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "bundler/gem_tasks"
4
+
5
+ # Replaced tasks
6
+
4
7
  task default: %i[] do
5
8
  system "lizarb test"
6
9
  end
10
+
11
+ # Custom tasks
12
+
13
+
14
+
15
+ # Custom prerequisite tasks
16
+
17
+ task :custom_gemfiles do
18
+ puts "... Bundling app_global.gemfile.rb"
19
+ system "VERBOSE=1 BUNDLE_GEMFILE=app_global.gemfile.rb bundle update"
20
+
21
+ puts "... Bundling Gemfile"
22
+ system "VERBOSE=1 BUNDLE_GEMFILE=Gemfile bundle"
23
+
24
+ puts "... Installing lizarb"
25
+ end
26
+
27
+ # Custom post-requisite tasks
28
+
29
+ task :custom_post_task do
30
+ puts "! Done"
31
+ # Add your custom behavior here
32
+ end
33
+
34
+ # Enhance
35
+
36
+ # Enhance the existing `build` task with the prerequisite
37
+
38
+ Rake::Task["build"].enhance [:custom_gemfiles]
39
+
40
+ # Enhance the existing `install` task with the post-requisite
41
+
42
+ Rake::Task["install"].enhance do
43
+ Rake.application.invoke_task :custom_post_task
44
+ end
data/app/dev_box.rb CHANGED
@@ -1,32 +1,34 @@
1
1
  class DevBox < Liza::DevBox
2
2
 
3
- # Set up your bench panel per the DSL in http://guides.lizarb.org/panels/bench.html
4
- panel :bench do
3
+ # Configure your bench panel per the DSL in http://guides.lizarb.org/panels/bench.html
4
+ configure :bench do
5
5
  # set :log_level, ENV["dev.bench.log_level"]
6
6
  end
7
7
 
8
- # Set up your command panel per the DSL in http://guides.lizarb.org/panels/command.html
9
- panel :command do
8
+ # Configure your command panel per the DSL in http://guides.lizarb.org/panels/command.html
9
+ configure :command do
10
10
  # set :log_level, ENV["dev.command.log_level"]
11
+ set :log_details, false
11
12
  end
12
13
 
13
- # Set up your generator panel per the DSL in http://guides.lizarb.org/panels/generator.html
14
- panel :generator do
14
+ # Configure your generator panel per the DSL in http://guides.lizarb.org/panels/generator.html
15
+ configure :generator do
15
16
  # set :log_level, ENV["dev.generator.log_level"]
17
+ set :log_details, false
16
18
  end
17
19
 
18
- # Set up your command panel per the DSL in http://guides.lizarb.org/panels/log.html
19
- panel :log do
20
+ # Configure your command panel per the DSL in http://guides.lizarb.org/panels/log.html
21
+ configure :log do
20
22
  # set :log_level, ENV["dev.log.log_level"]
21
23
  end
22
24
 
23
- # Set up your shell panel per the DSL in http://guides.lizarb.org/panels/shell.html
24
- panel :shell do
25
+ # Configure your shell panel per the DSL in http://guides.lizarb.org/panels/shell.html
26
+ configure :shell do
25
27
  # set :log_level, ENV["dev.shell.log_level"]
26
28
  end
27
29
 
28
- # Set up your terminal panel per the DSL in http://guides.lizarb.org/panels/terminal.html
29
- panel :terminal do
30
+ # Configure your terminal panel per the DSL in http://guides.lizarb.org/panels/terminal.html
31
+ configure :terminal do
30
32
  # set :log_level, ENV["dev.terminal.log_level"]
31
33
  end
32
34
 
data/app/happy_box.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  class HappyBox < Liza::HappyBox
2
2
 
3
- panel :axo do
4
- # Set up your axo panel per the DSL in http://guides.lizarb.com/panels/axo.html
3
+ configure :axo do
4
+ # Configure your axo panel per the DSL in http://guides.lizarb.com/panels/axo.html
5
5
 
6
6
  end
7
7
 
data/app/net_box.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  class NetBox < Liza::NetBox
2
2
 
3
- panel :client do
4
- # Set up your client panel per the DSL in http://guides.lizarb.org/panels/client.html
3
+ configure :client do
4
+ # Configure your client panel per the DSL in http://guides.lizarb.org/panels/client.html
5
5
 
6
6
  set :redis_url, "redis://localhost:6379/15"
7
7
  set :sqlite_path, "tmp/app.#{Time.now.to_i}.sqlite" if App.mode == :code
@@ -9,8 +9,8 @@ class NetBox < Liza::NetBox
9
9
 
10
10
  end
11
11
 
12
- panel :database do
13
- # Set up your database panel per the DSL in http://guides.lizarb.org/panels/database.html
12
+ configure :database do
13
+ # Configure your database panel per the DSL in http://guides.lizarb.org/panels/database.html
14
14
 
15
15
  define :redis, RedisDb
16
16
  define :sql, SqliteDb
data/app/web_box.rb CHANGED
@@ -1,15 +1,15 @@
1
1
  class WebBox < Liza::WebBox
2
2
 
3
- panel :rack do
4
- # Set up your rack panel per the DSL in http://guides.lizarb.org/panels/rack.html
3
+ configure :rack do
4
+ # Configure your rack panel per the DSL in http://guides.lizarb.org/panels/rack.html
5
5
 
6
6
  # set :files, App.root.join("web_files")
7
7
  # set :host, "localhost"
8
8
  # set :port, 3000
9
9
  end
10
10
 
11
- panel :request do
12
- # Set up your request panel per the DSL in http://guides.lizarb.org/panels/request.html
11
+ configure :request do
12
+ # Configure your request panel per the DSL in http://guides.lizarb.org/panels/request.html
13
13
 
14
14
  end
15
15
 
data/app.rb CHANGED
@@ -1,17 +1,16 @@
1
- App.call ARGV do
1
+ class App
2
2
 
3
+ # Modes help you organize your application's behavior and settings.
4
+
5
+ mode :code
6
+ mode :demo
7
+
3
8
  # Systems help you organize your application's dependencies and RAM memory usage.
4
- # Learn more: http://guides.lizarb.org/systems.html
5
9
 
6
10
  system :dev
7
11
  system :happy
8
12
  system :net
9
13
  system :web
10
14
 
11
- # Modes help you organize your application's behavior and settings.
12
- # Learn more: http://guides.lizarb.org/modes.html
13
-
14
- mode :code
15
- mode :demo
16
15
 
17
16
  end
@@ -1,3 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  source "https://rubygems.org"
4
+
5
+ gem "lizarb", "~> 1.0"
@@ -0,0 +1,19 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ colorize (0.8.1)
5
+ dotenv (2.8.1)
6
+ lizarb (1.0.4)
7
+ colorize (~> 0.8)
8
+ dotenv (~> 2.8)
9
+ zeitwerk (~> 2.6)
10
+ zeitwerk (2.6.8)
11
+
12
+ PLATFORMS
13
+ x86_64-linux
14
+
15
+ DEPENDENCIES
16
+ lizarb (~> 1.0)
17
+
18
+ BUNDLED WITH
19
+ 2.4.1
data/app_global.rb ADDED
@@ -0,0 +1,4 @@
1
+ class App
2
+ mode :code
3
+ system :dev
4
+ end
@@ -1,5 +1,4 @@
1
- class LoopsBench < AppBench
2
- main_dsl
1
+ class LoopsBench < SortedBench
3
2
 
4
3
  setup do
5
4
  N = 1_000_000
@@ -8,6 +7,8 @@ class LoopsBench < AppBench
8
7
  HASH_INT = RANGE.map { |i| [i, i] }.to_h
9
8
  HASH_STR = RANGE.map { |i| ["a#{i}", i] }.to_h
10
9
  HASH_SYM = RANGE.map { |i| [:"a#{i}", i] }.to_h
10
+
11
+ log "setup N = #{N}"
11
12
  end
12
13
 
13
14
  mark "for i in RANGE" do
@@ -1,7 +1,7 @@
1
- class BenchGeneratorTest < Liza::GeneratorTest
1
+ class LoopsBenchTest < SortedBenchTest
2
2
 
3
3
  test :subject_class do
4
- assert subject_class == BenchGenerator
4
+ assert subject_class == LoopsBench
5
5
  end
6
6
 
7
7
  test :settings do
@@ -0,0 +1,83 @@
1
+ class ObjectsBench < SortedBench
2
+
3
+ setup do
4
+ N = 1_000_000
5
+ # N = 10_000_000
6
+ # N = 100_000_000
7
+
8
+ log "setup N = #{N}"
9
+ end
10
+
11
+ mark "BasicObject.new" do
12
+ i = 0
13
+
14
+ while (i += 1) <= N
15
+ BasicObject.new
16
+ end
17
+ end
18
+
19
+ mark "Object.new" do
20
+ i = 0
21
+
22
+ while (i += 1) <= N
23
+ Object.new
24
+ end
25
+ end
26
+
27
+ mark "String.new" do
28
+ i = 0
29
+
30
+ while (i += 1) <= N
31
+ String.new
32
+ end
33
+ end
34
+
35
+ mark "Numeric.new" do
36
+ i = 0
37
+
38
+ while (i += 1) <= N
39
+ Numeric.new
40
+ end
41
+ end
42
+
43
+ mark "Time.new" do
44
+ i = 0
45
+
46
+ while (i += 1) <= N
47
+ Time.new
48
+ end
49
+ end
50
+
51
+ mark "Proc.new {}" do
52
+ i = 0
53
+
54
+ while (i += 1) <= N
55
+ Proc.new {}
56
+ end
57
+ end
58
+
59
+ mark "Set.new" do
60
+ i = 0
61
+
62
+ while (i += 1) <= N
63
+ Set.new
64
+ end
65
+ end
66
+
67
+ mark "Array.new" do
68
+ i = 0
69
+
70
+ while (i += 1) <= N
71
+ Array.new
72
+ end
73
+ end
74
+
75
+ mark "Hash.new" do
76
+ i = 0
77
+
78
+ while (i += 1) <= N
79
+ Hash.new
80
+ end
81
+ end
82
+
83
+ end
@@ -1,7 +1,7 @@
1
- class RecordGeneratorTest < Liza::GeneratorTest
1
+ class ObjectsBenchTest < SortedBenchTest
2
2
 
3
3
  test :subject_class do
4
- assert subject_class == RecordGenerator
4
+ assert subject_class == ObjectsBench
5
5
  end
6
6
 
7
7
  test :settings do
@@ -0,0 +1,54 @@
1
+ class SortedBench < Liza::Bench
2
+
3
+ def self.call args
4
+ log "args = #{args.inspect}"
5
+
6
+ # https://rubyapi.org/3.1/o/benchmark
7
+ require "benchmark"
8
+
9
+ if @setup_bl
10
+ log "Setting up..."
11
+ instance_exec &@setup_bl
12
+ log "Set up"
13
+ end
14
+
15
+ log "Benchmarking #{marks.count} Ruby Blocks"
16
+ puts
17
+
18
+ length = marks.keys.map(&:length).max
19
+
20
+ marks.each do |label, bl|
21
+ log "Benchmarking #{label}"
22
+ marks[label] = Benchmark.measure label, &bl
23
+ end
24
+
25
+ puts
26
+
27
+ log "#{"Reporting".ljust_blanks(length + 17)} App CPU Time Kernel CPU Time Total CPU Time"
28
+ puts
29
+
30
+ sorted = marks.sort_by { |_k, tms| tms.total }.to_h
31
+
32
+ sorted.each.with_index do |(label, tms), i|
33
+ tms = tms.format "%10.6u %10.6y %10.6t"
34
+ s = "[#{i.next.to_s.rjust_zeroes 2}/#{marks.count.to_s.rjust_zeroes 2}] #{label.rjust_blanks length} #{tms}"
35
+
36
+ s = s.green if i == 0
37
+ s = s.red if i == marks.count-1
38
+ log s
39
+ end
40
+ puts
41
+ log "Done"
42
+ end
43
+
44
+ #
45
+
46
+ def self.marks()= @marks ||= {}
47
+
48
+ def self.mark(label, &block)= marks[label] = block
49
+
50
+ def self.setup &block
51
+ @setup_bl = block if block_given?
52
+ end
53
+
54
+ end
@@ -0,0 +1,12 @@
1
+ class SortedBenchTest < Liza::BenchTest
2
+
3
+ test :subject_class do
4
+ assert_equality subject_class, SortedBench
5
+ end
6
+
7
+ test :settings do
8
+ assert_equality subject_class.log_level, :normal
9
+ assert_equality subject_class.log_color, :green
10
+ end
11
+
12
+ end
@@ -0,0 +1,55 @@
1
+ class VariablesBench < SortedBench
2
+
3
+ setup do
4
+ LETTERS = (Array("a".."z")+Array("A".."Z"))
5
+ N = 1_000
6
+ # N = 10_000
7
+ # N = 100_000
8
+
9
+ log "setup N = #{N}"
10
+ end
11
+
12
+ mark "local variable" do
13
+ i = 0
14
+ a = nil
15
+
16
+ while (i += 1) <= N
17
+ eval "v_#{random_name} = sample"
18
+ end
19
+ end
20
+
21
+ mark "instance variable" do
22
+ i = 0
23
+
24
+ while (i += 1) <= N
25
+ eval "@v_#{random_name} = sample"
26
+ end
27
+ end
28
+
29
+ mark "class variable" do
30
+ i = 0
31
+
32
+ while (i += 1) <= N
33
+ eval "@@v_#{random_name} = sample"
34
+ end
35
+ end
36
+
37
+ mark "global variable" do
38
+ i = 0
39
+
40
+ while (i += 1) <= N
41
+ eval "$v_#{random_name} = sample"
42
+ end
43
+ end
44
+
45
+ # helper methods
46
+
47
+ def self.random_name
48
+ LETTERS.shuffle.join("")
49
+ end
50
+
51
+ def self.sample
52
+ LETTERS.sample
53
+ end
54
+
55
+ end
@@ -1,7 +1,7 @@
1
- class CommandGeneratorTest < Liza::GeneratorTest
1
+ class VariablesBenchTest < SortedBenchTest
2
2
 
3
3
  test :subject_class do
4
- assert subject_class == CommandGenerator
4
+ assert subject_class == VariablesBench
5
5
  end
6
6
 
7
7
  test :settings do
@@ -40,7 +40,7 @@ end
40
40
 
41
41
  __END__
42
42
 
43
- # help.txt.erb
43
+ # view help.txt.erb
44
44
 
45
45
  NAME:
46
46
 
@@ -45,7 +45,7 @@ end
45
45
 
46
46
  __END__
47
47
 
48
- # help.txt.erb
48
+ # view help.txt.erb
49
49
 
50
50
  NAME:
51
51
 
@@ -3,17 +3,17 @@ class NarrativeMethodCommand < Liza::Command
3
3
  class Invalid < Error; end
4
4
 
5
5
  def self.call(args)
6
- log "Called #{self}.#{__method__} with args #{args}"
6
+ log "args = #{args.inspect}"
7
7
  new.call(args)
8
8
  end
9
9
 
10
10
  # instance methods
11
11
 
12
12
  def call(args)
13
- log "Called #{self}.#{__method__} with args #{args}"
13
+ @args = args
14
+ log "@args = #{args.inspect}"
14
15
  return help if args.empty?
15
16
 
16
- @args = args
17
17
  validate
18
18
  perform
19
19
  rescue StandardError => error
@@ -32,26 +32,24 @@ class NarrativeMethodCommand < Liza::Command
32
32
  end
33
33
 
34
34
  def handle
35
- log "Called #{self}.#{__method__}"
36
35
  log render "error.txt"
37
36
  end
38
37
 
39
38
  def help
40
- log "Called #{self}.#{__method__}"
41
39
  log render "help.txt"
42
40
  end
43
41
  end
44
42
 
45
43
  __END__
46
44
 
47
- # success.txt.erb
45
+ # view success.txt.erb
48
46
 
49
47
  RESULT:
50
48
 
51
49
  class <%= @result.class %>
52
50
  value <%= @result %>
53
51
 
54
- # error.txt.erb
52
+ # view error.txt.erb
55
53
 
56
54
  ERROR:
57
55
 
@@ -42,7 +42,7 @@ end
42
42
 
43
43
  __END__
44
44
 
45
- # help.txt.erb
45
+ # view help.txt.erb
46
46
 
47
47
  NAME:
48
48
 
@@ -0,0 +1,14 @@
1
+ class DevBox < Liza::DevBox
2
+
3
+ configure :bench do
4
+ #
5
+ end
6
+
7
+ configure :command do
8
+ set :log_details, false
9
+
10
+ short :b, :bench
11
+ short :g, :generate
12
+ end
13
+
14
+ end
data/app_new.rb ADDED
@@ -0,0 +1,15 @@
1
+ # This is a LizaRB Application
2
+ # Learn more: http://lizarb.org/
3
+
4
+ class App
5
+
6
+ # Modes help you organize your application's behavior and settings.
7
+
8
+ mode :code
9
+ mode :demo
10
+
11
+ # Systems help you organize your application's dependencies and RAM memory usage.
12
+
13
+ system :dev
14
+
15
+ end
data/exe/lizarb CHANGED
@@ -1,11 +1,19 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ $APP = ENV["APP"]
4
+
3
5
  $VERBOSE = ENV["VERBOSE"]
4
6
 
5
7
  $LOAD_PATH.unshift "#{Dir.pwd}/lib"
6
8
 
7
9
  require_relative "../lib/lizarb.rb"
8
10
 
11
+ Lizarb.setup
12
+
13
+ Lizarb.app
14
+
9
15
  Lizarb.call
10
16
 
11
- exit 0
17
+ App.call ARGV
18
+
19
+ Lizarb.exit verbose: true