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:.
-
#registered_details ⇒ Object
Returns the value of attribute registered_details.
-
#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
Methods included from DetailsCache
Constructor Details
#initialize(view_paths, details = {}, prefixes = []) ⇒ LookupContext
Returns a new instance of LookupContext.
216 217 218 219 220 221 222 223 224 |
# File 'lib/action_view/lookup_context.rb', line 216 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:
16 17 18 |
# File 'lib/action_view/lookup_context.rb', line 16 def prefixes @prefixes end |
#registered_details ⇒ Object
Returns the value of attribute registered_details.
18 19 20 |
# File 'lib/action_view/lookup_context.rb', line 18 def registered_details @registered_details end |
#rendered_format ⇒ Object
:nodoc:
16 17 18 |
# File 'lib/action_view/lookup_context.rb', line 16 def rendered_format @rendered_format end |
Class Method Details
.register_detail(name, &block) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/action_view/lookup_context.rb', line 21 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[:#{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
226 227 228 |
# File 'lib/action_view/lookup_context.rb', line 226 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.
247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 |
# File 'lib/action_view/lookup_context.rb', line 247 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.
267 268 269 |
# File 'lib/action_view/lookup_context.rb', line 267 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.
274 275 276 277 278 279 280 281 |
# File 'lib/action_view/lookup_context.rb', line 274 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
230 231 232 233 234 235 |
# File 'lib/action_view/lookup_context.rb', line 230 def with_prepended_formats(formats) details = @details.dup details[:formats] = formats self.class.new(@view_paths, details, @prefixes) end |