diff options
author | Piotr Sarnacki <drogus@gmail.com> | 2013-06-20 15:42:49 -0700 |
---|---|---|
committer | Piotr Sarnacki <drogus@gmail.com> | 2013-06-20 15:42:49 -0700 |
commit | a29f746398e7b0647885343e7f26d977dd251999 (patch) | |
tree | 1e2cd2ee1f8f31812c0acf71350ffe423ca8c5a9 /actionpack/lib/action_view/dependency_tracker.rb | |
parent | 7c69a829a311a31109939cff19b700b36b97d5c4 (diff) | |
parent | d6b1caa8f2011487c08b414605883f1f220d0aaa (diff) | |
download | rails-a29f746398e7b0647885343e7f26d977dd251999.tar.gz rails-a29f746398e7b0647885343e7f26d977dd251999.tar.bz2 rails-a29f746398e7b0647885343e7f26d977dd251999.zip |
Merge pull request #11032 from strzalek/extract-actionview
Extract ActionView to separate directory
Diffstat (limited to 'actionpack/lib/action_view/dependency_tracker.rb')
-rw-r--r-- | actionpack/lib/action_view/dependency_tracker.rb | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/actionpack/lib/action_view/dependency_tracker.rb b/actionpack/lib/action_view/dependency_tracker.rb deleted file mode 100644 index b2e8334077..0000000000 --- a/actionpack/lib/action_view/dependency_tracker.rb +++ /dev/null @@ -1,93 +0,0 @@ -require 'thread_safe' - -module ActionView - class DependencyTracker - @trackers = ThreadSafe::Cache.new - - def self.find_dependencies(name, template) - tracker = @trackers[template.handler] - - if tracker.present? - tracker.call(name, template) - else - [] - end - end - - def self.register_tracker(extension, tracker) - handler = Template.handler_for_extension(extension) - @trackers[handler] = tracker - end - - def self.remove_tracker(handler) - @trackers.delete(handler) - end - - class ERBTracker - EXPLICIT_DEPENDENCY = /# Template Dependency: (\S+)/ - - # Matches: - # render partial: "comments/comment", collection: commentable.comments - # render "comments/comments" - # render 'comments/comments' - # render('comments/comments') - # - # render(@topic) => render("topics/topic") - # render(topics) => render("topics/topic") - # render(message.topics) => render("topics/topic") - RENDER_DEPENDENCY = / - render\s* # render, followed by optional whitespace - \(? # start an optional parenthesis for the render call - (partial:|:partial\s+=>)?\s* # naming the partial, used with collection -- 1st capture - ([@a-z"'][@\w\/\."']+) # the template name itself -- 2nd capture - /x - - def self.call(name, template) - new(name, template).dependencies - end - - def initialize(name, template) - @name, @template = name, template - end - - def dependencies - render_dependencies + explicit_dependencies - end - - attr_reader :name, :template - private :name, :template - - private - - def source - template.source - end - - def directory - name.split("/")[0..-2].join("/") - end - - def render_dependencies - source.scan(RENDER_DEPENDENCY). - collect(&:second).uniq. - - # render(@topic) => render("topics/topic") - # render(topics) => render("topics/topic") - # render(message.topics) => render("topics/topic") - collect { |name| name.sub(/\A@?([a-z_]+\.)*([a-z_]+)\z/) { "#{$2.pluralize}/#{$2.singularize}" } }. - - # render("headline") => render("message/headline") - collect { |name| name.include?("/") ? name : "#{directory}/#{name}" }. - - # replace quotes from string renders - collect { |name| name.gsub(/["']/, "") } - end - - def explicit_dependencies - source.scan(EXPLICIT_DEPENDENCY).flatten.uniq - end - end - - register_tracker :erb, ERBTracker - end -end |