* lib/rexml/parsers/sax2parser.rb

(REXML::Parsers::SAX2Parser#handle_entitydecl): Extract.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42519 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
kou 2013-08-11 09:42:37 +00:00
parent 7e0022bc8e
commit 8328d8a2b7
2 changed files with 33 additions and 24 deletions

View File

@ -1,3 +1,8 @@
Sun Aug 11 18:42:13 2013 Kouhei Sutou <kou@cozmixng.org>
* lib/rexml/parsers/sax2parser.rb
(REXML::Parsers::SAX2Parser#handle_entitydecl): Extract.
Sun Aug 11 18:40:25 2013 Kouhei Sutou <kou@cozmixng.org>
* lib/rexml/parsers/sax2parser.rb (REXML::Parsers::SAX2Parser#parse):

View File

@ -176,30 +176,7 @@ module REXML
}
handle( :characters, copy )
when :entitydecl
@entities[ event[1] ] = event[2] if event.size == 3
parameter_reference_p = false
case event[2]
when "SYSTEM"
if event.size == 5
if event.last == "%"
parameter_reference_p = true
else
event[4, 0] = "NDATA"
end
end
when "PUBLIC"
if event.size == 6
if event.last == "%"
parameter_reference_p = true
else
event[5, 0] = "NDATA"
end
end
else
parameter_reference_p = (event.size == 4)
end
event[1, 0] = event.pop if parameter_reference_p
handle( event[0], event[1..-1] )
handle_entitydecl( event )
when :processing_instruction, :comment, :attlistdecl,
:elementdecl, :cdata, :notationdecl, :xmldecl
handle( *event )
@ -220,6 +197,33 @@ module REXML
} if listeners
end
def handle_entitydecl( event )
@entities[ event[1] ] = event[2] if event.size == 3
parameter_reference_p = false
case event[2]
when "SYSTEM"
if event.size == 5
if event.last == "%"
parameter_reference_p = true
else
event[4, 0] = "NDATA"
end
end
when "PUBLIC"
if event.size == 6
if event.last == "%"
parameter_reference_p = true
else
event[5, 0] = "NDATA"
end
end
else
parameter_reference_p = (event.size == 4)
end
event[1, 0] = event.pop if parameter_reference_p
handle( event[0], event[1..-1] )
end
# The following methods are duplicates, but it is faster than using
# a helper
def get_procs( symbol, name )