typecheck 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +15 -0
- data/Gemfile +1 -4
- data/Rakefile +2 -1
- data/code_of_conduct.md +32 -0
- data/lib/typecheck.rb +4 -4
- data/spec/integration/typecheck_spec.rb +15 -1
- data/typecheck.gemspec +3 -3
- metadata +20 -19
- data/Gemfile.lock +0 -83
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d78752097c75269ad3ef9a8ecf8843517d3eed28
|
4
|
+
data.tar.gz: 3431ab7b9bd8c981223fa5b16b52cbfb8eaffc10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c46f14b64c4f9bc3055bac652c7176cb4a64cdf847da075e4dbef1255e44f1cbdf3b8072b0d476d94d81c8382ea999bdf010a397a5f9f56793bda0ee84eaee6c
|
7
|
+
data.tar.gz: 20df8348e031d06bb9b93e3038cd04f5e52e495c913b3ff7ed5e97e3b68538773f77dc6b431e4ce0463eb7e3531a8a1b0cad672411264c1062be8412a4a9771f
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -10,7 +10,8 @@ task :default => :mutant
|
|
10
10
|
|
11
11
|
task :mutant do
|
12
12
|
pattern = ENV.fetch('PATTERN', 'Typecheck*')
|
13
|
-
|
13
|
+
opts = ENV.fetch('MUTANT_OPTS', '').split(' ')
|
14
|
+
result = Mutant::CLI.run(%w[-Ilib -rtypecheck --use rspec --score 100] + opts + [pattern])
|
14
15
|
fail unless result == Mutant::CLI::EXIT_SUCCESS
|
15
16
|
end
|
16
17
|
|
data/code_of_conduct.md
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# Contributor Code of Conduct
|
2
|
+
|
3
|
+
As contributors and maintainers of this project, we pledge to respect
|
4
|
+
all people who contribute through reporting issues, posting feature
|
5
|
+
requests, updating documentation, submitting pull requests or patches,
|
6
|
+
and other activities.
|
7
|
+
|
8
|
+
We are committed to making participation in this project a
|
9
|
+
harassment-free experience for everyone, regardless of level of
|
10
|
+
experience, gender, gender identity and expression, sexual
|
11
|
+
orientation, disability, personal appearance, body size, race, age, or
|
12
|
+
religion.
|
13
|
+
|
14
|
+
Examples of unacceptable behavior by participants include the use of
|
15
|
+
sexual language or imagery, derogatory comments or personal attacks,
|
16
|
+
trolling, public or private harassment, insults, or other
|
17
|
+
unprofessional conduct.
|
18
|
+
|
19
|
+
Project maintainers have the right and responsibility to remove, edit,
|
20
|
+
or reject comments, commits, code, wiki edits, issues, and other
|
21
|
+
contributions that are not aligned to this Code of Conduct. Project
|
22
|
+
maintainers who do not follow the Code of Conduct may be removed from
|
23
|
+
the project team.
|
24
|
+
|
25
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior
|
26
|
+
may be reported by opening an issue or contacting one or more of the
|
27
|
+
project maintainers.
|
28
|
+
|
29
|
+
This Code of Conduct is adapted from the
|
30
|
+
[Contributor Covenant](http:contributor-covenant.org), version 1.0.0,
|
31
|
+
available at
|
32
|
+
[http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/)
|
data/lib/typecheck.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Typecheck
|
2
|
-
VERSION = '0.1.
|
2
|
+
VERSION = '0.1.2'
|
3
3
|
|
4
4
|
def typecheck(signature, method)
|
5
5
|
alias_method "#{method}_unchecked", method
|
@@ -12,7 +12,7 @@ module Typecheck
|
|
12
12
|
check_args, check_out = parse_sig(signature)
|
13
13
|
->(*args) do
|
14
14
|
check_args.(*args)
|
15
|
-
|
15
|
+
__send__(unchecked_method, *args).tap do |result|
|
16
16
|
check_out.(result)
|
17
17
|
end
|
18
18
|
end
|
@@ -20,7 +20,7 @@ module Typecheck
|
|
20
20
|
|
21
21
|
def parse_sig(sig)
|
22
22
|
in_t, out_t = sig.split('->').map(&:strip)
|
23
|
-
in_ts = in_t.split(',')
|
23
|
+
in_ts = in_t.split(',')
|
24
24
|
|
25
25
|
in_checks = in_ts.map(&method(:parse_type_list))
|
26
26
|
out_check = parse_type_list(out_t)
|
@@ -42,7 +42,7 @@ module Typecheck
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def parse_type_list(choices)
|
45
|
-
types = choices.split('|')
|
45
|
+
types = choices.split('|')
|
46
46
|
pred_or [
|
47
47
|
pred_or(types.map {|choice|
|
48
48
|
parse_type(choice, :check)
|
@@ -66,6 +66,17 @@ describe Typecheck do
|
|
66
66
|
num
|
67
67
|
end
|
68
68
|
typecheck 'Fixnum, String, Symbol -> Numeric', :optional
|
69
|
+
|
70
|
+
def public_interface(x)
|
71
|
+
private_helper(x)
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def private_helper(x)
|
77
|
+
x + x
|
78
|
+
end
|
79
|
+
typecheck 'Numeric -> Numeric', :private_helper
|
69
80
|
end
|
70
81
|
end
|
71
82
|
|
@@ -106,9 +117,12 @@ describe Typecheck do
|
|
106
117
|
include_examples 'valid', :optional, [1, 'x', :foo], 1
|
107
118
|
include_examples 'valid', :optional, [1, 'x'], 1
|
108
119
|
include_examples 'valid', :optional, [1], 1
|
109
|
-
include_examples 'invalid', :optional, [1, 'x', 'y'],
|
120
|
+
include_examples 'invalid', :optional, [1, 'x', 'y'], 'Bad type: "y", expected Symbol'
|
110
121
|
include_examples 'invalid', :optional, [], /wrong number of arguments/, ArgumentError
|
111
122
|
|
123
|
+
include_examples 'valid', :public_interface, [1], 2
|
124
|
+
include_examples 'invalid', :public_interface, ['x'], 'Bad type: "x", expected Numeric'
|
125
|
+
|
112
126
|
it 'should make the original method available' do
|
113
127
|
expect(subject.double_me_unchecked('foo')).to eq 'foofoo'
|
114
128
|
end
|
data/typecheck.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = `git ls-files -- spec`.split($/)
|
18
18
|
gem.extra_rdoc_files = %w[README.md LICENSE]
|
19
19
|
|
20
|
-
gem.add_development_dependency 'rake' , '~> 10.
|
21
|
-
gem.add_development_dependency 'rspec' , '~>
|
22
|
-
gem.add_development_dependency 'mutant-rspec' , '~> 0
|
20
|
+
gem.add_development_dependency 'rake' , '~> 10.4'
|
21
|
+
gem.add_development_dependency 'rspec' , '~> 3'
|
22
|
+
gem.add_development_dependency 'mutant-rspec' , '~> 0'
|
23
23
|
end
|
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: typecheck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arne Brasseur
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '10.
|
19
|
+
version: '10.4'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '10.
|
26
|
+
version: '10.4'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '3'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: mutant-rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0
|
54
|
+
version: '0'
|
55
55
|
description: Type checking for Ruby methods.
|
56
56
|
email:
|
57
57
|
- arne@arnebrasseur.net
|
@@ -61,12 +61,13 @@ extra_rdoc_files:
|
|
61
61
|
- README.md
|
62
62
|
- LICENSE
|
63
63
|
files:
|
64
|
-
- .gitignore
|
64
|
+
- ".gitignore"
|
65
|
+
- ".travis.yml"
|
65
66
|
- Gemfile
|
66
|
-
- Gemfile.lock
|
67
67
|
- LICENSE
|
68
68
|
- README.md
|
69
69
|
- Rakefile
|
70
|
+
- code_of_conduct.md
|
70
71
|
- lib/typecheck.rb
|
71
72
|
- spec/integration/typecheck_spec.rb
|
72
73
|
- spec/spec_helper.rb
|
@@ -81,17 +82,17 @@ require_paths:
|
|
81
82
|
- lib
|
82
83
|
required_ruby_version: !ruby/object:Gem::Requirement
|
83
84
|
requirements:
|
84
|
-
- -
|
85
|
+
- - ">="
|
85
86
|
- !ruby/object:Gem::Version
|
86
87
|
version: '0'
|
87
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
89
|
requirements:
|
89
|
-
- -
|
90
|
+
- - ">="
|
90
91
|
- !ruby/object:Gem::Version
|
91
92
|
version: '0'
|
92
93
|
requirements: []
|
93
94
|
rubyforge_project:
|
94
|
-
rubygems_version: 2.
|
95
|
+
rubygems_version: 2.2.2
|
95
96
|
signing_key:
|
96
97
|
specification_version: 4
|
97
98
|
summary: Type checking for Ruby methods.
|
data/Gemfile.lock
DELETED
@@ -1,83 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
typecheck (0.1.1)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
abstract_type (0.0.7)
|
10
|
-
adamantium (0.2.0)
|
11
|
-
ice_nine (~> 0.11.0)
|
12
|
-
memoizable (~> 0.4.0)
|
13
|
-
anima (0.2.0)
|
14
|
-
abstract_type (~> 0.0.7)
|
15
|
-
adamantium (~> 0.1)
|
16
|
-
equalizer (~> 0.0.8)
|
17
|
-
ast (1.1.0)
|
18
|
-
concord (0.1.5)
|
19
|
-
adamantium (~> 0.2.0)
|
20
|
-
equalizer (~> 0.0.9)
|
21
|
-
diff-lcs (1.2.5)
|
22
|
-
equalizer (0.0.9)
|
23
|
-
ice_nine (0.11.0)
|
24
|
-
inflecto (0.0.2)
|
25
|
-
memoizable (0.4.2)
|
26
|
-
thread_safe (~> 0.3, >= 0.3.1)
|
27
|
-
morpher (0.2.2)
|
28
|
-
abstract_type (~> 0.0.7)
|
29
|
-
adamantium (~> 0.2.0)
|
30
|
-
anima (~> 0.2.0)
|
31
|
-
ast (~> 1.1.0)
|
32
|
-
concord (~> 0.1.4)
|
33
|
-
equalizer (~> 0.0.9)
|
34
|
-
ice_nine (~> 0.11.0)
|
35
|
-
procto (~> 0.0.2)
|
36
|
-
mutant (0.5.10)
|
37
|
-
abstract_type (~> 0.0.7)
|
38
|
-
adamantium (~> 0.2.0)
|
39
|
-
anima (~> 0.2.0)
|
40
|
-
concord (~> 0.1.4)
|
41
|
-
diff-lcs (~> 1.2)
|
42
|
-
equalizer (~> 0.0.9)
|
43
|
-
ice_nine (~> 0.11.0)
|
44
|
-
inflecto (~> 0.0.2)
|
45
|
-
memoizable (~> 0.4.2)
|
46
|
-
morpher (~> 0.2.1)
|
47
|
-
parser (~> 2.1)
|
48
|
-
procto (~> 0.0.2)
|
49
|
-
unparser (~> 0.1.10)
|
50
|
-
mutant-rspec (0.5.10)
|
51
|
-
mutant (~> 0.5.10)
|
52
|
-
rspec-core (>= 2.14.1, <= 3.0.0.beta2)
|
53
|
-
parser (2.1.8)
|
54
|
-
ast (~> 1.1)
|
55
|
-
slop (~> 3.4, >= 3.4.5)
|
56
|
-
procto (0.0.2)
|
57
|
-
rake (10.3.1)
|
58
|
-
rspec (2.14.1)
|
59
|
-
rspec-core (~> 2.14.0)
|
60
|
-
rspec-expectations (~> 2.14.0)
|
61
|
-
rspec-mocks (~> 2.14.0)
|
62
|
-
rspec-core (2.14.8)
|
63
|
-
rspec-expectations (2.14.5)
|
64
|
-
diff-lcs (>= 1.1.3, < 2.0)
|
65
|
-
rspec-mocks (2.14.6)
|
66
|
-
slop (3.5.0)
|
67
|
-
thread_safe (0.3.3)
|
68
|
-
unparser (0.1.12)
|
69
|
-
abstract_type (~> 0.0.7)
|
70
|
-
adamantium (~> 0.2.0)
|
71
|
-
concord (~> 0.1.4)
|
72
|
-
equalizer (~> 0.0.9)
|
73
|
-
parser (~> 2.1)
|
74
|
-
procto (~> 0.0.2)
|
75
|
-
|
76
|
-
PLATFORMS
|
77
|
-
ruby
|
78
|
-
|
79
|
-
DEPENDENCIES
|
80
|
-
mutant-rspec (~> 0.5.10)
|
81
|
-
rake (~> 10.2)
|
82
|
-
rspec (~> 2.14)
|
83
|
-
typecheck!
|