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 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
@@ -0,0 +1,5 @@
1
+ ## [Unreleased]
2
+
3
+ ## [0.1.0] - 2022-09-23
4
+
5
+ - Initial release
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in lokap-composite.gemspec
6
+ gemspec
7
+
8
+ gem "rake", "~> 13.0"
9
+
10
+ gem "minitest", "~> 5.0"
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,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rake/testtask"
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << "test"
8
+ t.libs << "lib"
9
+ t.test_files = FileList["test/**/test_*.rb"]
10
+ end
11
+
12
+ task default: :test
@@ -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: []