diff options
Diffstat (limited to 'guides/rails_guides')
-rw-r--r-- | guides/rails_guides/generator.rb | 12 | ||||
-rw-r--r-- | guides/rails_guides/markdown.rb | 8 | ||||
-rw-r--r-- | guides/rails_guides/markdown/renderer.rb | 4 |
3 files changed, 16 insertions, 8 deletions
diff --git a/guides/rails_guides/generator.rb b/guides/rails_guides/generator.rb index 48e90510e1..7d4a15962c 100644 --- a/guides/rails_guides/generator.rb +++ b/guides/rails_guides/generator.rb @@ -63,9 +63,9 @@ module RailsGuides end def mobi - mobi = "ruby_on_rails_guides_#{@version || @edge[0, 7]}" - mobi += ".#{@language}" if @language - mobi += ".mobi" + mobi = +"ruby_on_rails_guides_#{@version || @edge[0, 7]}" + mobi << ".#{@language}" if @language + mobi << ".mobi" end def initialize_dirs @@ -150,8 +150,8 @@ module RailsGuides puts "Generating #{guide} as #{output_file}" layout = @kindle ? "kindle/layout" : "layout" - view = ActionView::Base.new( - @source_dir, + view = ActionView::Base.with_empty_template_cache.with_view_paths( + [@source_dir], edge: @edge, version: @version, mobi: "kindle/#{mobi}", @@ -164,7 +164,7 @@ module RailsGuides # Generate the special pages like the home. # Passing a template handler in the template name is deprecated. So pass the file name without the extension. - result = view.render(layout: layout, formats: [$1], file: $`) + result = view.render(layout: layout, formats: [$1.to_sym], file: $`) else body = File.read("#{@source_dir}/#{guide}") result = RailsGuides::Markdown.new( diff --git a/guides/rails_guides/markdown.rb b/guides/rails_guides/markdown.rb index a98aa8fe66..018f49ffd0 100644 --- a/guides/rails_guides/markdown.rb +++ b/guides/rails_guides/markdown.rb @@ -3,6 +3,7 @@ require "redcarpet" require "nokogiri" require "rails_guides/markdown/renderer" +require "rails-html-sanitizer" module RailsGuides class Markdown @@ -20,6 +21,7 @@ module RailsGuides @raw_body = body extract_raw_header_and_body generate_header + generate_description generate_title generate_body generate_structure @@ -82,6 +84,11 @@ module RailsGuides @header = engine.render(@raw_header).html_safe end + def generate_description + sanitizer = Rails::Html::FullSanitizer.new + @description = sanitizer.sanitize(@header).squish + end + def generate_structure @headings_for_index = [] if @body.present? @@ -165,6 +172,7 @@ module RailsGuides def render_page @view.content_for(:header_section) { @header } + @view.content_for(:description) { @description } @view.content_for(:page_title) { @title } @view.content_for(:index_section) { @index } @view.render(layout: @layout, html: @body.html_safe) diff --git a/guides/rails_guides/markdown/renderer.rb b/guides/rails_guides/markdown/renderer.rb index f186ac526f..7f14c28bbc 100644 --- a/guides/rails_guides/markdown/renderer.rb +++ b/guides/rails_guides/markdown/renderer.rb @@ -16,7 +16,7 @@ HTML end def link(url, title, content) - if url.start_with?("http://api.rubyonrails.org") + if %r{https?://api\.rubyonrails\.org}.match?(url) %(<a href="#{api_link(url)}">#{content}</a>) elsif title %(<a href="#{url}" title="#{title}">#{content}</a>) @@ -115,7 +115,7 @@ HTML end def api_link(url) - if %r{http://api\.rubyonrails\.org/v\d+\.}.match?(url) + if %r{https?://api\.rubyonrails\.org/v\d+\.}.match?(url) url elsif edge url.sub("api", "edgeapi") |