Module: Hanami::View
- Includes:
- Utils::ClassAttribute
- Defined in:
- lib/hanami/view.rb,
lib/hanami/view/dsl.rb,
lib/hanami/view/errors.rb,
lib/hanami/view/escape.rb,
lib/hanami/view/version.rb,
lib/hanami/view/template.rb,
lib/hanami/view/rendering.rb,
lib/hanami/view/inheritable.rb,
lib/hanami/view/configuration.rb,
lib/hanami/view/rendering/scope.rb,
lib/hanami/view/rendering/options.rb,
lib/hanami/view/rendering/partial.rb,
lib/hanami/view/rendering/registry.rb,
lib/hanami/view/rendering/subscope.rb,
lib/hanami/view/rendering/template.rb,
lib/hanami/view/rendering/null_view.rb,
lib/hanami/view/rendering/null_local.rb,
lib/hanami/view/rendering/null_layout.rb,
lib/hanami/view/rendering/view_finder.rb,
lib/hanami/view/rendering/layout_scope.rb,
lib/hanami/view/rendering/partial_file.rb,
lib/hanami/view/rendering/layout_finder.rb,
lib/hanami/view/rendering/null_template.rb,
lib/hanami/view/rendering/template_name.rb,
lib/hanami/view/rendering/partial_finder.rb,
lib/hanami/view/rendering/layout_registry.rb,
lib/hanami/view/rendering/template_finder.rb,
lib/hanami/view/rendering/templates_finder.rb,
lib/hanami/view/rendering/partial_templates_finder.rb
Overview
View
Defined Under Namespace
Modules: Dsl, Escape, Inheritable, Rendering Classes: Configuration, Error, MissingFormatError, MissingTemplateError, MissingTemplateLayoutError, Template, UnknownRenderTypeError
Constant Summary collapse
- VERSION =
Defines the version
'1.3.0'.freeze
Class Method Summary collapse
-
.configure(&blk) ⇒ Object
Configure the framework.
-
.dupe ⇒ Module
private
Duplicate Hanami::View in order to create a new separated instance of the framework.
-
.duplicate(mod, views = 'Views', &blk) ⇒ Module
Duplicate the framework and generate modules for the target application.
-
.included(base) ⇒ Object
private
Override Ruby’s hook for modules.
-
.load! ⇒ Object
private
Load the framework.
Class Method Details
.configure(&blk) ⇒ Object
Configure the framework. It yields the given block in the context of the configuration
45 46 47 |
# File 'lib/hanami/view.rb', line 45 def self.configure(&blk) configuration.instance_eval(&blk) end |
.dupe ⇒ Module
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Duplicate Hanami::View in order to create a new separated instance of the framework.
The new instance of the framework will be completely decoupled from the original. It will inherit the configuration, but all the changes that happen after the duplication, won’t be reflected on the other copies.
94 95 96 97 98 |
# File 'lib/hanami/view.rb', line 94 def self.dupe dup.tap do |duplicated| duplicated.configuration = configuration.duplicate end end |
.duplicate(mod, views = 'Views', &blk) ⇒ Module
Duplicate the framework and generate modules for the target application
module MyApp::Views::Dashboard
class Index
include MyApp::View
end
end
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 |
# File 'lib/hanami/view.rb', line 203 def self.duplicate(mod, views = 'Views', &blk) dupe.tap do |duplicated| mod.module_eval %{ module #{ views }; end } if views mod.module_eval %{ Layout = Hanami::Layout.dup Presenter = Hanami::Presenter.dup } duplicated.configure do namespace [mod, views].compact.join '::' end duplicated.configure(&blk) if block_given? end end |
.included(base) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Override Ruby’s hook for modules. It includes basic Hanami::View modules to the given Class. It sets a copy of the framework configuration
240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 |
# File 'lib/hanami/view.rb', line 240 def self.included(base) conf = self.configuration conf.add_view(base) base.class_eval do extend Inheritable extend Dsl extend Rendering extend Escape include Utils::ClassAttribute class_attribute :configuration self.configuration = conf.duplicate end conf.copy!(base) end |
.load! ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Load the framework
263 264 265 |
# File 'lib/hanami/view.rb', line 263 def self.load! configuration.load! end |