class ActionView::DependencyTracker::ERBTracker
:nodoc:
def self.call(name, template)
def self.call(name, template) new(name, template).dependencies end
def add_dynamic_dependency(dependencies, dependency)
def add_dynamic_dependency(dependencies, dependency) if dependency dependencies << "#{dependency.pluralize}/#{dependency.singularize}" end end
def add_static_dependency(dependencies, dependency)
def add_static_dependency(dependencies, dependency) if dependency if dependency.include?('/') dependencies << dependency else dependencies << "#{directory}/#{dependency}" end end end
def dependencies
def dependencies render_dependencies + explicit_dependencies end
def directory
def directory name.split("/")[0..-2].join("/") end
def explicit_dependencies
def explicit_dependencies source.scan(EXPLICIT_DEPENDENCY).flatten.uniq end
def initialize(name, template)
def initialize(name, template) @name, @template = name, template end
def render_dependencies
def render_dependencies render_dependencies = [] render_calls = source.split(/\brender\b/).drop(1) render_calls.each do |arguments| arguments.scan(RENDER_ARGUMENTS) do add_dynamic_dependency(render_dependencies, Regexp.last_match[:dynamic]) add_static_dependency(render_dependencies, Regexp.last_match[:static]) end end render_dependencies.uniq end
def source
def source template.source end