diff --git a/lib/gollum/frontend/app.rb b/lib/gollum/frontend/app.rb index 29776549..73d000c6 100644 --- a/lib/gollum/frontend/app.rb +++ b/lib/gollum/frontend/app.rb @@ -112,17 +112,8 @@ module Precious wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options) @name = "Preview" @page = wiki.preview_page(@name, params[:content], params[:format]) - @content = @page.formatted_data do - |doc| - # Insert anchors for table of contents - toc = Gollum::Toc.new doc - if (toc_content = toc.generate) - toc.insert_anchors - @toc_content = toc_content.to_xhtml(:save_with => Nokogiri::XML::Node::SaveOptions::AS_XHTML) - else - @toc_content = nil - end - end + @content = @page.formatted_data + @toc_content = @page.toc_data @editable = false mustache :page end @@ -207,17 +198,9 @@ module Precious @page = page @name = name @editable = true - @content = page.formatted_data do - |doc| - # Insert anchors for table of contents - toc = Gollum::Toc.new doc - if (toc_content = toc.generate) - toc.insert_anchors - @toc_content = toc_content.to_xhtml(:save_with => Nokogiri::XML::Node::SaveOptions::AS_XHTML) - else - @toc_content = nil - end - end + @content = page.formatted_data + @toc_content = page.toc_data + mustache :page elsif file = wiki.file(name) content_type file.mime_type diff --git a/lib/gollum/page.rb b/lib/gollum/page.rb index 55ba9b2e..218a460b 100644 --- a/lib/gollum/page.rb +++ b/lib/gollum/page.rb @@ -164,7 +164,24 @@ module Gollum # # Returns the String data. def formatted_data(encoding = nil, &block) - @blob && markup_class.render(historical?, encoding, &block) + @blob && markup_class.render(historical?, encoding) do |doc| + @doc = doc + yield doc if block_given? + end + end + + # Public: The table of contents of the page. + # + # formatted_data - page already marked up in html. + # + # Returns the String data. + def toc_data() + formatted_data if @doc == nil + toc = Toc.new(@doc) + if (toc_content = toc.generate) + toc.insert_anchors + toc.generate.to_xhtml(:save_with => Nokogiri::XML::Node::SaveOptions::AS_XHTML) + end end # Public: The format of the page.