Module: Bridgetown::Builders::DSL::Helpers
- Included in:
- PluginBuilder
- Defined in:
- lib/bridgetown-builder/dsl/helpers.rb
Instance Method Summary collapse
-
#helper(helper_name, method_name = nil, &block) ⇒ Object
Define a helper for use in view templates, alongside built-in helpers, using either a builder method or a block.
- #helpers ⇒ Object
Instance Method Details
#helper(helper_name, method_name = nil, &block) ⇒ Object
Define a helper for use in view templates, alongside built-in helpers, using either a builder method or a block
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/bridgetown-builder/dsl/helpers.rb', line 17 def helper(helper_name, method_name = nil, &block) m = Module.new builder_self = self method_name ||= helper_name unless block unless method_name method_name = :"__helper_#{helper_name}" builder_self.define_singleton_method(method_name) do |*args, **kwargs, &block2| block.(*args, **kwargs, &block2) end end m.define_method helper_name do |*args, **kwargs, &block2| prev_var = builder_self.instance_variable_get(:@helpers) builder_self.instance_variable_set(:@helpers, self) builder_self.send(method_name, *args, **kwargs, &block2).tap do builder_self.instance_variable_set(:@helpers, prev_var) end end Bridgetown::RubyTemplateView::Helpers.include(m) functions << { name:, filter: m } end |
#helpers ⇒ Object
7 8 9 |
# File 'lib/bridgetown-builder/dsl/helpers.rb', line 7 def helpers @helpers # could be nil. gets set once a helper method is actually called end |