Method: ActionView::Digestor.tree
- Defined in:
- actionview/lib/action_view/digestor.rb
.tree(name, finder, partial = false, seen = {}) ⇒ Object
Create a dependency tree for template named name.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'actionview/lib/action_view/digestor.rb', line 43 def tree(name, finder, partial = false, seen = {}) logical_name = name.gsub(%r|/_|, "/") interpolated = name.include?("#") path = TemplatePath.parse(name) if !interpolated && (template = find_template(finder, path.name, [path.prefix], partial, [])) if node = seen[template.identifier] # handle cycles in the tree node else node = seen[template.identifier] = Node.create(name, logical_name, template, partial) deps = DependencyTracker.find_dependencies(name, template, finder.view_paths) deps.uniq { |n| n.gsub(%r|/_|, "/") }.each do |dep_file| node.children << tree(dep_file, finder, true, seen) end node end else unless interpolated # Dynamic template partial names can never be tracked logger.error " Couldn't find template for digesting: #{name}" end seen[name] ||= Missing.new(name, logical_name, nil) end end |