Commit 64e0dfa5 authored by Robert Speicher's avatar Robert Speicher

Prevent double-prefixing of help page paths

Prior, because the link "api/README.md" was matched twice, the first
link became "help/help/api/README.md". Now we do a negative lookahead to
make sure the link doesn't start with `help/`.

This fix is still not ideal, see TODO note.
parent c551c81e
...@@ -4,6 +4,8 @@ class HelpController < ApplicationController ...@@ -4,6 +4,8 @@ class HelpController < ApplicationController
layout 'help' layout 'help'
def index def index
@help_index = File.read(Rails.root.join('doc', 'README.md'))
prefix_help_links!(@help_index)
end end
def show def show
...@@ -57,6 +59,22 @@ class HelpController < ApplicationController ...@@ -57,6 +59,22 @@ class HelpController < ApplicationController
params params
end end
# Prefix links in a Markdown document with `help/` unless they already have
# been
#
# TODO (rspeicher): This should be a pipeline filter that only gets included
# for help pages, and it should operate on the Nokogiri doc to be more robust.
#
# text - Markdown String
#
# Modifies `text` in-place
def prefix_help_links!(text)
# Match text inside a Markdown link unless it already starts with `help/`
#
# See http://rubular.com/r/nwwhzH6Z8X
text.gsub!(%r{(\]\()(?!help\/)([^\)\(]+)(\))}x, '\1help/\2\3')
end
PATH_SEPS = Regexp.union(*[::File::SEPARATOR, ::File::ALT_SEPARATOR].compact) PATH_SEPS = Regexp.union(*[::File::SEPARATOR, ::File::ALT_SEPARATOR].compact)
# Taken from ActionDispatch::FileHandler # Taken from ActionDispatch::FileHandler
......
...@@ -27,11 +27,7 @@ ...@@ -27,11 +27,7 @@
.col-md-8 .col-md-8
.documentation-index .documentation-index
= preserve do = preserve do
- readme_text = File.read(Rails.root.join("doc", "README.md")) = markdown(@help_index)
- text = readme_text.dup
- readme_text.scan(/\]\(([^(]+)\)/) { |match| text.gsub!(match.first, "help/#{match.first}") }
= markdown text
.col-md-4 .col-md-4
.panel.panel-default .panel.panel-default
.panel-heading .panel-heading
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment