callable_tree 0.3.10 → 0.3.12

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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +19 -5
  3. data/.github/workflows/codeql-analysis.yml +4 -4
  4. data/.gitignore +2 -0
  5. data/.rubocop.yml +3 -0
  6. data/.rubocop_todo.yml +128 -0
  7. data/.ruby-version +1 -1
  8. data/AGENTS.md +56 -0
  9. data/CHANGELOG.md +11 -0
  10. data/CONTRIBUTING.md +68 -0
  11. data/Gemfile +4 -2
  12. data/README.md +195 -21
  13. data/callable_tree.gemspec +8 -2
  14. data/examples/builder/external-verbosify.rb +3 -2
  15. data/examples/builder/hooks.rb +2 -1
  16. data/examples/builder/identity.rb +3 -2
  17. data/examples/builder/internal-broadcastable.rb +2 -1
  18. data/examples/builder/internal-composable.rb +2 -1
  19. data/examples/builder/internal-seekable.rb +3 -2
  20. data/examples/builder/logging.rb +3 -2
  21. data/examples/class/external-verbosify.rb +3 -2
  22. data/examples/class/hooks.rb +2 -1
  23. data/examples/class/identity.rb +3 -2
  24. data/examples/class/internal-broadcastable.rb +2 -1
  25. data/examples/class/internal-composable.rb +2 -1
  26. data/examples/class/internal-seekable.rb +3 -2
  27. data/examples/class/logging.rb +3 -2
  28. data/examples/factory/external-verbosify.rb +69 -0
  29. data/examples/factory/hooks.rb +67 -0
  30. data/examples/factory/identity.rb +93 -0
  31. data/examples/factory/internal-broadcastable.rb +37 -0
  32. data/examples/factory/internal-composable.rb +37 -0
  33. data/examples/factory/internal-seekable.rb +71 -0
  34. data/examples/factory/logging.rb +121 -0
  35. data/lib/callable_tree/node/builder.rb +1 -0
  36. data/lib/callable_tree/node/external/pod.rb +91 -0
  37. data/lib/callable_tree/node/external/verbose.rb +1 -1
  38. data/lib/callable_tree/node/external.rb +1 -0
  39. data/lib/callable_tree/node/hooks/terminator.rb +1 -1
  40. data/lib/callable_tree/node/internal/pod.rb +91 -0
  41. data/lib/callable_tree/node/internal/{strategyable.rb → strategizable.rb} +4 -4
  42. data/lib/callable_tree/node/internal.rb +2 -2
  43. data/lib/callable_tree/version.rb +1 -1
  44. data/lib/callable_tree.rb +3 -1
  45. data/mise.toml +2 -0
  46. metadata +26 -15
  47. data/Gemfile.lock +0 -34
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: callable_tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.10
4
+ version: 0.3.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - jsmmr
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2022-12-30 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies: []
13
- description: Builds a tree by linking callable nodes. The nodes that match the conditions
14
- are called in a chain from the root node to the leaf node. These are like nested
15
- `if` or `case` expressions.
12
+ description: |
13
+ CallableTree provides a framework for organizing complex logic into a tree of callable nodes.
14
+ It allows you to chain execution from a root node to leaf nodes based on matching conditions.
15
+ Key features include multiple traversal strategies: `seekable` (like nested `if`/`case`),
16
+ `broadcastable` (one-to-many execution), and `composable` (pipelined processing).
17
+ Supports class-based, builder-style and factory-style definitions.
16
18
  email:
17
19
  - jsmmr@icloud.com
18
20
  executables: []
@@ -25,10 +27,12 @@ files:
25
27
  - ".gitignore"
26
28
  - ".rspec"
27
29
  - ".rubocop.yml"
30
+ - ".rubocop_todo.yml"
28
31
  - ".ruby-version"
32
+ - AGENTS.md
29
33
  - CHANGELOG.md
34
+ - CONTRIBUTING.md
30
35
  - Gemfile
31
- - Gemfile.lock
32
36
  - LICENSE.txt
33
37
  - README.md
34
38
  - Rakefile
@@ -53,33 +57,42 @@ files:
53
57
  - examples/docs/animals.xml
54
58
  - examples/docs/fruits.json
