diff --git a/lib/chunks/include.rb b/lib/chunks/include.rb index ac9b9bd8..47c3f273 100644 --- a/lib/chunks/include.rb +++ b/lib/chunks/include.rb @@ -9,7 +9,7 @@ require 'chunks/wiki' class Include < WikiChunk::WikiReference - INCLUDE_PATTERN = /\[\[!include\s+(.*?)\]\]\s*/i + INCLUDE_PATTERN = /\[\[!include\s+([^\]\s][^\]]+?)\s*\]\]/i def self.pattern() INCLUDE_PATTERN end def initialize(match_data, content) diff --git a/test/unit/chunks/wiki_test.rb b/test/unit/chunks/wiki_test.rb index 1355b5e0..019b8d4b 100755 --- a/test/unit/chunks/wiki_test.rb +++ b/test/unit/chunks/wiki_test.rb @@ -52,6 +52,19 @@ class WikiTest < Test::Unit::TestCase {:page_name => 'Sperberg-McQueen', :web_name => 'Froogle'}) end + def test_void_include + # double brackets with only spaces inside are not a WikiInclude + no_match(Include, "This [[!include ]] are [[!include]] no [[!include \t ]] links") + end + + def test_include_strip_spaces + content = "This is a [[!include Sperberg-McQueen \t ]] link with trailing spaces to strip. " + + "This is a [[!include \t Gross-Mende]] link with leading spaces to strip." + + "This is a [[!include Milo Miles ]] link with spaces around it to strip" + recognized_includes = content.scan(Include.pattern).collect { |m| m[0] } + assert_equal ['Sperberg-McQueen', 'Gross-Mende', 'Milo Miles'], recognized_includes + end + def test_include_chunk_pattern content = 'This is a [[!include pagename]] and [[!include WikiWord]] but [[blah]]' recognized_includes = content.scan(Include.pattern).collect { |m| m[0] }