trafaret 1.5.4 → 1.5.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: 37dbb432e6d847e95f3120d597d9a9043410baeb
4
- data.tar.gz: e487439ce2948685518e053abdde06fa2ea5a029
3
+ metadata.gz: 705d3489ea9f5859edca572044700d365e8a6db4
4
+ data.tar.gz: d0644a20d15ca0e535540f9368af10ee98d3b135
5
5
  SHA512:
6
- metadata.gz: 323959d139b67948dd18e2a69f3ea9eadf04ac4bebf1aaf58e56b4c8da829299b3639b194846bca36fb2c415ca82e2f04aa2f1150b21b402753f683d39e01c01
7
- data.tar.gz: e05936c0649eccd16cd5d88c2a404b32410ef4bca7cdef53a48b9d81f67eb742101870f1c1b9bd63e236cbc9b2529ec6b57f4ce0d3e61436f60fba5ac10a8306
6
+ metadata.gz: 75c2f71ea8c22759ca1d7e54b6036891b0ef3515404a57f4e9a5bd0239ac3b44502e493c40c008379e6abba6bea740356263b2f9022d5ca7ee5d4c3287613938
7
+ data.tar.gz: 3980d87341dd76854286494eacf7795dc1ece42eda01168f3873128ed7dd9bf36d895532f6a51b151038a80bb411a06dcc25a892c4ff15f72bd13e52d6f90bb7
data/README.rst CHANGED
@@ -26,10 +26,43 @@ You can attach converter to trafaret with ``to``::
26
26
 
27
27
  T.string(regex: /\A\d+\Z/).to { |match| match.string.to_i }.call('123')
28
28
 
29
+ T.string(regex: /\A\d+\Z/).to(&:string).to(&:to_i).call('123')
30
+
29
31
  Any callable can be used as ``Trafaret`` while it use simple convention. If data ok, you return something, if it wrong
30
32
  you must return ``Trafaret::Error`` instance with message. Correct message can be a string or a Hash with simple keys and Errors values::
31
33
 
32
34
  irb> (T.string & T.proc { |data| data == 'karramba' ? 'Bart' : T.failure('Not a Bart text!')}).call ('ku')
33
35
  => #<Trafaret::Error("Not a Bart text!")>
34
36
  irb> (T.string & T.proc { |data| data == 'karramba' ? 'Bart' : T.failure('Not a Bart text!')}).call ('karramba')
35
- => "Bart"
37
+ => "Bart"
38
+
39
+ Numeric
40
+ -------
41
+
42
+ Two trafarets Integer and Float supports common interface. In options this is parameters `lt`, `lte`, `gt`, `gte`.
43
+
44
+ Example::
45
+
46
+ T.integer(gt: 3, lt: 5).call(4) == 4
47
+ T.float(gt:3, lt: 5).call(4.3) == 4.3
48
+
49
+ String
50
+ ------
51
+
52
+ Parameters `allow_blank`, `min_length`, `max_length`. And special option `regex`.
53
+
54
+ Example::
55
+
56
+ T.string.call('kuku') == 'kuku'
57
+ T.string(regex: /\Akuku\z/).call('kuku') == 'kuku'
58
+
59
+ If you use custom converter block, you will get `Match` instead of `String`, so you can use regex result::
60
+
61
+ T.string(regex: /\Ayear=(\d+),month=(\d+),day=(\d+)\z/).to {|m| Date.new(*m.to_a[1..3].map(&:to_i)) }.call('year=2012,month=5,day=4').to_s == '2012-05-04'
62
+
63
+ Array
64
+ -----
65
+
66
+ Get one important parameter `validator` that will be applied to every array element::
67
+
68
+ T.array(validator: :integer).call(['1','2','3']) == [1,2,3]
@@ -8,7 +8,7 @@ module Trafaret
8
8
  when ::Array
9
9
  from_array(from)
10
10
  when ::Symbol
11
- Trafaret.get_validator from
11
+ Trafaret.get_instantiated_validator from
12
12
  when Trafaret::Validator
13
13
  from
14
14
  when ::Proc
@@ -9,5 +9,16 @@ module Trafaret
9
9
  def inspect
10
10
  "#<Trafaret::Error(#{message.inspect})>"
11
11
  end
12
+
13
+ def dump
14
+ case @message
15
+ when ::Hash
16
+ Hash[@message.map { |k, v| [k, v.dump] }]
17
+ when ::Array
18
+ @message.map &:dump
19
+ else
20
+ @message
21
+ end
22
+ end
12
23
  end
13
24
  end
@@ -21,6 +21,10 @@ module Trafaret
21
21
  return failure('Too small') if @options[:gte] && val < @options[:gte]
22
22
  data
23
23
  end
24
+
25
+ def convert(data)
26
+ try_convert(data)
27
+ end
24
28
  end
25
29
 
26
30
  class Integer < Numeric
@@ -5,9 +5,9 @@ module Trafaret
5
5
  class ADT < Validator
6
6
  attr_reader :validators
7
7
 
8
- def initialize(*args)
9
- args = args.first if args.first.is_a? ::Array
10
- @validators = args.map { |v| Trafaret.get_instantiated_validator(v) }
8
+ def prepare(*args)
9
+ @args = @args.first if @args.first.is_a? ::Array
10
+ @validators = @args.map { |v| Trafaret.get_instantiated_validator(v) }
11
11
  end
12
12
  end
13
13
 
@@ -1,3 +1,3 @@
1
1
  module Trafaret
2
- VERSION = "1.5.4"
2
+ VERSION = "1.5.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trafaret
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.4
4
+ version: 1.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikhail Krivushin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-16 00:00:00.000000000 Z
11
+ date: 2014-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport