dato 0.3.15 → 0.3.16

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: 0d034c59bfa20a0dec3f23b9f74d6ece9da130f2
4
- data.tar.gz: ab5566ed36c9fec2e80f8dbc040a33d19359c94f
3
+ metadata.gz: c14a63b1e904638d14897d5091af398fb1187f71
4
+ data.tar.gz: 4de50e385d99f41cb99ac08ebba0547d209b3e0b
5
5
  SHA512:
6
- metadata.gz: 376075bbd1a06c4c37034c001e24be9dcab13b1de80d61b5479883bce71696ac606ac3eda83b2c47db2ba495c51417f3e93bd3bb7b4278ce6d9819b2b4c3b3d3
7
- data.tar.gz: 405c4b7e80df6951a7a7c7038c23daddb97b6ae2bed26ff4540eee53791c0bafbf483bfc516950d36f630b74c4c8f17af32f724a30f682ba32debdea8c71b601
6
+ metadata.gz: 7f09bb97476d5b9e598cb3a8ef71e00c5635583a73b77a6978059516ef389ac96d9d1a8db1718e7f23e8617d67884cde7bf23461b93832c8dc08789b3b024801
7
+ data.tar.gz: ed9d5bddae54dadc1d07c482e20cb32aba7a2e8237ce9e6e151cfb02103b0f6d4e55832de80b99691216775fce7ab7181c4b0bbeb06106105c1d739a2ad23df0
@@ -122,8 +122,14 @@ module Dato
122
122
  field_type = field.field_type
123
123
  type_klass_name = "::Dato::Local::FieldType::#{field_type.camelize}"
124
124
  type_klass = type_klass_name.safe_constantize
125
+
125
126
  value = if field.localized
126
- (entity.send(method) || {})[I18n.locale]
127
+ obj = entity.send(method) || {}
128
+
129
+ locale_with_value = I18n.fallbacks[I18n.locale]
130
+ .find { |locale| obj[locale] }
131
+
132
+ obj[locale_with_value || I18n.locale]
127
133
  else
128
134
  entity.send(method)
129
135
  end
@@ -150,14 +156,18 @@ module Dato
150
156
  else
151
157
  super
152
158
  end
153
- rescue NoMethodError
154
- message = []
155
- message << "Undefined method `#{method}`"
156
- message << "Available fields for a `#{item_type.api_key}` item:"
157
- message += fields.map do |f|
158
- "* .#{f.api_key}"
159
+ rescue NoMethodError => e
160
+ if e.name === method
161
+ message = []
162
+ message << "Undefined method `#{method}`"
163
+ message << "Available fields for a `#{item_type.api_key}` item:"
164
+ message += fields.map do |f|
165
+ "* .#{f.api_key}"
166
+ end
167
+ raise NoMethodError, message.join("\n")
168
+ else
169
+ raise e
159
170
  end
160
- raise NoMethodError, message.join("\n")
161
171
  end
162
172
 
163
173
  def respond_to_missing?(method, include_private = false)
@@ -54,7 +54,12 @@ module Dato
54
54
 
55
55
  def read_attribute(method, type_klass, localized)
56
56
  value = if localized
57
- (entity.send(method) || {})[I18n.locale]
57
+ obj = entity.send(method) || {}
58
+
59
+ locale_with_value = I18n.fallbacks[I18n.locale]
60
+ .find { |locale| obj[locale] }
61
+
62
+ obj[locale_with_value || I18n.locale]
58
63
  else
59
64
  entity.send(method)
60
65
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Dato
3
- VERSION = '0.3.15'
3
+ VERSION = '0.3.16'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dato
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.15
4
+ version: 0.3.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Verna
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-29 00:00:00.000000000 Z
11
+ date: 2017-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler