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  |