class Jbuilder::DependencyTracker
def self.call(name, template, view_paths = nil)
def self.call(name, template, view_paths = nil) new(name, template, view_paths).dependencies end
def dependencies
def dependencies direct_dependencies + indirect_dependencies + explicit_dependencies end
def direct_dependencies
def direct_dependencies source.scan(DIRECT_RENDERS).map(&:second) end
def explicit_dependencies
def explicit_dependencies dependencies = source.scan(EXPLICIT_DEPENDENCY).flatten.uniq wildcards, explicits = dependencies.partition { |dependency| dependency.end_with?("/*") } (explicits + resolve_directories(wildcards)).uniq end
def indirect_dependencies
def indirect_dependencies source.scan(INDIRECT_RENDERS).map(&:second) end
def initialize(name, template, view_paths = nil)
def initialize(name, template, view_paths = nil) @name, @template, @view_paths = name, template, view_paths end
def resolve_directories(wildcard_dependencies)
def resolve_directories(wildcard_dependencies) return [] unless @view_paths return [] if wildcard_dependencies.empty? # Remove trailing "/*" prefixes = wildcard_dependencies.map { |query| query[0..-3] } @view_paths.flat_map(&:all_template_paths).uniq.filter_map { |path| path.to_s if prefixes.include?(path.prefix) }.sort end
def source
def source template.source end