]> source.dussan.org Git - redmine.git/commitdiff
Textile formatting:
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 9 Mar 2008 11:47:36 +0000 (11:47 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 9 Mar 2008 11:47:36 +0000 (11:47 +0000)
* escape html tags, except pre tags (#807, #795)
* try to avoid unwanted quick phrase modifiers

git-svn-id: http://redmine.rubyforge.org/svn/trunk@1216 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redcloth.rb

index b614614c4cfce4fa45235c809c6a070b6ab49f49..7e88007a6828bb89596ca99b9b33a828d971bc7d 100644 (file)
@@ -295,6 +295,7 @@ class RedCloth < String
         @pre_list = []
         rip_offtags text
         no_textile text
+        escape_html_tags text
         hard_break text 
         unless @lite_mode
             refs text
@@ -375,18 +376,18 @@ class RedCloth < String
         re =
             case rtype
             when :limit
-                /(\W)
+                /(^|[>\s])
                 (#{rcq})
                 (#{C})
                 (?::(\S+?))?
-                (\S.*?\S|\S)
+                ([^\s\-].*?[^\s\-]|\w)
                 #{rcq}
-                (?=\W)/x
+                (?=[[:punct:]]|\s|$)/x
             else
                 /(#{rcq})
                 (#{C})
                 (?::(\S+))?
-                (\S.*?\S|\S)
+                ([^\s\-].*?[^\s\-]|\w)
                 #{rcq}/xm 
             end
         [rc, ht, re, rtype]
@@ -1128,5 +1129,11 @@ class RedCloth < String
             end
         end
     end
+    
+    ALLOWED_TAGS = %w(redpre pre)
+    
+    def escape_html_tags(text)
+      text.gsub!(%r{<((\/?)(\w+))}) {|m| ALLOWED_TAGS.include?($3) ? "<#{$1}" : "&lt;#{$1}" }
+    end
 end