From 75bc5455af8c3c3381066aac3d5fff42264cac6f Mon Sep 17 00:00:00 2001 From: Kornelius Kalnbach Date: Fri, 19 Aug 2011 03:09:35 +0200 Subject: Major rewrite of encoders to support IO output; fixed some minor scanner bugs; cleanups; dropped NitroXHTML scanner; improved tests --- lib/coderay/scanners/ruby.rb | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'lib/coderay/scanners/ruby.rb') diff --git a/lib/coderay/scanners/ruby.rb b/lib/coderay/scanners/ruby.rb index e1395ca..25da208 100644 --- a/lib/coderay/scanners/ruby.rb +++ b/lib/coderay/scanners/ruby.rb @@ -26,7 +26,7 @@ module Scanners state, heredocs = @state heredocs = heredocs.dup if heredocs.is_a?(Array) - if state && state.instance_of?(self.class::StringState) + if state && state.instance_of?(StringState) encoder.begin_group state.type end @@ -426,13 +426,18 @@ module Scanners end # cleaning up - if options[:keep_state] - heredocs = nil if heredocs && heredocs.empty? - @state = state, heredocs + if state.is_a? StringState + encoder.end_group state.type end - if state.is_a? self.class::StringState - encoder.end_group state.type + if options[:keep_state] + if state.is_a?(StringState) && state.heredoc + (heredocs ||= []).unshift state + state = :initial + elsif heredocs && heredocs.empty? + heredocs = nil + end + @state = state, heredocs end if inline_block_stack -- cgit v1.2.1