Module: ActionView::LookupContext::Details
- Included in:
- ActionView::LookupContext
- Defined in:
- lib/action_view/lookup_context.rb
Instance Method Summary collapse
-
#details_key ⇒ Object
Calculate the details key.
-
#formats=(values) ⇒ Object
Overload formats= to reject [“/”] values.
-
#freeze_formats(formats, unless_frozen = false) ⇒ Object
Freeze the current formats in the lookup context.
-
#locale ⇒ Object
Overload locale to return a symbol instead of array.
-
#locale=(value) ⇒ Object
Overload locale= to also set the I18n.locale.
-
#skip_default_locale! ⇒ Object
Do not use the default locale on template lookup.
-
#update_details(new_details) ⇒ Object
Update the details keys by merging the given hash into the current details hash.
-
#with_layout_format ⇒ Object
A method which only uses the first format in the formats array for layout lookup.
Instance Method Details
#details_key ⇒ Object
Calculate the details key. Remove the handlers from calculation to improve performance since the user cannot modify it explicitly.
135 136 137 |
# File 'lib/action_view/lookup_context.rb', line 135 def details_key #:nodoc: @details_key ||= DetailsKey.get(@details) end |
#formats=(values) ⇒ Object
Overload formats= to reject [“/”] values.
149 150 151 152 153 154 155 156 |
# File 'lib/action_view/lookup_context.rb', line 149 def formats=(values) if values && values.size == 1 value = values.first values = nil if value == "*/*" values << :html if value == :js end super(values) end |
#freeze_formats(formats, unless_frozen = false) ⇒ Object
Freeze the current formats in the lookup context. By freezing them, you are guaranteeing that next template lookups are not going to modify the formats. The controller can also use this, to ensure that formats won’t be further modified (as it does in respond_to blocks).
142 143 144 145 146 |
# File 'lib/action_view/lookup_context.rb', line 142 def freeze_formats(formats, unless_frozen=false) #:nodoc: return if unless_frozen && @frozen_formats self.formats = formats @frozen_formats = true end |
#locale ⇒ Object
Overload locale to return a symbol instead of array.
165 166 167 |
# File 'lib/action_view/lookup_context.rb', line 165 def locale @details[:locale].first end |
#locale=(value) ⇒ Object
Overload locale= to also set the I18n.locale. If the current I18n.config object responds to original_config, it means that it’s has a copy of the original I18n configuration and it’s acting as proxy, which we need to skip.
172 173 174 175 176 177 178 179 |
# File 'lib/action_view/lookup_context.rb', line 172 def locale=(value) if value config = I18n.config.respond_to?(:original_config) ? I18n.config.original_config : I18n.config config.locale = value end super(@skip_default_locale ? I18n.locale : _locale_defaults) end |
#skip_default_locale! ⇒ Object
Do not use the default locale on template lookup.
159 160 161 162 |
# File 'lib/action_view/lookup_context.rb', line 159 def skip_default_locale! @skip_default_locale = true self.locale = nil end |
#update_details(new_details) ⇒ Object
Update the details keys by merging the given hash into the current details hash. If a block is given, the details are modified just during the execution of the block and reverted to the previous value after.
201 202 203 204 205 206 207 208 209 210 211 212 213 214 |
# File 'lib/action_view/lookup_context.rb', line 201 def update_details(new_details) old_details = @details.dup registered_detail_setters.each do |key, setter| send(setter, new_details[key]) if new_details.key?(key) end begin yield ensure @details_key = nil @details = old_details end end |
#with_layout_format ⇒ Object
A method which only uses the first format in the formats array for layout lookup. This method plays straight with instance variables for performance reasons.
183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
# File 'lib/action_view/lookup_context.rb', line 183 def with_layout_format if formats.size == 1 yield else old_formats = formats _set_detail(:formats, formats[0,1]) begin yield ensure _set_detail(:formats, old_formats) end end end |