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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bb8713bcd0175e6069a34ede6834e012395e11a4
4
- data.tar.gz: 185ac772d51ee7a5fb80c3c4058155aae7094e08
3
+ metadata.gz: 7928ae4cc32437fe0b85893e7f381a47864309e8
4
+ data.tar.gz: cfdd1ee61dd1e002bec1337815f75ce56c942b0e
5
5
  SHA512:
6
- metadata.gz: bd78da1e9ed5f3af971fdabab93faa1924c9b74619b36298852ddbfb3b525f161678cd34d2d9a619aff0c958bf3da3694afcee05b0d1bf76b07bd9a69400561a
7
- data.tar.gz: 6295dd08adbc49c431b8e2cc234f500592c035c1b9547c6c7fe6ab63b0b91420b323b8d57385d9685aee1510645b881bdd1b575637efa848f3e2175f4ccfca03
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
@@ -0,0 +1,11 @@
1
+ if RUBY_VERSION >= "2"
2
+ task :default => [:spec, :rubocop]
3
+
4
+ require "rubocop/rake_task"
5
+ RuboCop::RakeTask.new
6
+ else
7
+ task :default => [:spec]
8
+ end
9
+
10
+ require "rspec/core/rake_task"
11
+ RSpec::Core::RakeTask.new(:spec)
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 @pattern_match
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
@@ -1,3 +1,3 @@
1
1
  module Contracts
2
- VERSION = "0.10"
2
+ VERSION = "0.10.1"
3
3
  end
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: '0.10'
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-07 00:00:00.000000000 Z
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.4.6
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: