vexile 1.0.4 → 1.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b0a45838d0f62377e8b62ac0daa4434f21d09a35
4
+ data.tar.gz: ccad5ba68da21b801ba6c2d19706cdb40de239ee
5
+ SHA512:
6
+ metadata.gz: 579fad69270a43266089226e08bc21bce2c1c8848b6d464d0c43ebacb987dc4bb8e9d9835dc6b73bd582eb613565731684895ca0a48b37e229a0710689bf8ec8
7
+ data.tar.gz: 4b8dc4672b70bb7d2d4e49ccbb047f49600894b62bafcb8e48283467126829f9a4baba379ea76158886f6c361121791dcb155faf7d89a72b9001b7b36958bb94
data/README.md CHANGED
@@ -18,8 +18,78 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ Just declare some classes using such DSL:
22
22
 
23
+ class A
24
+ include Vexile::DSL
25
+ end
26
+
27
+ class B
28
+ include Vexile::DSL
29
+ end
30
+
31
+ class C
32
+ include Vexile::DSL
33
+ end
34
+
35
+ and then, if you have deep level hashes something like {"a": {"b":{"param1":"value1"}, "cs": [{"param2":2}, {"param2": 3}]}}}
36
+ and if you know it's structure, you can modify classes somehow like that:
37
+
38
+ class A
39
+ include Vexile::DSL
40
+ has_one :b
41
+ has_many :cs
42
+ end
43
+
44
+ class B
45
+ include Vexile::DSL
46
+ attr_accessor :param1
47
+ end
48
+
49
+ class C
50
+ include Vexile::DSL
51
+ attr_accessor :param2
52
+ end
53
+
54
+ then create instance of top level class and load hash to it:
55
+
56
+ a = A.new
57
+ a.load_params({"b"=>{"param1"=>"value1"}, "cs"=> [{"param2"=>"atata"}, {"param2"=> 3}]})
58
+
59
+ Now you have an instances tree initialized:
60
+
61
+ a.b # => <B ... @param1="value1" ... >
62
+ a.cs # => [#<C ... @param2=2 ...>, #<C ... @param2=3 ...>]
63
+
64
+ So you can also add activemodel validations:
65
+
66
+ class A
67
+ include Vexile::DSL
68
+ has_one :b
69
+ has_many :cs
70
+ validates :cs, :recursive => true # validator that checks any loaded C instance
71
+ end
72
+
73
+ class B
74
+ include Vexile::DSL
75
+ attr_accessor :param1
76
+ validates :param1, :numericality => true
77
+ end
78
+
79
+ class C
80
+ include Vexile::DSL
81
+ attr_accessor :param2
82
+ validates :param2, :numericality => true
83
+ end
84
+
85
+ So
86
+
87
+ a.valid? # => false #
88
+
89
+ because of NumericalityValidator added
90
+
91
+ a.errors # => ... @messages={:cs=>["is invalid in #<C:0x007f94729ade28> : {:param2=>[\"is not a number\"]}"...
92
+
23
93
  ## Contributing
24
94
 
25
95
  1. Fork it
@@ -1,3 +1,3 @@
1
1
  module Vexile
2
- VERSION = "1.0.4"
2
+ VERSION = "1.0.5"
3
3
  end
@@ -11,7 +11,7 @@ describe Vexile do
11
11
  class B
12
12
  include Vexile::DSL
13
13
  attr_accessor :p3, :p4
14
- validates :p4, :format => /^test\d+$/
14
+ validates :p4, :format => /\Atest\d+\z/
15
15
  end
16
16
 
17
17
  class C
@@ -16,8 +16,8 @@ Gem::Specification.new do |gem|
16
16
  gem.require_paths = ["lib"]
17
17
  gem.version = Vexile::VERSION
18
18
 
19
- gem.add_dependency 'activemodel', '~> 3'
20
- gem.add_dependency 'activesupport', '~> 3'
19
+ gem.add_dependency 'activemodel', '>= 3'
20
+ gem.add_dependency 'activesupport', '>= 3'
21
21
  gem.add_dependency 'bzproxies', '>= 0.1.11'
22
22
  gem.add_dependency 'addressable'
23
23
  gem.add_development_dependency "rspec"
metadata CHANGED
@@ -1,99 +1,87 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vexile
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
5
- prerelease:
4
+ version: 1.0.5
6
5
  platform: ruby
7
6
  authors:
8
7
  - Alexander Kostrov
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-01-20 00:00:00.000000000 Z
11
+ date: 2013-07-06 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activemodel
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '3'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '3'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: activesupport
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ~>
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '3'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ~>
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '3'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: bzproxies
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: 0.1.11
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: 0.1.11
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: addressable
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: rspec
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  description: Auto generating ActiveModel validations for hashes
95
- email: !binary |-
96
- Ym9tYmF6b29rQGdtYWlsLmNvbQ==
84
+ email: bombazook@gmail.com
97
85
  executables: []
98
86
  extensions: []
99
87
  extra_rdoc_files: []
@@ -114,28 +102,28 @@ files:
114
102
  - vexile.gemspec
115
103
  homepage: http://malstream.info
116
104
  licenses: []
105
+ metadata: {}
117
106
  post_install_message:
118
107
  rdoc_options: []
119
108
  require_paths:
120
109
  - lib
121
110
  required_ruby_version: !ruby/object:Gem::Requirement
122
- none: false
123
111
  requirements:
124
- - - ! '>='
112
+ - - '>='
125
113
  - !ruby/object:Gem::Version
126
114
  version: '0'
127
115
  required_rubygems_version: !ruby/object:Gem::Requirement
128
- none: false
129
116
  requirements:
130
- - - ! '>='
117
+ - - '>='
131
118
  - !ruby/object:Gem::Version
132
119
  version: '0'
133
120
  requirements: []
134
121
  rubyforge_project:
135
- rubygems_version: 1.8.24
122
+ rubygems_version: 2.0.3
136
123
  signing_key:
137
- specification_version: 3
124
+ specification_version: 4
138
125
  summary: ActiveModel validations for hashes
139
126
  test_files:
140
127
  - spec/main_spec.rb
141
128
  - spec/spec_helper.rb
129
+ has_rdoc: