From 065d06a98f16521125d2039b7a6a18a8156136b7 Mon Sep 17 00:00:00 2001 From: kristi Date: Wed, 9 May 2012 13:33:54 -0700 Subject: [PATCH] Move toc calling code out of app; put in Page.toc_data Page stores the formatted document parsed by Nokogiri --- lib/gollum/frontend/app.rb | 27 +++++---------------------- lib/gollum/page.rb | 19 ++++++++++++++++++- 2 files changed, 23 insertions(+), 23 deletions(-) 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.