rtype-java 0.6.4 → 0.6.5

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: e3760485d15ecd4272d5e6d419579a3c1c837ea1
4
- data.tar.gz: 4ba52f011231c59f011d9d5026008473138c13b8
3
+ metadata.gz: 26d9b5f52a0751920c528ad09892902417a87c6a
4
+ data.tar.gz: 17914c634ee6098bad49631b880639f198177395
5
5
  SHA512:
6
- metadata.gz: 432e3b0890ed2bd5e50e77525e79ed062827e59845825dd34ee8817bc9409f163297693fd380314bcd914f846c4c5ced58d79eb639dab011aeed8a51e536dc42
7
- data.tar.gz: 1ffb50b5d2e3cf5236406836a3cd2979eb64f1ecba01cf42f36f5b3f6b121eb97b988a3df9ee36fab5aa8a7614e5ad935a6da1a0028e6b488ce2af8140524e15
6
+ metadata.gz: 31b92c9b62a23d35acb9b2552c7c52dc5e94a3760bc513cc63d7439757e5e0d2a690c312ad3edaf0046ce48f4077c9a0d56000867afbb5434cd0e2d0a610864f
7
+ data.tar.gz: a7fd347eeb62797636bd729115b2c9a0df323a6a7d7e3285353e89ea6805761d191cdcfbb46669645974e61a062a9ff3324cc4108e3142f6d80e048948855f1c
data/README.md CHANGED
@@ -29,6 +29,7 @@ Test::invert(state: 0)
29
29
 
30
30
  ## Requirements
31
31
  - Ruby >= 2.1
