From 4b29a843e530f37bbddd6aa689111a181e36a8bd Mon Sep 17 00:00:00 2001 From: Alexey Verkhovsky Date: Thu, 7 Sep 2006 04:07:51 +0000 Subject: [PATCH] Fixes #248 --- lib/chunks/include.rb | 13 ++++++++++--- test/unit/page_renderer_test.rb | 12 ++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/lib/chunks/include.rb b/lib/chunks/include.rb index dbd9d3dd..ac9b9bd8 100644 --- a/lib/chunks/include.rb +++ b/lib/chunks/include.rb @@ -15,12 +15,13 @@ class Include < WikiChunk::WikiReference def initialize(match_data, content) super @page_name = match_data[1].strip - @unmask_text = get_unmask_text_avoiding_recursion_loops + rendering_mode = content.options[:mode] || :show + @unmask_text = get_unmask_text_avoiding_recursion_loops(rendering_mode) end private - def get_unmask_text_avoiding_recursion_loops + def get_unmask_text_avoiding_recursion_loops(rendering_mode) if refpage # TODO This way of instantiating a renderer is ugly. renderer = PageRenderer.new(refpage.current_revision) @@ -30,7 +31,13 @@ class Include < WikiChunk::WikiReference return "Recursive include detected; #{@page_name} --> #{@content.page_name} " + "--> #{@page_name}\n" else - included_content = renderer.display_content + included_content = + case rendering_mode + when :show then renderer.display_content + when :publish then renderer.display_published + when :export then renderer.display_content_for_export + else raise "Unsupported rendering mode #{@mode.inspect}" + end @content.merge_chunks(included_content) return included_content.pre_rendered end diff --git a/test/unit/page_renderer_test.rb b/test/unit/page_renderer_test.rb index fc915ff8..54f5990e 100644 --- a/test/unit/page_renderer_test.rb +++ b/test/unit/page_renderer_test.rb @@ -355,6 +355,18 @@ class PageRendererTest < Test::Unit::TestCase assert_equal 'NewPageCategory', references[0].referenced_name assert_equal WikiReference::CATEGORY, references[0].link_type end + + def test_rendering_included_page_under_different_modes + included = @web.add_page('Included', 'link to HomePage', Time.now, 'AnAuthor', test_renderer) + main = @web.add_page('Main', '[[!include Included]]', Time.now, 'AnAuthor', test_renderer) + + assert_equal '

link to Home Page

', + test_renderer(main).display_content + assert_equal '

link to Home Page

', + test_renderer(main).display_published + assert_equal '

link to Home Page

', + test_renderer(main).display_content_for_export + end private