module PathMapper::Node::Dir::Inheritance::Base
Attributes
inheritance[W]
Public Instance Methods
<<(mapper)
click to toggle source
# File lib/path_mapper/node/dir/inheritance/base.rb, line 12 def <<(mapper) self.inheritance << mapper end
f(m, overlay: true, **kwargs)
click to toggle source
# File lib/path_mapper/node/dir/inheritance/base.rb, line 16 def f(m, overlay: true, **kwargs) def with_inheritance(obj, **kwargs) if obj.respond_to? :dir? and obj.dir? obj.inheritance = self.inheritance.map do |inheritor| next if inheritor.path == obj.path.dirname unless (resp = inheritor.f(obj.name, kwargs)).empty? resp end end.compact end obj.changes_overlay = self._create_node(self.changes_overlay.path.join(obj.name)) obj end resp = [] base_resp = nil ["#{m.to_s}.erb", m.to_s].each {|fname| base_resp = with_inheritance(self._create_node(@path.join(fname)), kwargs) if base_resp.nil? } resp << base_resp self.inheritance.each do |inherit| unless (resp_ = with_inheritance(inherit.f(m, kwargs), kwargs)).nil? if overlay return resp_ else resp << resp_ end end end if !overlay || (overlay and base_resp.empty?) if base_resp.empty? and kwargs.key? :default kwargs[:default] else overlay ? resp.first : resp.select {|node| !node.is_a? Null } end end
inheritance()
click to toggle source
# File lib/path_mapper/node/dir/inheritance/base.rb, line 8 def inheritance @inheritance ||= [] end
with_inheritance(obj, **kwargs)
click to toggle source
# File lib/path_mapper/node/dir/inheritance/base.rb, line 17 def with_inheritance(obj, **kwargs) if obj.respond_to? :dir? and obj.dir? obj.inheritance = self.inheritance.map do |inheritor| next if inheritor.path == obj.path.dirname unless (resp = inheritor.f(obj.name, kwargs)).empty? resp end end.compact end obj.changes_overlay = self._create_node(self.changes_overlay.path.join(obj.name)) obj end