32
+ - If you need to use old ruby, see [rtype-legacy](https://github.com/sputnikgugja/rtype-legacy) for ruby 1.9+
32
33
  - MRI
33
34
  - If C native extension is used. otherwise it is not required
34
35
  - JRuby (JRuby 9000+)
@@ -40,6 +41,7 @@ Test::invert(state: 0)
40
41
  - [Type checking for hash elements](#hash)
41
42
  - [Duck Typing](#duck-typing)
42
43
  - [Typed Array](#typed-array)
44
+ - [Numeric check](#special-behaviors). e.g. `Int >= 0`
43
45
  - Custom type behavior
44
46
  - ...
45
47
 
@@ -79,22 +81,21 @@ then, Rtype uses it. (**Do not** `require 'rtype-java'`)
79
81
  ## Usage
80
82
 
81
83
  ### Supported Type Behaviors
82
- - `Module`
83
- - Value must be of this module (`is_a?`)
84
+ - `Module` : Value must be of this module (`is_a?`)
84
85
  - `Any` : Alias for `BasicObject` (means Any Object)
85
86
  - `Boolean` : `true` or `false`
86
- - `Symbol`
87
- - Value must respond to a method with this name
88
- - `Regexp`
89
- - Value must match this regexp pattern
90
- - `Range`
91
- - Value must be included in this range
92
- - `Array`
93
- - Value can be any type in this array
87
+ - `Symbol` : Value must respond to a method with this name
88
+ - `Regexp` : Value must match this regexp pattern
89
+ - `Range` : Value must be included in this range
90
+ - `Array` : Value can be any type in this array
91
+ - `Proc` : Value must return a truthy value for this proc
92
+ - `true` : Value must be truthy
93
+ - `false` : Value must be falsy
94
+ - `nil` : Value must be nil
94
95
  - `Hash`
95
96
  - Value must be a hash
96
97
  - Each of elements must be valid
97
- - Value's keys must be equal to this hash's keys
98
+ - Keys of the value must be equal to keys of this hash
98
99
  - **String** key is **different** from **symbol** key
99
100
  - vs. Keyword arguments (e.g.)
100
101
  - `[{}]` is **not** hash argument. it is keyword argument, because its position is last
@@ -103,44 +104,9 @@ then, Rtype uses it. (**Do not** `require 'rtype-java'`)
103
104
  - `{}` is keyword argument. non-keyword arguments must be in array.
104
105
  - Of course, nested hash works
105
106
  - Example: [Hash](#hash)
106
- - `Proc`
107
- - Value must return a truthy value for this proc
108
- - `true`
109
- - Value must be truthy
110
- - `false`
111
- - Value must be falsy
112
- - `nil`
113
- - Value must be nil
114
107
 
115
- - Special Behaviors
116
- - `TypedArray` : Ensures value is an array with the type (type signature)
117
- - `Array::of(type)` (recommended)
118
- - or `Rtype::Behavior::TypedArray[type]`
119
- - Example: [TypedArray](#typed-array)
120
-
121
- - `Num, Int, Flo` : Numeric check
122
- - `Num/Int/Flo >/>=/</<=/== x`
123
- - e.g. `Num >= 2` means value must be a `Numeric` and >= 2
124
- - e.g. `Int >= 2` means value must be a `Integer` and >= 2
125
- - e.g. `Flo >= 2` means value must be a `Float` and >= 2
126
-
127
- - `And` : Ensures value is valid for all given types
128
- - `Rtype::and(*types)`, `Rtype::Behavior::And[*types]`
129
- - or `Array#comb`, `Object#and(*others)`
130
-
131
- - `Xor` : Ensures value is valid for only one of given types
132
- - `Rtype::xor(*types)`, `Rtype::Behavior::Xor[*types]`
133
- - or `Object#xor(*others)`
134
-
135
- - `Not` : Ensures value is not valid for all given types
136
- - `Rtype::not(*types)`, `Rtype::Behavior::Not[*types]`
137
- - or `Object#not`
138
-
139
- - `Nilable` : Value can be nil
140
- - `Rtype::nilable(type)`, `Rtype::Behavior::Nilable[type]`
141
- - or `Object#nilable`, `Object#or_nil`
142
-
143
- - You can create custom behavior by extending `Rtype::Behavior::Base`
108
+ - [Special Behaviors](#special-behaviors)
109
+ - `TypedArray`, `Num, Int, Flo`, `And`, `Xor`, `Not`, `Nilable`
144
110
 
145
111
  ### Examples
146
112
 
@@ -424,6 +390,36 @@ Example.new.method(:test).return_type
424
390
  # => Any
425
391
  ```
426
392
 
393
+ #### Special Behaviors
394
+ - `TypedArray` : Ensures value is an array with the type (type signature)
395
+ - `Array::of(type)` (recommended)
396
+ - or `Rtype::Behavior::TypedArray[type]`
397
+ - Example: [TypedArray](#typed-array)
398
+
399
+ - `Num, Int, Flo` : Numeric check
400
+ - `Num/Int/Flo >/>=/</<=/== x`
401
+ - e.g. `Num >= 2` means value must be a `Numeric` and >= 2
402
+ - e.g. `Int >= 2` means value must be a `Integer` and >= 2
403
+ - e.g. `Flo >= 2` means value must be a `Float` and >= 2
404
+
405
+ - `And` : Ensures value is valid for all given types
406
+ - `Rtype::and(*types)`, `Rtype::Behavior::And[*types]`
407
+ - or `Array#comb`, `Object#and(*others)`
408
+
409
+ - `Xor` : Ensures value is valid for only one of given types
410
+ - `Rtype::xor(*types)`, `Rtype::Behavior::Xor[*types]`
411
+ - or `Object#xor(*others)`
412
+
413
+ - `Not` : Ensures value is not valid for all given types
414
+ - `Rtype::not(*types)`, `Rtype::Behavior::Not[*types]`
415
+ - or `Object#not`
416
+
417
+ - `Nilable` : Value can be nil
418
+ - `Rtype::nilable(type)`, `Rtype::Behavior::Nilable[type]`
419
+ - or `Object#nilable`, `Object#or_nil`
420
+
421
+ - You can create custom behaviors by extending `Rtype::Behavior::Base`
422
+
427
423
  ## Documentation
428
424
  [RubyDoc.info](http://www.rubydoc.info/gems/rtype)
429
425
 
@@ -19,6 +19,14 @@ puts "Sig version: #{Sig::VERSION}"
19
19
  puts "Contracts version: #{Contracts::VERSION}"
20
20
  puts "Typecheck version: #{Typecheck::VERSION}"
21
21
 
22
+ if !Rtype::NATIVE_EXT_VERSION.nil?
23
+ puts "Rtype with native extension"
24
+ elsif !Rtype::JAVA_EXT_VERSION.nil?
25
+ puts "Rtype with java extension"
26
+ else
27
+ puts "Rtype without native extension"
28
+ end
29
+
22
30
  class PureTest
23
31
  def sum(x, y)
24
32
  x + y
@@ -189,4 +197,4 @@ Benchmark.ips do |x|
189
197
  end
190
198
 
191
199
  x.compare!
192
- end
200
+ end
Binary file
data/spec/rtype_spec.rb CHANGED
@@ -274,12 +274,12 @@ describe Rtype do
274
274
  describe 'Hash' do
275
275
  it "is right" do
276
276
  klass.send :rtype, :return_arg, [{k: Integer}, {}] => Any
277
- instance.return_arg({k: 123}, {})
277
+ instance.return_arg({k: 123})
278
278
  end
279
279
  it "is wrong args" do
280
280
  klass.send :rtype, :return_arg, [{k: Integer}, {}] => Any
281
281
  expect {
282
- instance.return_arg({k: "str"}, {})
282
+ instance.return_arg({k: "str"})
283
283
  }.to raise_error Rtype::ArgumentTypeError
284
284
  end
285
285
  it "is wrong result" do
@@ -556,15 +556,15 @@ describe Rtype do
556
556
 
557
557
  it 'two hash' do
558
558
  klass.send :rtype, :two_args, [{k: Integer}, {k: Integer}, {}] => Any
559
- instance.two_args({k: 123}, {k: 456}, {})
559
+ instance.two_args({k: 123}, {k: 456})
560
560
  expect {
561
- instance.two_args({k: 123}, {}, {})
561
+ instance.two_args({k: 123}, {})
562
562
  }.to raise_error Rtype::ArgumentTypeError
563
563
  expect {
564
- instance.two_args({k: 123}, 456, {})
564
+ instance.two_args({k: 123}, 456)
565
565
  }.to raise_error Rtype::ArgumentTypeError
566
566
  expect {
567
- instance.two_args({k: 123}, {k: "str"}, {})
567
+ instance.two_args({k: 123}, {k: "str"})
568
568
  }.to raise_error Rtype::ArgumentTypeError
569
569
  end
570
570
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rtype-java
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.4
4
+ version: 0.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sputnik Gugja
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-27 00:00:00.000000000 Z
11
+ date: 2016-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rtype
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.6.4
19
+ version: 0.6.5
20
20
  type: :runtime
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: 0.6.4
26
+ version: 0.6.5
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement