Module: RailsViewAnnotator

Defined in:
lib/rails_view_annotator/version.rb,
lib/rails_view_annotator/action_view/partial_renderer.rb

Defined Under Namespace

Modules: InstanceMethods

Constant Summary collapse

VERSION =
"0.0.8"

Class Method Summary collapse

Class Method Details

.augment_partial_renderer(klass) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/rails_view_annotator/action_view/partial_renderer.rb', line 2

def self.augment_partial_renderer klass
  render = klass.instance_method :render
  klass.send(:define_method, :render) do |*args|
    inner = render.bind(self).call(*args)
    return unless identifier
    short_identifier = Pathname.new(identifier).relative_path_from Rails.root

    r = /^#{Regexp.escape(Rails.root.to_s)}\/([^:]+:\d+)/
    caller.find { |line| line.match r }
    called_from = context = $1

    descriptor = "#{short_identifier} (from #{called_from})"

    if not inner.blank?
      if args[1].has_key?(:formats) && args[1][:formats].include?(:js)
        "/* begin: #{descriptor} */\n#{inner}/* end: #{descriptor} */".html_safe
      elsif !args[1].has_key?(:formats) || args[1][:formats].include?(:html)
        "<!-- begin: #{descriptor} -->\n#{inner}<!-- end: #{descriptor} -->".html_safe
      end
    end
  end
  klass.send(:include, InstanceMethods)
end