watir_model 0.4.1 → 0.4.2

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: 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