watir_model 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 97265c57a19f28001518080cb987a0444e883cb3
4
- data.tar.gz: 5119b50288ccba390ea7d4aa3074e57cf6f63940
3
+ metadata.gz: 4904880adbf6b85baeeff411bb114b8c643d1aa3
4
+ data.tar.gz: 4e631bd91990116e3dd870bbb2fab80d3e2b8c03
5
5
  SHA512:
6
- metadata.gz: ce1e7c651914ca25400663e2e0c0c2072f6b0caa0dd4102cc089f1b7c7d7470a8cea540e7e98353fdc402a19e6cd6753339813de77a5e6e670a59a356e8a9eda
7
- data.tar.gz: db4c7232c9884d4e8064f021f1ce78761c45cb02cca7a88137d1dda65893d59525d8641d1b27924c7b17130b95718678fbf36edb731a5e875a0bc297c5e0c478
6
+ metadata.gz: 6967901d8c92c031591f026f99de26320a97007b3f10dbbac1389f554e6f929e2856c9a080f516c952f5a44de8e3d6a726f1787bbfdd8c40d21d7e59d80a6ae5
7
+ data.tar.gz: 4e7b64c250dfb22c02c7fc22cfc07fb525d88618af86b2af062c0bc437150f6bd26820536b280950a0d66ff2dd0274f0970ee0552aaeb01b001bc98bca676165
data/CHANGES.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### 0.4.2 (2017-12-27)
2
+
3
+ * support for `:api` and `#to_api` for outputting JSON with alternate keys
4
+
1
5
  ### 0.4.1 (2017-12-26)
2
6
 
3
7
  * support for key aliases to work with `#convert`
data/lib/watir_model.rb CHANGED
@@ -8,7 +8,7 @@ class WatirModel
8
8
  class << self
9
9
  include YmlReader
10
10
 
11
- attr_writer :keys, :aliases, :data_types, :defaults
11
+ attr_writer :keys, :aliases, :data_types, :defaults, :apis
12
12
 
13
13
  def keys
14
14
  @keys ||= []
@@ -22,6 +22,10 @@ class WatirModel
22
22
  @data_types ||= {}
23
23
  end
24
24
 
25
+ def apis
26
+ @apis ||= {}
27
+ end
28
+
25
29
  def defaults
26
30
  @defaults ||= {}
27
31
  end
@@ -29,14 +33,16 @@ class WatirModel
29
33
  def inherited(subclass)
30
34
  subclass.keys = keys.dup
31
35
  subclass.aliases = aliases.dup
36
+ subclass.apis = apis.dup
32
37
  subclass.defaults = defaults.dup
33
38
  subclass.data_types = data_types.dup
34
39
  end
35
40
 
36
- def key(symbol, data_type: nil, aliases: [], &block)
41
+ def key(symbol, data_type: nil, aliases: [], api: nil, &block)
37
42
  keys << symbol unless @keys.include? symbol
38
43
  aliases.each { |alias_key| self.aliases[alias_key] = symbol }
39
44
  attr_accessor symbol
45
+ apis[api] = symbol if api
40
46
  data_types[symbol] = data_type if data_type
41
47
  defaults[symbol] = block if block
42
48
  end
@@ -78,7 +84,7 @@ class WatirModel
78
84
 
79
85
  def convert(hash, *args)
80
86
  hash.deep_symbolize_keys!
81
- filtered = hash.select { |k| keys.include?(k) || aliases.keys.include?(k) }
87
+ filtered = hash.select { |k| (keys + aliases.keys + apis.keys).include?(k) }
82
88
  model = new(filtered)
83
89
  args.each do |key|
84
90
  model.instance_eval do
@@ -129,6 +135,10 @@ class WatirModel
129
135
  hash[aliases[alias_key]] = hash.delete(alias_key)
130
136
  end
131
137
 
138
+ (hash.keys & apis.keys).each do |api_key|
139
+ hash[apis[api_key]] = hash.delete(api_key)
140
+ end
141
+
132
142
  unknown = hash.keys - keys
133
143
  if unknown.count > 0
134
144
  raise ArgumentError, "unknown keyword#{'s' if unknown.count > 1}: #{unknown.join ', '}"
@@ -146,6 +156,10 @@ class WatirModel
146
156
  self.class.aliases
147
157
  end
148
158
 
159
+ def apis
160
+ self.class.apis
161
+ end
162
+
149
163
  def [] key
150
164
  send key
151
165
  end
@@ -164,6 +178,14 @@ class WatirModel
164
178
  end
165
179
  end
166
180
 
181
+ def to_api
182
+ hash = to_hash
183
+ apis.each do |key, value|
184
+ hash[key] = hash.delete(value)
185
+ end
186
+ hash.to_json
187
+ end
188
+
167
189
  private
168
190
 
169
191
  def default_value(key, block)
data/watir_model.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "watir_model"
5
- spec.version = "0.4.1"
5
+ spec.version = "0.4.2"
6
6
  spec.authors = ["Titus Fortner"]
7
7
  spec.email = ["titusfortner@gmail.com"]
8
8
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: watir_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Titus Fortner
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-27 00:00:00.000000000 Z
11
+ date: 2017-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport