Class: ActionView::DependencyTracker::ERBTracker
- Inherits:
-
Object
- Object
- ActionView::DependencyTracker::ERBTracker
- Defined in:
- lib/action_view/dependency_tracker/erb_tracker.rb
Overview
:nodoc:
Constant Summary collapse
- EXPLICIT_DEPENDENCY =
/# Template Dependency: (\S+)/
- IDENTIFIER =
A valid ruby identifier - suitable for class, method and specially variable names
/ [[:alpha:]_] # at least one uppercase letter, lowercase letter or underscore [[:word:]]* # followed by optional letters, numbers or underscores /x
- VARIABLE_OR_METHOD_CHAIN =
Any kind of variable name. e.g. @instance, @@class, $global or local. Possibly following a method call chain
/ (?:\$|@{1,2})? # optional global, instance or class variable indicator (?:#{IDENTIFIER}\.)* # followed by an optional chain of zero-argument method calls (?<dynamic>#{IDENTIFIER}) # and a final valid identifier, captured as DYNAMIC /x
- STRING =
A simple string literal. e.g. “School’s out!”
/ (?<quote>['"]) # an opening quote (?<static>.*?) # with anything inside, captured as STATIC \k<quote> # and a matching closing quote /x
- PARTIAL_HASH_KEY =
Part of any hash containing the :partial key
/ (?:\bpartial:|:partial\s*=>) # partial key in either old or new style hash syntax \s* # followed by optional spaces /x
- LAYOUT_HASH_KEY =
Part of any hash containing the :layout key
/ (?:\blayout:|:layout\s*=>) # layout key in either old or new style hash syntax \s* # followed by optional spaces /x
- RENDER_ARGUMENTS =
Matches:
partial: "comments/comment", collection: @all_comments => "comments/comment" (object: @single_comment, partial: "comments/comment") => "comments/comment" "comments/comments" 'comments/comments' ('comments/comments') (@topic) => "topics/topic" topics => "topics/topic" (message.topics) => "topics/topic"
/\A (?:\s*\(?\s*) # optional opening paren surrounded by spaces (?:.*?#{PARTIAL_HASH_KEY}|#{LAYOUT_HASH_KEY})? # optional hash, up to the partial or layout key declaration (?:#{STRING}|#{VARIABLE_OR_METHOD_CHAIN}) # finally, the dependency name of interest /xm
- LAYOUT_DEPENDENCY =
/\A (?:\s*\(?\s*) # optional opening paren surrounded by spaces (?:.*?#{LAYOUT_HASH_KEY}) # check if the line has layout key declaration (?:#{STRING}|#{VARIABLE_OR_METHOD_CHAIN}) # finally, the dependency name of interest /xm
Class Method Summary collapse
Instance Method Summary collapse
- #dependencies ⇒ Object
-
#initialize(name, template, view_paths = nil) ⇒ ERBTracker
constructor
A new instance of ERBTracker.
Constructor Details
#initialize(name, template, view_paths = nil) ⇒ ERBTracker
Returns a new instance of ERBTracker.
72 73 74 |
# File 'lib/action_view/dependency_tracker/erb_tracker.rb', line 72 def initialize(name, template, view_paths = nil) @name, @template, @view_paths = name, template, view_paths end |
Class Method Details
.call(name, template, view_paths = nil) ⇒ Object
68 69 70 |
# File 'lib/action_view/dependency_tracker/erb_tracker.rb', line 68 def self.call(name, template, view_paths = nil) new(name, template, view_paths).dependencies end |
.supports_view_paths? ⇒ Boolean
:nodoc:
64 65 66 |
# File 'lib/action_view/dependency_tracker/erb_tracker.rb', line 64 def self.supports_view_paths? # :nodoc: true end |
Instance Method Details
#dependencies ⇒ Object
76 77 78 |
# File 'lib/action_view/dependency_tracker/erb_tracker.rb', line 76 def dependencies WildcardResolver.new(@view_paths, render_dependencies + explicit_dependencies).resolve end |