dato 0.3.15 → 0.3.16

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