diff options
Diffstat (limited to 'guides')
-rw-r--r-- | guides/rails_guides/markdown/renderer.rb | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/guides/rails_guides/markdown/renderer.rb b/guides/rails_guides/markdown/renderer.rb index 2fc2c5d9cb..97df6f0559 100644 --- a/guides/rails_guides/markdown/renderer.rb +++ b/guides/rails_guides/markdown/renderer.rb @@ -33,7 +33,9 @@ HTML end def paragraph(text) - if text =~ /^(TIP|IMPORTANT|CAUTION|WARNING|NOTE|INFO|TODO)[.:]/ + if text =~ %r{^NOTE:\s+Defined\s+in\s+<code>(.*?)</code>\.?$} + %(<div class="note"><p>Defined in <code><a href="#{github_file_url($1)}">#{$1}</a></code>.</p></div>) + elsif text =~ /^(TIP|IMPORTANT|CAUTION|WARNING|NOTE|INFO|TODO)[.:]/ convert_notes(text) elsif text.include?("DO NOT READ THIS FILE ON GITHUB") elsif text =~ /^\[<sup>(\d+)\]:<\/sup> (.+)$/ @@ -90,6 +92,22 @@ HTML end end + def github_file_url(file_path) + root, rest = file_path.split('/', 2) + + case root + when 'abstract_controller', 'action_controller', 'action_dispatch' + path = ['actionpack', 'lib', root, rest].join('/') + when 'active_support', 'active_record', 'active_model', 'action_view', + 'action_cable', 'action_mailer', 'action_pack', 'active_job' + path = [root.sub('_', ''), 'lib', root, rest].join('/') + else + path = file_path + end + + ["https://github.com/rails/rails/tree", version || 'master', path].join('/') + end + def version ENV['RAILS_VERSION'] end |