diff --git a/lib/stringsupport.rb b/lib/stringsupport.rb index be97d61a..658283dd 100644 --- a/lib/stringsupport.rb +++ b/lib/stringsupport.rb @@ -41,7 +41,7 @@ end #-- if "".respond_to?(:force_encoding) def purify - text = check_ncrs.as_utf8 + text = self.dup.check_ncrs.as_utf8 text.chars.collect{|c| c.as_bytes}.grep(UTF8_REGEX).join.as_utf8 end else diff --git a/lib/wiki_content.rb b/lib/wiki_content.rb index 8825029f..2e3b6be4 100644 --- a/lib/wiki_content.rb +++ b/lib/wiki_content.rb @@ -7,6 +7,7 @@ require_dependency 'chunks/wiki' require_dependency 'chunks/literal' require 'chunks/nowiki' require 'sanitizer' +require 'stringsupport' # Wiki content is just a string that can process itself with a chain of @@ -189,6 +190,7 @@ class WikiContent < String def render! pre_render! @options[:engine].apply_to(self) + as_bytes # unmask in one go. $~[1] is the chunk id gsub!(MASK_RE[ACTIVE_CHUNKS]) do chunk = @chunks_by_id[$~[1].to_i] @@ -200,6 +202,7 @@ class WikiContent < String chunk.unmask_text end end + as_utf8 self.replace xhtml_sanitize(self) end