module Hanami::Extensions::View::Context
View
context for views in Hanami
apps.
@api public @since 2.1.0
Public Class Methods
context_class(slice)
click to toggle source
Returns a context class for the given slice. If a context class is not defined, defines a class named ‘Views::Context` within the slice’s namespace.
@api private @since 2.1.0
# File lib/hanami/extensions/view/context.rb, line 19 def context_class(slice) views_namespace = views_namespace(slice) if views_namespace.const_defined?(:Context) return views_namespace.const_get(:Context) end views_namespace.const_set(:Context, Class.new(context_superclass(slice)).tap { |klass| klass.configure_for_slice(slice) }) end
Private Class Methods
context_superclass(slice)
click to toggle source
@api private @since 2.1.0
# File lib/hanami/extensions/view/context.rb, line 35 def context_superclass(slice) return Hanami::View::Context if Hanami.app.equal?(slice) begin slice.inflector.constantize( slice.inflector.camelize("#{slice.app.slice_name.name}/views/context") ) rescue NameError => e raise e unless %i[Views Context].include?(e.name) Hanami::View::Context end end
views_namespace(slice)
click to toggle source
@api private @since 2.1.0
# File lib/hanami/extensions/view/context.rb, line 51 def views_namespace(slice) # TODO: this could be moved into the top-level Extensions::View if slice.namespace.const_defined?(:Views) slice.namespace.const_get(:Views) else slice.namespace.const_set(:Views, Module.new) end end