lokap-composite 0.0.2
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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +21 -0
- data/README.md +26 -0
- data/Rakefile +12 -0
- data/lib/lokap/composite.rb +68 -0
- metadata +54 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c8d1471c8ec5eac04ed6b382ac1d6c39ab41ee2ba270825ef488679cf2ac7400
|
4
|
+
data.tar.gz: d3b81dc75ac36bb1fa71c215bf1674e7b91667228f59928b3a9772033ae1c3f4
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2d1a25a86a777b289bf1435ec177592a9eaa87871a1fc7a80f0a0e61e0d4cebbff51df43e00dde4b7c5027c03ee954efa6b9c920392921db3867ef8629261883
|
7
|
+
data.tar.gz: 23680f44e2a5736315a750cbbdda99358a88216075f1cb1b973ba38d8c8d9531c507114f05ee34d284d6cf5e04c6ca2d8fca49e87f9204ab4629c08938846574
|
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
lokap-composite (0.0.1)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
minitest (5.16.3)
|
10
|
+
rake (13.0.6)
|
11
|
+
|
12
|
+
PLATFORMS
|
13
|
+
arm64-darwin-21
|
14
|
+
|
15
|
+
DEPENDENCIES
|
16
|
+
lokap-composite!
|
17
|
+
minitest (~> 5.0)
|
18
|
+
rake (~> 13.0)
|
19
|
+
|
20
|
+
BUNDLED WITH
|
21
|
+
2.3.21
|
data/README.md
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# Lokap::Composite
|
2
|
+
|
3
|
+
A minimal composite pattern; got sick of rewriting it.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Install the gem and add to the application's Gemfile by executing:
|
8
|
+
|
9
|
+
$ bundle add lokap-composite
|
10
|
+
|
11
|
+
If bundler is not being used to manage dependencies, install the gem by executing:
|
12
|
+
|
13
|
+
$ gem install lokap-composite
|
14
|
+
|
15
|
+
## Usage
|
16
|
+
|
17
|
+
-
|
18
|
+
|
19
|
+
## Development
|
20
|
+
|
21
|
+
-
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
Bug reports and pull requests https://github.com/adambair/lokap-composite
|
26
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lokap
|
4
|
+
class Composite
|
5
|
+
attr_accessor :steps, :messages
|
6
|
+
|
7
|
+
def initialize(options={steps: []})
|
8
|
+
@steps = options[:steps]
|
9
|
+
@messages = []
|
10
|
+
end
|
11
|
+
|
12
|
+
def steps
|
13
|
+
@steps ||= []
|
14
|
+
end
|
15
|
+
|
16
|
+
def add_step(step)
|
17
|
+
steps << step.new(self)
|
18
|
+
end
|
19
|
+
|
20
|
+
def add_steps(steps=[])
|
21
|
+
[steps].flatten.compact.each { |step| add_step(step) }
|
22
|
+
end
|
23
|
+
|
24
|
+
def process
|
25
|
+
before_process
|
26
|
+
|
27
|
+
steps.each do |step|
|
28
|
+
step.before_perform
|
29
|
+
step.perform
|
30
|
+
step.after_perform
|
31
|
+
end
|
32
|
+
|
33
|
+
after_process
|
34
|
+
end
|
35
|
+
|
36
|
+
def before_process
|
37
|
+
messages << "Composite #{self.class.name}: Starting..."
|
38
|
+
end
|
39
|
+
|
40
|
+
def after_process
|
41
|
+
messages << "Composite #{self.class.name}: Finished."
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class Composite::Step
|
46
|
+
class AbstractMethodError < StandardError; end
|
47
|
+
|
48
|
+
attr_accessor :composite, :options
|
49
|
+
|
50
|
+
def initialize(composite, options={})
|
51
|
+
@composite = composite
|
52
|
+
@options = options
|
53
|
+
end
|
54
|
+
|
55
|
+
def perform
|
56
|
+
raise AbstractMethodError,
|
57
|
+
"Child class must impelement abstract method: #{method_name}"
|
58
|
+
end
|
59
|
+
|
60
|
+
def before_perform
|
61
|
+
composite.messages << "Step #{self.class.name}: Starting..."
|
62
|
+
end
|
63
|
+
|
64
|
+
def after_perform
|
65
|
+
composite.messages << "Step #{self.class.name}: Finished."
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
metadata
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lokap-composite
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Adam Bair
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-09-26 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description:
|
14
|
+
email:
|
15
|
+
- adambair@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- CHANGELOG.md
|
21
|
+
- Gemfile
|
22
|
+
- Gemfile.lock
|
23
|
+
- README.md
|
24
|
+
- Rakefile
|
25
|
+
- lib/lokap/composite.rb
|
26
|
+
homepage: https://github.com/adambair/lokap-composite
|
27
|
+
licenses:
|
28
|
+
- Nonstandard
|
29
|
+
metadata:
|
30
|
+
allowed_push_host: https://rubygems.org/
|
31
|
+
homepage_uri: https://github.com/adambair/lokap-composite
|
32
|
+
source_code_uri: https://github.com/adambair/lokap-composite/
|
33
|
+
changelog_uri: https://github.com/adambair/lokap-composite/blob/master/CHANGELOG.md
|
34
|
+
bug_tracker_uri: https://github.com/adambair/lokap-composite/issues
|
35
|
+
post_install_message:
|
36
|
+
rdoc_options: []
|
37
|
+
require_paths:
|
38
|
+
- lib
|
39
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 2.6.0
|
44
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
requirements: []
|
50
|
+
rubygems_version: 3.3.14
|
51
|
+
signing_key:
|
52
|
+
specification_version: 4
|
53
|
+
summary: A minimal composite pattern; got sick of rewriting it.
|
54
|
+
test_files: []
|