From ea141d62dfbb8cb02f20137e75da0fa9977e84c8 Mon Sep 17 00:00:00 2001 From: Robin Dupret Date: Sun, 29 Jan 2017 13:16:10 +0100 Subject: Automatically link to Ruby files referenced in notes [ci skip] To ease reading the "Active Support Core Extensions" guide, let's automatically link references to Ruby files. It's also possible to reference other components' files in the even though it's not used in the guides at the moment. [Petr Skocik & Robin Dupret] --- guides/rails_guides/markdown/renderer.rb | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'guides/rails_guides') 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+(.*?)\.?$} + %(

Defined in #{$1}.

) + elsif text =~ /^(TIP|IMPORTANT|CAUTION|WARNING|NOTE|INFO|TODO)[.:]/ convert_notes(text) elsif text.include?("DO NOT READ THIS FILE ON GITHUB") elsif text =~ /^\[(\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 -- cgit v1.2.3