55
59
  - examples/docs/fruits.xml
60
+ - examples/factory/external-verbosify.rb
61
+ - examples/factory/hooks.rb
62
+ - examples/factory/identity.rb
63
+ - examples/factory/internal-broadcastable.rb
64
+ - examples/factory/internal-composable.rb
65
+ - examples/factory/internal-seekable.rb
66
+ - examples/factory/logging.rb
56
67
  - lib/callable_tree.rb
57
68
  - lib/callable_tree/node.rb
58
69
  - lib/callable_tree/node/builder.rb
59
70
  - lib/callable_tree/node/external.rb
60
71
  - lib/callable_tree/node/external/builder.rb
72
+ - lib/callable_tree/node/external/pod.rb
61
73
  - lib/callable_tree/node/external/verbose.rb
62
74
  - lib/callable_tree/node/hooks/caller.rb
63
75
  - lib/callable_tree/node/hooks/matcher.rb
64
76
  - lib/callable_tree/node/hooks/terminator.rb
65
77
  - lib/callable_tree/node/internal.rb
66
78
  - lib/callable_tree/node/internal/builder.rb
79
+ - lib/callable_tree/node/internal/pod.rb
80
+ - lib/callable_tree/node/internal/strategizable.rb
67
81
  - lib/callable_tree/node/internal/strategy.rb
68
82
  - lib/callable_tree/node/internal/strategy/broadcast.rb
69
83
  - lib/callable_tree/node/internal/strategy/compose.rb
70
84
  - lib/callable_tree/node/internal/strategy/seek.rb
71
- - lib/callable_tree/node/internal/strategyable.rb
72
85
  - lib/callable_tree/node/root.rb
73
86
  - lib/callable_tree/version.rb
87
+ - mise.toml
74
88
  homepage: https://github.com/jsmmr/ruby_callable_tree
75
89
  licenses:
76
90
  - MIT
77
91
  metadata:
78
92
  homepage_uri: https://github.com/jsmmr/ruby_callable_tree
79
93
  source_code_uri: https://github.com/jsmmr/ruby_callable_tree
80
- changelog_uri: https://github.com/jsmmr/ruby_callable_tree/blob/v0.3.10/CHANGELOG.md
94
+ changelog_uri: https://github.com/jsmmr/ruby_callable_tree/blob/v0.3.12/CHANGELOG.md
81
95
  rubygems_mfa_required: 'true'
82
- post_install_message:
83
96
  rdoc_options: []
84
97
  require_paths:
85
98
  - lib
@@ -94,10 +107,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
107
  - !ruby/object:Gem::Version
95
108
  version: '0'
96
109
  requirements: []
97
- rubygems_version: 3.4.1
98
- signing_key:
110
+ rubygems_version: 4.0.3
99
111
  specification_version: 4
100
- summary: Builds a tree by linking callable nodes. The nodes that match the conditions
101
- are called in a chain from the root node to the leaf node. These are like nested
102
- `if` or `case` expressions.
112
+ summary: Builds executable trees of callable nodes with flexible strategies like seek,
113
+ broadcast, and compose.
103
114
  test_files: []
data/Gemfile.lock DELETED
@@ -1,34 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- callable_tree (0.3.10)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- diff-lcs (1.5.0)
10
- rake (13.0.6)
11
- rspec (3.12.0)
12
- rspec-core (~> 3.12.0)
13
- rspec-expectations (~> 3.12.0)
14
- rspec-mocks (~> 3.12.0)
15
- rspec-core (3.12.0)
16
- rspec-support (~> 3.12.0)
17
- rspec-expectations (3.12.1)
18
- diff-lcs (>= 1.2.0, < 2.0)
19
- rspec-support (~> 3.12.0)
20
- rspec-mocks (3.12.1)
21
- diff-lcs (>= 1.2.0, < 2.0)
22
- rspec-support (~> 3.12.0)
23
- rspec-support (3.12.0)
24
-
25
- PLATFORMS
26
- x86_64-darwin-22
27
-
28
- DEPENDENCIES
29
- callable_tree!
30
- rake (~> 13.0)
31
- rspec (~> 3.0)
32
-
33
- BUNDLED WITH
34
- 2.3.26