Class: Molecule::Renderer
- Inherits:
-
ActionView::PartialRenderer
- Object
- ActionView::PartialRenderer
- Molecule::Renderer
- Defined in:
- lib/molecule/renderer.rb
Instance Method Summary collapse
-
#find_template(path, locals) ⇒ Object
turn off partial renaming.
- #molecule_force_set_member(object, member, value) ⇒ Object
-
#molecule_prefix ⇒ Object
path for current molecule.
-
#molecule_template_path ⇒ Object
molecules path.
- #molecule_view_paths ⇒ Object
-
#partial_path(object = nil, view = nil) ⇒ Object
default template entrypoint.
-
#render(context, &block) ⇒ Object
narrow template lookup path to the provided molecule.
- #with_dependency_check(name, &block) ⇒ Object
-
#with_member_override(member, override, &block) ⇒ Object
override a member of lookup_context.
- #with_new_molecule(name) ⇒ Object
Instance Method Details
#find_template(path, locals) ⇒ Object
turn off partial renaming
56 57 58 59 |
# File 'lib/molecule/renderer.rb', line 56 def find_template(path, locals) prefixes = path.include?(?/) ? [] : @lookup_context.prefixes @lookup_context.find_template(path, prefixes, false, locals, @details) end |
#molecule_force_set_member(object, member, value) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/molecule/renderer.rb', line 47 def molecule_force_set_member object, member, value if object.respond_to?("#{member}=") object.public_send("#{member}=", value) else object.instance_variable_set("@#{member}", value) end end |
#molecule_prefix ⇒ Object
path for current molecule
71 72 73 |
# File 'lib/molecule/renderer.rb', line 71 def molecule_prefix "#{@options[:molecule].to_s}/views" end |
#molecule_template_path ⇒ Object
molecules path
66 67 68 |
# File 'lib/molecule/renderer.rb', line 66 def molecule_template_path Rails.root.join('app', 'molecules') end |
#molecule_view_paths ⇒ Object
61 62 63 |
# File 'lib/molecule/renderer.rb', line 61 def molecule_view_paths ::ActionView::PathSet.new([molecule_template_path]) end |
#partial_path(object = nil, view = nil) ⇒ Object
default template entrypoint
76 77 78 |
# File 'lib/molecule/renderer.rb', line 76 def partial_path object = nil, view = nil 'index' end |
#render(context, &block) ⇒ Object
narrow template lookup path to the provided molecule
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/molecule/renderer.rb', line 9 def render context, &block @@stack ||= ::Molecule::Stack.new with_member_override(:view_paths, molecule_view_paths) do with_member_override(:prefixes, [molecule_prefix]) do with_dependency_check([:molecule]) do with_new_molecule([:molecule]) do result = super([:molecule], context, block).body end end end end end |
#with_dependency_check(name, &block) ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'lib/molecule/renderer.rb', line 31 def with_dependency_check name, &block if !@@stack.empty? && ::Molecule.config.verify_children? unless @@stack.current_molecule.has_child?(name.to_s) raise "requested molecule (#{name}) is not configured as a child of current molecule (#{@@stack.current_molecule.name})" end end yield end |
#with_member_override(member, override, &block) ⇒ Object
override a member of lookup_context
23 24 25 26 27 28 29 |
# File 'lib/molecule/renderer.rb', line 23 def with_member_override member, override, &block old_value = @lookup_context.public_send(member) molecule_force_set_member(@lookup_context, member, override) yield ensure molecule_force_set_member(@lookup_context, member, old_value) end |
#with_new_molecule(name) ⇒ Object
40 41 42 43 44 45 |
# File 'lib/molecule/renderer.rb', line 40 def with_new_molecule name @@stack.push(::Molecule::Molecule.read(name)) yield ensure @@stack.pop end |