contracts 0.10 → 0.10.1
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 +4 -4
- data/CHANGELOG.markdown +17 -0
- data/Gemfile +2 -1
- data/README.md +12 -0
- data/Rakefile +11 -0
- data/lib/contracts.rb +4 -2
- data/lib/contracts/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7928ae4cc32437fe0b85893e7f381a47864309e8
|
4
|
+
data.tar.gz: cfdd1ee61dd1e002bec1337815f75ce56c942b0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a68ba2b3654e8882954789e2370a88108c822dc97d390062c9507ab06b56f4fb8fb6739b4051a6a71ad3648742969bf936f096892f78ab5bc831108d667c563d
|
7
|
+
data.tar.gz: 2da1f049afd136edfdea28b9b9e1b4142ec721151b44bfde574075786338cea065cffc00273815edcd7b7b84f49926826fc69ffda462d3b94a87a8ce1b4ad831
|
data/CHANGELOG.markdown
CHANGED
@@ -1,4 +1,20 @@
|
|
1
|
+
## v0.10.1
|
2
|
+
|
3
|
+
- Enhancement: make `@pattern_match` instance variable not render ruby warning. Required to use new aruba versions in rspec tests - [Dennis Günnewig](https://github.com/dg-ratiodata) [#179](https://github.com/egonSchiele/contracts.ruby/pull/179)
|
4
|
+
|
5
|
+
## v0.10
|
6
|
+
|
7
|
+
- Bugfix: make `Maybe[Proc]` work correctly - [Simon George](https://github.com/sfcgeorge) [#142](https://github.com/egonSchiele/contracts.ruby/pull/142)
|
8
|
+
- Bugfix: make `Func` contract verified when used as return contract - [Rob Rosenbaum](https://github.com/robnormal) [#145](https://github.com/egonSchiele/contracts.ruby/pull/145)
|
9
|
+
- Bugfix: make `Pos`, `Neg` and `Nat` contracts handle non-numeric values correctly - [Matt Griffin](https://github.com/betamatt) and [Gavin Sinclair](https://github.com/gsinclair) [#147](https://github.com/egonSchiele/contracts.ruby/pull/147) [#173](https://github.com/egonSchiele/contracts.ruby/pull/173)
|
10
|
+
- Enhancement: reduce user class pollution through introduction of contracts engine - [Oleksii Fedorov](https://github.com/waterlink) [#141](https://github.com/egonSchiele/contracts.ruby/pull/141)
|
11
|
+
- Feature: add builtin `KeywordArgs` and `Optional` contracts for keyword arguments handling - [Oleksii Fedorov](https://github.com/waterlink) [#151](https://github.com/egonSchiele/contracts.ruby/pull/151)
|
12
|
+
- Feature: recognize module as a class contract - [Oleksii Fedorov](https://github.com/waterlink) [#153](https://github.com/egonSchiele/contracts.ruby/pull/153)
|
13
|
+
- Feature: custom validators with `Contract.override_validator` - [Oleksii Fedorov](https://github.com/waterlink) [#159](https://github.com/egonSchiele/contracts.ruby/pull/159)
|
14
|
+
- Feature: add builtin `RangeOf[...]` contract - [Gavin Sinclair](https://github.com/gsinclair) [#171](https://github.com/egonSchiele/contracts.ruby/pull/171)
|
15
|
+
|
1
16
|
## v0.9
|
17
|
+
|
2
18
|
- MAJOR fix in pattern-matching: If the return contract for a pattern-matched function fails, it should NOT try the next pattern-match function. Pattern-matching is only for params, not return values.
|
3
19
|
- raise an error if multiple defns have the same contract for pattern matching.
|
4
20
|
|
@@ -19,6 +35,7 @@
|
|
19
35
|
- various small fixes
|
20
36
|
|
21
37
|
## v0.8
|
38
|
+
|
22
39
|
- code refactored (very slight loss of performance, big increase in readability)
|
23
40
|
- fail when defining a contract on a module without `include Contracts::Modules`
|
24
41
|
- fixed several bugs in argument parsing, functions with complex params get contracts applied correctly now.
|
data/Gemfile
CHANGED
@@ -4,10 +4,11 @@ gemspec
|
|
4
4
|
|
5
5
|
group :test do
|
6
6
|
gem "rspec"
|
7
|
-
gem "rubocop", "~> 0.29.1", :platform => [:ruby_20, :ruby_21]
|
7
|
+
gem "rubocop", "~> 0.29.1", :platform => [:ruby_20, :ruby_21, :ruby_22]
|
8
8
|
end
|
9
9
|
|
10
10
|
group :development do
|
11
11
|
gem "method_profiler"
|
12
12
|
gem "ruby-prof"
|
13
|
+
gem "rake"
|
13
14
|
end
|
data/README.md
CHANGED
@@ -53,6 +53,18 @@ Check out [this awesome tutorial](http://egonschiele.github.com/contracts.ruby).
|
|
53
53
|
|
54
54
|
Check out [this screencast](https://vimeo.com/85883356).
|
55
55
|
|
56
|
+
## Development
|
57
|
+
|
58
|
+
To get started do the following:
|
59
|
+
|
60
|
+
1. Install required gems for development
|
61
|
+
|
62
|
+
`bundle install`
|
63
|
+
|
64
|
+
2. Run our test suite
|
65
|
+
|
66
|
+
`bundle exec rake`
|
67
|
+
|
56
68
|
## Performance
|
57
69
|
|
58
70
|
Using contracts.ruby results in very little slowdown. Check out [this blog post](http://adit.io/posts/2013-03-04-How-I-Made-My-Ruby-Project-10x-Faster.html#seconds-6) for more info.
|
data/Rakefile
ADDED
data/lib/contracts.rb
CHANGED
@@ -110,6 +110,8 @@ class Contract < Contracts::Decorator
|
|
110
110
|
|
111
111
|
@ret_validator = Contract.make_validator(ret_contract)
|
112
112
|
|
113
|
+
@pattern_match = false
|
114
|
+
|
113
115
|
# == @has_proc_contract
|
114
116
|
last_contract = args_contracts.last
|
115
117
|
is_a_proc = last_contract.is_a?(Class) && (last_contract <= Proc || last_contract <= Method)
|
@@ -251,7 +253,7 @@ class Contract < Contracts::Decorator
|
|
251
253
|
|
252
254
|
# Used to determine type of failure exception this contract should raise in case of failure
|
253
255
|
def failure_exception
|
254
|
-
if
|
256
|
+
if pattern_match?
|
255
257
|
PatternMatchingError
|
256
258
|
else
|
257
259
|
ParamContractError
|
@@ -266,6 +268,6 @@ class Contract < Contracts::Decorator
|
|
266
268
|
|
267
269
|
# Used to determine if contract is a pattern matching contract
|
268
270
|
def pattern_match?
|
269
|
-
@pattern_match
|
271
|
+
@pattern_match == true
|
270
272
|
end
|
271
273
|
end
|
data/lib/contracts/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: contracts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.10.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aditya Bhargava
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: This library provides contracts for Ruby. Contracts let you clearly express
|
14
14
|
how your code behaves, and free you from writing tons of boilerplate, defensive
|
@@ -25,6 +25,7 @@ files:
|
|
25
25
|
- CHANGELOG.markdown
|
26
26
|
- Gemfile
|
27
27
|
- README.md
|
28
|
+
- Rakefile
|
28
29
|
- TODO.markdown
|
29
30
|
- TUTORIAL.md
|
30
31
|
- benchmarks/bench.rb
|
@@ -81,8 +82,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
82
|
version: '0'
|
82
83
|
requirements: []
|
83
84
|
rubyforge_project:
|
84
|
-
rubygems_version: 2.
|
85
|
+
rubygems_version: 2.2.2
|
85
86
|
signing_key:
|
86
87
|
specification_version: 4
|
87
88
|
summary: Contracts for Ruby.
|
88
89
|
test_files: []
|
90
|
+
has_rdoc:
|