cuprum 0.10.0.rc.0 → 1.0.0.rc.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +52 -2
- data/CODE_OF_CONDUCT.md +132 -0
- data/DEVELOPMENT.md +4 -21
- data/README.md +776 -89
- data/lib/cuprum/built_in/identity_command.rb +6 -4
- data/lib/cuprum/built_in/identity_operation.rb +4 -2
- data/lib/cuprum/built_in/null_command.rb +5 -3
- data/lib/cuprum/built_in/null_operation.rb +4 -2
- data/lib/cuprum/built_in.rb +3 -1
- data/lib/cuprum/command.rb +29 -58
- data/lib/cuprum/command_factory.rb +7 -5
- data/lib/cuprum/currying/curried_command.rb +11 -4
- data/lib/cuprum/currying.rb +3 -2
- data/lib/cuprum/error.rb +44 -10
- data/lib/cuprum/errors/command_not_implemented.rb +6 -3
- data/lib/cuprum/errors/operation_not_called.rb +6 -6
- data/lib/cuprum/errors/uncaught_exception.rb +55 -0
- data/lib/cuprum/errors.rb +2 -0
- data/lib/cuprum/exception_handling.rb +50 -0
- data/lib/cuprum/matcher.rb +90 -0
- data/lib/cuprum/matcher_list.rb +150 -0
- data/lib/cuprum/matching/match_clause.rb +65 -0
- data/lib/cuprum/matching.rb +232 -0
- data/lib/cuprum/middleware.rb +210 -0
- data/lib/cuprum/operation.rb +17 -15
- data/lib/cuprum/result.rb +1 -3
- data/lib/cuprum/rspec/be_a_result.rb +10 -1
- data/lib/cuprum/rspec/be_a_result_matcher.rb +2 -4
- data/lib/cuprum/rspec/be_callable.rb +14 -0
- data/lib/cuprum/steps.rb +47 -89
- data/lib/cuprum/utils/instance_spy.rb +28 -28
- data/lib/cuprum/utils.rb +3 -1
- data/lib/cuprum/version.rb +13 -10
- data/lib/cuprum.rb +12 -7
- metadata +31 -19
- data/lib/cuprum/chaining.rb +0 -441
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d42abc97f91b8693f2ecd931857ad6818a1d818f6eaad1f3f9999bf948751d7d
|
4
|
+
data.tar.gz: 240587d60e6d7607e4a5bf89819014482847705d6f6c70f941172e58790de11c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '077659f1208f14487834e90aafa19fc828e31d73533012b9eda8751905cc1383298d89674a9ff86e0e6f248013db1610692f08f2ff83b7ba3b2a47f22d847752'
|
7
|
+
data.tar.gz: 71fbc512da8fb324bb3372bde996bd3fb810fc7aa7b758b59747405da815d66dc16edc90850a390ab65bfc5a67fc195b33217163589d3cc51e0d30ca67c3d9c1
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,56 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
## 0.
|
3
|
+
## 0.11.0
|
4
|
+
|
5
|
+
The "One Giant Leap" Update
|
6
|
+
|
7
|
+
**Note:** This will be the last feature update before 1.0.
|
8
|
+
|
9
|
+
### Commands
|
10
|
+
|
11
|
+
Implemented the `#to_proc` method, which allows for constructs such as `array.map(&command)`.
|
12
|
+
|
13
|
+
Removed the deprecated chaining mechanic.
|
14
|
+
|
15
|
+
#### Currying
|
16
|
+
|
17
|
+
Added support for currying block parameters.
|
18
|
+
|
19
|
+
#### Exception Handling
|
20
|
+
|
21
|
+
Defined `Cuprum::ExceptionHandling` to rescue uncaught errors in commands.
|
22
|
+
|
23
|
+
Exception handling is *not* included by default - add `include Cuprum::ExceptionHandling` to your command classes to use this feature.
|
24
|
+
|
25
|
+
#### Middleware
|
26
|
+
|
27
|
+
Defined `Cuprum::Middleware` to define a wrapper that calls other commands.
|
28
|
+
|
29
|
+
#### Steps
|
30
|
+
|
31
|
+
Deprecated calling `#step` with a method name.
|
32
|
+
|
33
|
+
The error type and message when calling `#steps` without a block has changed.
|
34
|
+
|
35
|
+
### Errors
|
36
|
+
|
37
|
+
Errors can now define their comparable properties by passing additional keywords to the constructor (or `super` for error subclasses).
|
38
|
+
|
39
|
+
Added the `#type` method and property.
|
40
|
+
|
41
|
+
Added serialization via the `#as_json` method.
|
42
|
+
|
43
|
+
### Matchers
|
44
|
+
|
45
|
+
Implemented `Cuprum::Matcher`, which provides a way to handle different result cases.
|
46
|
+
|
47
|
+
### RSpec
|
48
|
+
|
49
|
+
Added the `#be_callable` macro, which is a wrapper for `#respond_to` that references the `#process` method.
|
50
|
+
|
51
|
+
RSpec matchers are no longer automatically included when the macro is required. To use the Cuprum matchers, add `config.include Cuprum::RSpec::Matchers` to your RSpec configuration, or add `include Cuprum::RSpec::Matchers` to your example groups.
|
52
|
+
|
53
|
+
## 0.10.0
|
4
54
|
|
5
55
|
The "One Small Step" Update
|
6
56
|
|
@@ -12,7 +62,7 @@ Implemented the `#curry` method, which performs partial application of arguments
|
|
12
62
|
|
13
63
|
#### Chaining
|
14
64
|
|
15
|
-
Added deprecation warnings to all chaining methods, and `Cuprum::Command` no longer includes `Cuprum::Chaining` by default. The `Cuprum::Chaining` module will be removed in version
|
65
|
+
Added deprecation warnings to all chaining methods, and `Cuprum::Command` no longer includes `Cuprum::Chaining` by default. The `Cuprum::Chaining` module will be removed in version 0.11.
|
16
66
|
|
17
67
|
#### Steps
|
18
68
|
|
data/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,132 @@
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
2
|
+
|
3
|
+
## Our Pledge
|
4
|
+
|
5
|
+
We as members, contributors, and leaders pledge to make participation in our
|
6
|
+
community a harassment-free experience for everyone, regardless of age, body
|
7
|
+
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
8
|
+
identity and expression, level of experience, education, socio-economic status,
|
9
|
+
nationality, personal appearance, race, religion, or sexual identity
|
10
|
+
and orientation.
|
11
|
+
|
12
|
+
We pledge to act and interact in ways that contribute to an open, welcoming,
|
13
|
+
diverse, inclusive, and healthy community.
|
14
|
+
|
15
|
+
## Our Standards
|
16
|
+
|
17
|
+
Examples of behavior that contributes to a positive environment for our
|
18
|
+
community include:
|
19
|
+
|
20
|
+
* Demonstrating empathy and kindness toward other people
|
21
|
+
* Being respectful of differing opinions, viewpoints, and experiences
|
22
|
+
* Giving and gracefully accepting constructive feedback
|
23
|
+
* Accepting responsibility and apologizing to those affected by our mistakes,
|
24
|
+
and learning from the experience
|
25
|
+
* Focusing on what is best not just for us as individuals, but for the
|
26
|
+
overall community
|
27
|
+
|
28
|
+
Examples of unacceptable behavior include:
|
29
|
+
|
30
|
+
* The use of sexualized language or imagery, and sexual attention or
|
31
|
+
advances of any kind
|
32
|
+
* Trolling, insulting or derogatory comments, and personal or political attacks
|
33
|
+
* Public or private harassment
|
34
|
+
* Publishing others' private information, such as a physical or email
|
35
|
+
address, without their explicit permission
|
36
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
37
|
+
professional setting
|
38
|
+
|
39
|
+
## Enforcement Responsibilities
|
40
|
+
|
41
|
+
Community leaders are responsible for clarifying and enforcing our standards of
|
42
|
+
acceptable behavior and will take appropriate and fair corrective action in
|
43
|
+
response to any behavior that they deem inappropriate, threatening, offensive,
|
44
|
+
or harmful.
|
45
|
+
|
46
|
+
Community leaders have the right and responsibility to remove, edit, or reject
|
47
|
+
comments, commits, code, wiki edits, issues, and other contributions that are
|
48
|
+
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
49
|
+
decisions when appropriate.
|
50
|
+
|
51
|
+
## Scope
|
52
|
+
|
53
|
+
This Code of Conduct applies within all community spaces, and also applies when
|
54
|
+
an individual is officially representing the community in public spaces.
|
55
|
+
Examples of representing our community include using an official e-mail address,
|
56
|
+
posting via an official social media account, or acting as an appointed
|
57
|
+
representative at an online or offline event.
|
58
|
+
|
59
|
+
## Enforcement
|
60
|
+
|
61
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
62
|
+
reported to the community leaders responsible for enforcement at
|
63
|
+
merlin@sleepingkingstudios.com.
|
64
|
+
All complaints will be reviewed and investigated promptly and fairly.
|
65
|
+
|
66
|
+
All community leaders are obligated to respect the privacy and security of the
|
67
|
+
reporter of any incident.
|
68
|
+
|
69
|
+
## Enforcement Guidelines
|
70
|
+
|
71
|
+
Community leaders will follow these Community Impact Guidelines in determining
|
72
|
+
the consequences for any action they deem in violation of this Code of Conduct:
|
73
|
+
|
74
|
+
### 1. Correction
|
75
|
+
|
76
|
+
**Community Impact**: Use of inappropriate language or other behavior deemed
|
77
|
+
unprofessional or unwelcome in the community.
|
78
|
+
|
79
|
+
**Consequence**: A private, written warning from community leaders, providing
|
80
|
+
clarity around the nature of the violation and an explanation of why the
|
81
|
+
behavior was inappropriate. A public apology may be requested.
|
82
|
+
|
83
|
+
### 2. Warning
|
84
|
+
|
85
|
+
**Community Impact**: A violation through a single incident or series
|
86
|
+
of actions.
|
87
|
+
|
88
|
+
**Consequence**: A warning with consequences for continued behavior. No
|
89
|
+
interaction with the people involved, including unsolicited interaction with
|
90
|
+
those enforcing the Code of Conduct, for a specified period of time. This
|
91
|
+
includes avoiding interactions in community spaces as well as external channels
|
92
|
+
like social media. Violating these terms may lead to a temporary or
|
93
|
+
permanent ban.
|
94
|
+
|
95
|
+
### 3. Temporary Ban
|
96
|
+
|
97
|
+
**Community Impact**: A serious violation of community standards, including
|
98
|
+
sustained inappropriate behavior.
|
99
|
+
|
100
|
+
**Consequence**: A temporary ban from any sort of interaction or public
|
101
|
+
communication with the community for a specified period of time. No public or
|
102
|
+
private interaction with the people involved, including unsolicited interaction
|
103
|
+
with those enforcing the Code of Conduct, is allowed during this period.
|
104
|
+
Violating these terms may lead to a permanent ban.
|
105
|
+
|
106
|
+
### 4. Permanent Ban
|
107
|
+
|
108
|
+
**Community Impact**: Demonstrating a pattern of violation of community
|
109
|
+
standards, including sustained inappropriate behavior, harassment of an
|
110
|
+
individual, or aggression toward or disparagement of classes of individuals.
|
111
|
+
|
112
|
+
**Consequence**: A permanent ban from any sort of public interaction within
|
113
|
+
the community.
|
114
|
+
|
115
|
+
## Attribution
|
116
|
+
|
117
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
118
|
+
version 2.0, available at
|
119
|
+
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
|
120
|
+
|
121
|
+
Community Impact Guidelines were inspired by
|
122
|
+
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
|
123
|
+
|
124
|
+
For answers to common questions about this code of conduct, see the FAQ at
|
125
|
+
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available
|
126
|
+
at [https://www.contributor-covenant.org/translations][translations].
|
127
|
+
|
128
|
+
[homepage]: https://www.contributor-covenant.org
|
129
|
+
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
|
130
|
+
[Mozilla CoC]: https://github.com/mozilla/diversity
|
131
|
+
[FAQ]: https://www.contributor-covenant.org/faq
|
132
|
+
[translations]: https://www.contributor-covenant.org/translations
|
data/DEVELOPMENT.md
CHANGED
@@ -4,31 +4,25 @@
|
|
4
4
|
|
5
5
|
The "Look On My Works, Ye Mighty, and Despair" Update
|
6
6
|
|
7
|
-
-
|
8
|
-
- Configuration option to raise, warn, ignore discarded results.
|
9
|
-
- Code cleanup: Hash syntax, remove end comments, remove file headers
|
10
|
-
- Status Badges!
|
7
|
+
- Documentation pass.
|
11
8
|
|
12
9
|
Steps Case Study: |
|
13
10
|
|
14
11
|
CMS application - creating a new post.
|
15
12
|
Directory has many Posts
|
16
13
|
Post has a Content
|
17
|
-
Content has many ContentVersions
|
18
14
|
Post has many Tags
|
19
15
|
|
20
16
|
Find Directory
|
21
17
|
Create Post
|
22
18
|
Create Content
|
23
|
-
Create ContentVersion
|
24
19
|
Tags.each { FindOrCreate Tag }
|
25
|
-
|
26
|
-
### Commands
|
27
|
-
|
28
|
-
- Command#to_proc
|
20
|
+
Publish Post # Requires that post have content
|
29
21
|
|
30
22
|
## Future Versions
|
31
23
|
|
24
|
+
Add `.rbs` files
|
25
|
+
|
32
26
|
### Commands
|
33
27
|
|
34
28
|
- Implement #<<, #>> composition methods.
|
@@ -60,19 +54,10 @@ Steps Case Study: |
|
|
60
54
|
- RetryCommand - takes command, retry count
|
61
55
|
- optional only:, except: - restrict what errors are retried
|
62
56
|
|
63
|
-
### Matcher
|
64
|
-
|
65
|
-
- Handle success(), failure(), failure(SomeError) cases.
|
66
|
-
- Custom matcher to handle additional cases - halted, pending, etc?
|
67
|
-
|
68
57
|
### Middleware
|
69
58
|
|
70
59
|
- Implement Command.subclass
|
71
60
|
- Curries constructor arguments
|
72
|
-
- Implement Cuprum::Middleware
|
73
|
-
- #process takes next command, \*args, \*\*kwargs
|
74
|
-
- calls next command with \*args, \*\*kwargs
|
75
|
-
- .apply takes middleware: array, root: command
|
76
61
|
- Implement Cuprum::AppliedMiddleware < Cuprum::Command
|
77
62
|
- has readers #root (Class), #middleware (Array<Class>)
|
78
63
|
- #initialize
|
@@ -87,8 +72,6 @@ Steps Case Study: |
|
|
87
72
|
|
88
73
|
### RSpec
|
89
74
|
|
90
|
-
- be_callable matcher - delegates to respond_to(), but check arguments of
|
91
|
-
private #process method
|
92
75
|
- call_command_step matcher
|
93
76
|
- (optionally) alias be_a_result family as have_result for operations
|
94
77
|
|