summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/redcloth.rb15
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/redcloth.rb b/lib/redcloth.rb
index b614614c4..7e88007a6 100644
--- a/lib/redcloth.rb
+++ b/lib/redcloth.rb
@@ -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