Class: ActionView::LookupContext
- Inherits:
-
Object
- Object
- ActionView::LookupContext
- Includes:
- Accessors, DetailsCache, ViewPaths
- Defined in:
- lib/action_view/lookup_context.rb
Overview
Action View Lookup Context
LookupContext
is the object responsible for holding all information required for looking up templates, i.e. view paths and details. LookupContext
is also responsible for generating a key, given to view paths, used in the resolver cache lookup. Since this key is generated only once during the request, it speeds up all cache accesses.
Defined Under Namespace
Modules: Accessors, DetailsCache, ViewPaths Classes: DetailsKey
Constant Summary
Constants included from Accessors
Instance Attribute Summary collapse
-
#prefixes ⇒ Object
:nodoc:.
-
#rendered_format ⇒ Object
:nodoc:.
Attributes included from ViewPaths
#html_fallback_for_js, #view_paths
Attributes included from DetailsCache
Class Method Summary collapse
Instance Method Summary collapse
- #digest_cache ⇒ Object
-
#formats=(values) ⇒ Object
Override formats= to expand [“/”] values and automatically add :html as fallback to :js.
-
#initialize(view_paths, details = {}, prefixes = []) ⇒ LookupContext
constructor
A new instance of LookupContext.
-
#locale ⇒ Object
Override locale to return a symbol instead of array.
-
#locale=(value) ⇒ Object
Overload locale= to also set the I18n.locale.
- #with_prepended_formats(formats) ⇒ Object
Methods included from ViewPaths
#any?, #exists?, #find, #find_all, #with_fallbacks
Methods included from DetailsCache
Constructor Details
#initialize(view_paths, details = {}, prefixes = []) ⇒ LookupContext
Returns a new instance of LookupContext.
250 251 252 253 254 255 256 257 258 |
# File 'lib/action_view/lookup_context.rb', line 250 def initialize(view_paths, details = {}, prefixes = []) @details_key = nil @digest_cache = nil @cache = true @prefixes = prefixes @details = initialize_details({}, details) @view_paths = build_view_paths(view_paths) end |
Instance Attribute Details
#prefixes ⇒ Object
:nodoc:
18 19 20 |
# File 'lib/action_view/lookup_context.rb', line 18 def prefixes @prefixes end |
#rendered_format ⇒ Object
:nodoc:
18 19 20 |
# File 'lib/action_view/lookup_context.rb', line 18 def rendered_format @rendered_format end |
Class Method Details
.register_detail(name, &block) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/action_view/lookup_context.rb', line 26 def self.register_detail(name, &block) registered_details << name Accessors::DEFAULT_PROCS[name] = block Accessors.define_method(:"default_#{name}", &block) Accessors.module_eval <<-METHOD, __FILE__, __LINE__ + 1 def #{name} @details.fetch(:#{name}, []) end def #{name}=(value) value = value.present? ? Array(value) : default_#{name} _set_detail(:#{name}, value) if value != @details[:#{name}] end METHOD end |
Instance Method Details
#digest_cache ⇒ Object
260 261 262 |
# File 'lib/action_view/lookup_context.rb', line 260 def digest_cache @digest_cache ||= DetailsKey.digest_cache(@details) end |
#formats=(values) ⇒ Object
Override formats= to expand [“/”] values and automatically add :html as fallback to :js.
281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 |
# File 'lib/action_view/lookup_context.rb', line 281 def formats=(values) if values values = values.dup values.concat(default_formats) if values.delete "*/*" values.uniq! invalid_values = (values - Template::Types.symbols) unless invalid_values.empty? raise ArgumentError, "Invalid formats: #{invalid_values.map(&:inspect).join(", ")}" end if values == [:js] values << :html @html_fallback_for_js = true end end super(values) end |
#locale ⇒ Object
Override locale to return a symbol instead of array.
301 302 303 |
# File 'lib/action_view/lookup_context.rb', line 301 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 has a copy of the original I18n configuration and it’s acting as proxy, which we need to skip.
308 309 310 311 312 313 314 315 |
# File 'lib/action_view/lookup_context.rb', line 308 def locale=(value) if value config = I18n.config.respond_to?(:original_config) ? I18n.config.original_config : I18n.config config.locale = value end super(default_locale) end |
#with_prepended_formats(formats) ⇒ Object
264 265 266 267 268 269 |
# File 'lib/action_view/lookup_context.rb', line 264 def with_prepended_formats(formats) details = @details.dup details[:formats] = formats self.class.new(@view_paths, details, @prefixes) end |