summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKornelius Kalnbach <murphy@rubychan.de>2013-06-13 04:35:39 +0200
committerKornelius Kalnbach <murphy@rubychan.de>2013-06-13 04:35:39 +0200
commitdf21150ed089f1e3d1d35badde23b2d905a421cd (patch)
treef13048fe98e5bb3cc8dab919eca2f2196e4bc787
parent108a5c93d3c91969a928f9896e145e0b5d3eeb25 (diff)
downloadcoderay-df21150ed089f1e3d1d35badde23b2d905a421cd.tar.gz
speedup/tweak debug encoder
-rw-r--r--lib/coderay/encoders/debug.rb25
1 files changed, 14 insertions, 11 deletions
diff --git a/lib/coderay/encoders/debug.rb b/lib/coderay/encoders/debug.rb
index c03d3fb..94d52af 100644
--- a/lib/coderay/encoders/debug.rb
+++ b/lib/coderay/encoders/debug.rb
@@ -25,34 +25,37 @@ module Encoders
def text_token text, kind
raise 'empty token' if $CODERAY_DEBUG && text.empty?
+
if kind == :space
@out << text
else
- # TODO: Escape (
- text = text.gsub(/[)\\]/, '\\\\\0') if text.index(/[)\\]/)
- @out << kind.to_s << '(' << text << ')'
+ text = text.gsub('\\', '\\\\\\\\') if text.index('\\')
+ text = text.gsub(')', '\\\\)') if text.index(')')
+ @out << "#{kind}(#{text})"
end
end
def begin_group kind
- @opened << kind
- @out << kind.to_s << '<'
+ @opened << kind if $CODERAY_DEBUG
+
+ @out << "#{kind}<"
end
def end_group kind
- if @opened.last != kind
- puts @out
- raise "we are inside #{@opened.inspect}, not #{kind}"
- end
- @opened.pop
+ raise "We are inside #{@opened.inspect}, not #{kind}" if $CODERAY_DEBUG && @opened.pop != kind
+
@out << '>'
end
def begin_line kind
- @out << kind.to_s << '['
+ @opened << kind if $CODERAY_DEBUG
+
+ @out << "#{kind}["
end
def end_line kind
+ raise "We are inside #{@opened.inspect}, not #{kind}" if $CODERAY_DEBUG && @opened.pop != kind
+
@out << ']'
end