cuprum 0.10.0 → 1.0.0.rc.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +60 -2
- data/CODE_OF_CONDUCT.md +132 -0
- data/DEVELOPMENT.md +2 -38
- 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 +45 -144
- data/lib/cuprum/utils/instance_spy.rb +28 -28
- data/lib/cuprum/utils.rb +3 -1
- data/lib/cuprum/version.rb +15 -12
- data/lib/cuprum.rb +12 -7
- metadata +33 -21
- 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: 1acf1f03e1b78fd7c90cb8b3eb96bd2ba8771b29dd92c743a7580c22700919df
|
4
|
+
data.tar.gz: 07eae29a24b5819cf80c646c016fb7e0508ffe93f5820795a74d1c2dfdbd6bf4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cec2ebc229e0507dde9ca02aedf2bd93f55161151eef230f43408d4e39d7ab8b8711c655c72d4b193733f9a2b235e95cb390c57cccebb61f6e129915b261588c
|
7
|
+
data.tar.gz: d10c6180899006af62022ac1f9543897d258f8407a3dfca56d270f0eba356a7aabd418234330901dd3b8e3c55de27f07e9ae4c2c37398056800331bd8b6ae8f1
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,64 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
## 0.
|
3
|
+
## 1.0.0
|
4
|
+
|
5
|
+
The "Look On My Works, Ye Mighty, and Despair" Update
|
6
|
+
|
7
|
+
#### Steps
|
8
|
+
|
9
|
+
Removed calling `#step` with a method name.
|
10
|
+
|
11
|
+
## 0.11.0
|
12
|
+
|
13
|
+
The "One Giant Leap" Update
|
14
|
+
|
15
|
+
**Note:** This will be the last feature update before 1.0.
|
16
|
+
|
17
|
+
### Commands
|
18
|
+
|
19
|
+
Implemented the `#to_proc` method, which allows for constructs such as `array.map(&command)`.
|
20
|
+
|
21
|
+
Removed the deprecated chaining mechanic.
|
22
|
+
|
23
|
+
#### Currying
|
24
|
+
|
25
|
+
Added support for currying block parameters.
|
26
|
+
|
27
|
+
#### Exception Handling
|
28
|
+
|
29
|
+
Defined `Cuprum::ExceptionHandling` to rescue uncaught errors in commands.
|
30
|
+
|
31
|
+
Exception handling is *not* included by default - add `include Cuprum::ExceptionHandling` to your command classes to use this feature.
|
32
|
+
|
33
|
+
#### Middleware
|
34
|
+
|
35
|
+
Defined `Cuprum::Middleware` to define a wrapper that calls other commands.
|
36
|
+
|
37
|
+
#### Steps
|
38
|
+
|
39
|
+
Deprecated calling `#step` with a method name.
|
40
|
+
|
41
|
+
The error type and message when calling `#steps` without a block has changed.
|
42
|
+
|
43
|
+
### Errors
|
44
|
+
|
45
|
+
Errors can now define their comparable properties by passing additional keywords to the constructor (or `super` for error subclasses).
|
46
|
+
|
47
|
+
Added the `#type` method and property.
|
48
|
+
|
49
|
+
Added serialization via the `#as_json` method.
|
50
|
+
|
51
|
+
### Matchers
|
52
|
+
|
53
|
+
Implemented `Cuprum::Matcher`, which provides a way to handle different result cases.
|
54
|
+
|
55
|
+
### RSpec
|
56
|
+
|
57
|
+
Added the `#be_callable` macro, which is a wrapper for `#respond_to` that references the `#process` method.
|
58
|
+
|
59
|
+
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.
|
60
|
+
|
61
|
+
## 0.10.0
|
4
62
|
|
5
63
|
The "One Small Step" Update
|
6
64
|
|
@@ -12,7 +70,7 @@ Implemented the `#curry` method, which performs partial application of arguments
|
|
12
70
|
|
13
71
|
#### Chaining
|
14
72
|
|
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
|
73
|
+
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
74
|
|
17
75
|
#### Steps
|
18
76
|
|
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
@@ -1,34 +1,9 @@
|
|
1
1
|
# Development
|
2
2
|
|
3
|
-
## Version 1.0.0
|
4
|
-
|
5
|
-
The "Look On My Works, Ye Mighty, and Despair" Update
|
6
|
-
|
7
|
-
- Integration specs.
|
8
|
-
- Code cleanup: Hash syntax, remove end comments, remove file headers
|
9
|
-
- Status Badges!
|
10
|
-
|
11
|
-
Steps Case Study: |
|
12
|
-
|
13
|
-
CMS application - creating a new post.
|
14
|
-
Directory has many Posts
|
15
|
-
Post has a Content
|
16
|
-
Content has many ContentVersions
|
17
|
-
Post has many Tags
|
18
|
-
|
19
|
-
Find Directory
|
20
|
-
Create Post
|
21
|
-
Create Content
|
22
|
-
Create ContentVersion
|
23
|
-
Tags.each { FindOrCreate Tag }
|
24
|
-
|
25
|
-
### Commands
|
26
|
-
|
27
|
-
- Remove `Cuprum::Chaining`.
|
28
|
-
- Implement `Command#to_proc`.
|
29
|
-
|
30
3
|
## Future Versions
|
31
4
|
|
5
|
+
Add `.rbs` files
|
6
|
+
|
32
7
|
### Commands
|
33
8
|
|
34
9
|
- Implement #<<, #>> composition methods.
|
@@ -60,19 +35,10 @@ Steps Case Study: |
|
|
60
35
|
- RetryCommand - takes command, retry count
|
61
36
|
- optional only:, except: - restrict what errors are retried
|
62
37
|
|
63
|
-
### Matcher
|
64
|
-
|
65
|
-
- Handle success(), failure(), failure(SomeError) cases.
|
66
|
-
- Custom matcher to handle additional cases - halted, pending, etc?
|
67
|
-
|
68
38
|
### Middleware
|
69
39
|
|
70
40
|
- Implement Command.subclass
|
71
41
|
- 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
42
|
- Implement Cuprum::AppliedMiddleware < Cuprum::Command
|
77
43
|
- has readers #root (Class), #middleware (Array<Class>)
|
78
44
|
- #initialize
|
@@ -87,8 +53,6 @@ Steps Case Study: |
|
|
87
53
|
|
88
54
|
### RSpec
|
89
55
|
|
90
|
-
- be_callable matcher - delegates to respond_to(), but check arguments of
|
91
|
-
private #process method
|
92
56
|
- call_command_step matcher
|
93
57
|
- (optionally) alias be_a_result family as have_result for operations
|
94
58
|
|