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.
141 142 143 |
# File 'lib/spree/admin/engine.rb', line 141 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
176 177 178 179 180 181 182 |
# File 'lib/spree/admin/engine.rb', line 176 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
171 172 173 |
# File 'lib/spree/admin/engine.rb', line 171 def context?(name) @contexts.key?(name.to_sym) end |
#contexts ⇒ Array<Symbol>
List all registered contexts
164 165 166 |
# File 'lib/spree/admin/engine.rb', line 164 def contexts @contexts.keys end |
#get_context(name) ⇒ Spree::Admin::Navigation
Get a registered navigation context
157 158 159 160 |
# File 'lib/spree/admin/engine.rb', line 157 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
148 149 150 151 |
# File 'lib/spree/admin/engine.rb', line 148 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
184 185 186 |
# File 'lib/spree/admin/engine.rb', line 184 def respond_to_missing?(method_name, include_private = false) method_name.to_s.end_with?('=') ? false : context?(method_name) end |