Class: Spree::Admin::Engine::NavigationEnvironment
- Inherits:
-
Object
- Object
- Spree::Admin::Engine::NavigationEnvironment
- Defined in:
- lib/spree/admin/engine.rb
Instance Method Summary collapse
-
#context?(name) ⇒ Boolean
Check if a context exists.
-
#contexts ⇒ Array<Symbol>
List all registered contexts.
-
#get_context(name) ⇒ Spree::Admin::Navigation
Get a registered navigation context.
-
#initialize ⇒ NavigationEnvironment
constructor
A new instance of NavigationEnvironment.
-
#method_missing(method_name, *args) ⇒ Object
Define accessor methods for predefined and custom contexts.
-
#register_context(name) ⇒ Spree::Admin::Navigation
Register a new navigation context.
- #respond_to_missing?(method_name, include_private = false) ⇒ Boolean
Constructor Details
#initialize ⇒ NavigationEnvironment
Returns a new instance of NavigationEnvironment.
139 140 141 |
# File 'lib/spree/admin/engine.rb', line 139 def initialize @contexts = {} end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args) ⇒ Object
Define accessor methods for predefined and custom contexts
174 175 176 177 178 179 180 |
# File 'lib/spree/admin/engine.rb', line 174 def method_missing(method_name, *args) if method_name.to_s.end_with?('=') super else get_context(method_name) end end |
Instance Method Details
#context?(name) ⇒ Boolean
Check if a context exists
169 170 171 |
# File 'lib/spree/admin/engine.rb', line 169 def context?(name) @contexts.key?(name.to_sym) end |
#contexts ⇒ Array<Symbol>
List all registered contexts
162 163 164 |
# File 'lib/spree/admin/engine.rb', line 162 def contexts @contexts.keys end |
#get_context(name) ⇒ Spree::Admin::Navigation
Get a registered navigation context
155 156 157 158 |
# File 'lib/spree/admin/engine.rb', line 155 def get_context(name) name = name.to_sym @contexts[name] || raise(NoMethodError, "Navigation context '#{name}' has not been registered. Use Spree.admin.navigation.register_context(:#{name}) first.") end |
#register_context(name) ⇒ Spree::Admin::Navigation
Register a new navigation context
146 147 148 149 |
# File 'lib/spree/admin/engine.rb', line 146 def register_context(name) name = name.to_sym @contexts[name] ||= Spree::Admin::Navigation.new(name) end |
#respond_to_missing?(method_name, include_private = false) ⇒ Boolean
182 183 184 |
# File 'lib/spree/admin/engine.rb', line 182 def respond_to_missing?(method_name, include_private = false) method_name.to_s.end_with?('=') ? false : context?(method_name) end |