From aa9229ff97a7d7252c52cf1df5bc076871f4b197 Mon Sep 17 00:00:00 2001 From: Kornelius Kalnbach Date: Tue, 7 Jun 2016 10:32:57 +0200 Subject: use EscapeUtils --- lib/coderay/encoders/html.rb | 40 ++-------------------------------------- 1 file changed, 2 insertions(+), 38 deletions(-) (limited to 'lib/coderay/encoders/html.rb') diff --git a/lib/coderay/encoders/html.rb b/lib/coderay/encoders/html.rb index 55b1291..a00ed47 100644 --- a/lib/coderay/encoders/html.rb +++ b/lib/coderay/encoders/html.rb @@ -1,4 +1,5 @@ require 'set' +require 'escape_utils' module CodeRay module Encoders @@ -127,21 +128,6 @@ module Encoders protected - def self.make_html_escape_hash - { - '&' => '&', - '>' => '>', - '<' => '<', - "\t" => ' ' * DEFAULT_OPTIONS[:tab_width], - }.tap do |hash| - # Escape ASCII control codes except \x9 == \t and \xA == \n. - (Array(0x00..0x8) + Array(0xB..0x1F)).each { |invalid| hash[invalid.chr] = ' ' } - end - end - - HTML_ESCAPE = make_html_escape_hash - HTML_ESCAPE_PATTERN = /[\t&><\0-\x8\xB-\x1F]/ - TOKEN_KIND_TO_INFO = Hash.new do |h, kind| h[kind] = kind.to_s.gsub(/_/, ' ').gsub(/\b\w/) { $&.capitalize } end @@ -180,8 +166,6 @@ module Encoders @break_lines = (options[:break_lines] == true) - @escape_cache = make_escape_cache(options) - @opened = [] @last_opened = nil @css = CSS.new options[:style] @@ -220,7 +204,7 @@ module Encoders def text_token text, kind style = @span_for_kinds[@last_opened ? [kind, *@opened] : kind] - text = @escape_cache[text] if text.size <= 1 || text =~ /#{HTML_ESCAPE_PATTERN}/o + text = EscapeUtils.escape_html text text = break_lines(text, style) if @break_lines && (style || @opened.size > 0) && text.index("\n") if style @@ -276,26 +260,6 @@ module Encoders options[:break_lines] = true if options[:line_numbers] == :inline end - def make_escape_cache options - html_escape = - if options[:tab_width] == DEFAULT_OPTIONS[:tab_width] - HTML_ESCAPE - else - HTML_ESCAPE.merge("\t" => options[:tab_width] ? ' ' * options[:tab_width] : "\t") - end - - Hash.new do |cache, text| - cache.clear if cache.size >= 100 - - cache[text] = - if text =~ /#{HTML_ESCAPE_PATTERN}/o - text.gsub(/#{HTML_ESCAPE_PATTERN}/o) { |m| html_escape[m] } - else - text - end - end - end - def css_class_for_kinds kinds TokenKinds[kinds.is_a?(Symbol) ? kinds : kinds.first] end -- cgit v1.2.1 From 351822b9e9ed27d0b58c39ad93dba9bf64615920 Mon Sep 17 00:00:00 2001 From: Kornelius Kalnbach Date: Mon, 13 Jun 2016 01:03:02 +0200 Subject: don't escape / --- lib/coderay/encoders/html.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/coderay/encoders/html.rb') diff --git a/lib/coderay/encoders/html.rb b/lib/coderay/encoders/html.rb index a00ed47..0365022 100644 --- a/lib/coderay/encoders/html.rb +++ b/lib/coderay/encoders/html.rb @@ -204,7 +204,7 @@ module Encoders def text_token text, kind style = @span_for_kinds[@last_opened ? [kind, *@opened] : kind] - text = EscapeUtils.escape_html text + text = EscapeUtils.escape_html text, false text = break_lines(text, style) if @break_lines && (style || @opened.size > 0) && text.index("\n") if style -- cgit v1.2.1