All,
It seems to throw it on the following contents (This is parserns.rb from
my Ruby 1.8.5 install using One-click Installer on Windows):
## -*- Ruby -*-
## XML::ParserNS
## namespaces-aware version of XML::Parser (experimental)
## 2002 by yoshidam
require 'xml/parser'
module XML
class InternalParserNS < Parser
XMLNS = 'http://www.w3.org/XML/1998/namespace'
attr_reader :ns
def self.new(parserNS, *args)
nssep = nil
if args.length == 2 && !args[0].is_a?(Parser)
nssep = args[1]
args = args.shift
end
obj = super(*args)
obj.__init__(parserNS, nssep)
obj
end
def __init__(parserNS, nssep)
@ns = []
@parserNS = parserNS
@nssep = nssep
end
def parse(*args)
if block_given?
super do |nodetype, name, args, parser|
case nodetype
when START_ELEM
ns, args = getNSAttrs(args)
@ns.push(ns)
if @nssep
if @parserNS.respond_to?(:startNamespaceDecl)
ns.each do |prefix, uri|
yield(START_NAMESPACE_DECL, prefix, uri, parser)
end
end
prefix, uri, localpart = resolveElementQName(name)
name = uri + @nssep + name if uri
attrs = {}
args.each do |k, v|
prefix, uri, localpart = resolveAttributeQName(k)
k = uri + @nssep + k if uri
attrs[k] = v
end
args = attrs
end
yield(nodetype, name, args, parser)
when END_ELEM
if @nssep
prefix, uri, localpart = resolveElementQName(name)
name = uri + @nssep + name if uri
end
yield(nodetype, name, args, parser)
ns = @ns.pop
if @nssep and @parserNS.respond_to?(:endNamespaceDecl)
ns.to_a.reverse.each do |prefix, uri|
yield(END_NAMESPACE_DECL, prefix, nil, parser)
end
end
else
yield(nodetype, name, args, parser)
end
end
else
super
end
end
def getNamespaces
@ns[-1]
end
def getNSURI(prefix)
return XMLNS if prefix == 'xml'
@ns.reverse_each do |n|
return n[prefix] if n.include?(prefix)
end
nil
end
def resolveElementQName(qname)
qname =~ /^((\S+):)?(\S+)$/u
prefix, localpart = $2, $3
uri = getNSURI(prefix)
[prefix, uri, localpart]
end
def resolveAttributeQName(qname)
qname =~ /^((\S+):)?(\S+)$/u
prefix, localpart = $2, $3
uri = nil
uri = getNSURI(prefix) if !prefix.nil?
[prefix, uri, localpart]
end
def getSpecifiedAttributes
ret = super
# attrs = {}
# ret.each do |k, v|
# next if k =~ /^xmlns/u
# if @nssep
# prefix, uri, localpart = resolveAttributeQName(k)
# k = uri.to_s + @nssep + k
# end
# attrs[k] = v
# end
attrs = []
ret.each do |k|
next if k =~ /^xmlns:|^xmlns$/u
if @nssep
prefix, uri, localpart = resolveAttributeQName(k)
k = uri.to_s + @nssep + k
end
attrs.push(k)
end
attrs
end
private
def getNSAttrs(args, eliminateNSDecl = false)
ns = {}
newargs = {}
args.each do |n, v|
prefix, localpart = n.split(':')
if prefix == 'xmlns'
ns[localpart] = v
next if eliminateNSDecl
end
newargs[n] = v
end
[ns, newargs]
end
def startElement(name, args)
ns, args = getNSAttrs(args)
@ns.push(ns)
if @nssep and @parserNS.respond_to?(:startNamespaceDecl)
ns.each do |prefix, uri|
@parserNS.startNamespaceDecl(prefix, uri)
end
end
if @parserNS.respond_to?(:startElement)
if @nssep
prefix, uri, localpart = resolveElementQName(name)
name = uri + @nssep + name if uri
attrs = {}
args.each do |k, v|
prefix, uri, localpart = resolveAttributeQName(k)
k = uri + @nssep + k if uri
attrs[k] = v
end
args = attrs
end
@parserNS.startElement(name, args)
end
end
def endElement(name)
if @parserNS.respond_to?(:endElement)
if @nssep
prefix, uri, localpart = resolveElementQName(name)
name = uri + @nssep + name if uri
end
@parserNS.endElement(name)
end
ns = @ns.pop
if @nssep and @parserNS.respond_to?(:endNamespaceDecl)
ns.to_a.reverse.each do |prefix, uri|
@parserNS.endNamespaceDecl(prefix)
end
end
end
end
class ParserNS
EVENT_HANDLERS = [
:character,
:processingInstruction,
:unparsedEntityDecl,
:notationDecl,
:externalEntityRef,
:comment,
:startCdata,
:endCdata,
:startNamespaceDecl,
:endNamespaceDecl,
:startDoctypeDecl,
:endDoctypeDecl,
:default,
:defaultExpand,
:unknownEncoding,
:notStandalone,
:elementDecl,
:attlistDecl,
:xmlDecl,
:entityDecl,
:externalParsedEntityDecl,
:internalParsedEntityDecl]
def initialize(*args)
@parser = InternalParserNS.new(self, *args)
end
def parse(*args, &block)
EVENT_HANDLERS.each do |m|
if self.respond_to?(m)
eval "def @parser.#{m}(*args); @parserNS.#{m}(*args); end"
end
end
@parser.parse(*args, &block)
end
def setReturnNSTriplet(do_nst); end
def method_missing(name, *args)
if @parser.respond_to?(name)
@parser.send(name, *args)
else
raise NameError.new("undefined method `#{name.id2name}' " +
"for #{self.inspect}")
end
end
end
end
On 2/13/07, Christopher Williams <[EMAIL PROTECTED]> wrote:
Mirko,
Can you look into this? I'm not sure if the version of JRuby you checked
in is an un-modified version from their trunk or not. Here's an example
stack trace. I'll try and look into finding a particular file that it throws
this...
java.lang.ClassCastException: org.jruby.ast.ZSuperNode
at org.jruby.parser.DefaultRubyParser.yyparse(DefaultRubyParser.java:2232)
at org.jruby.parser.DefaultRubyParser.yyparse(DefaultRubyParser.java:833)
at org.jruby.parser.DefaultRubyParser.parse(DefaultRubyParser.java:3297)
Thanks,
Chris
On 2/13/07, Thomas E Enebo < [EMAIL PROTECTED]> wrote:
>
> On Tue, 13 Feb 2007, Christopher Williams defenestrated me:
> >
> > RDT (and JRuby) developers,
> > I'd like to go through the current open items for our RDT 0.9.0
> > release and see if we can't wrap them up and get the release out
> the
> > door soon.
> > As far as I know there's only two big open issues:
> > 1. The JRuby we're based on has a bug which is throwing
> > ClassCastExceptions. Also, we should really peg the version we use
> -
> > so we need to use a formal release or ask the JRuby guys to tag a
> > known good release for us.
>
> If the CCE is a jruby bug just give us a report.
>
> We can easily drop a tag for you.
>
> -Tom
>
> --
> + http://www.tc.umn.edu/~enebo <http://www.tc.umn.edu/%7Eenebo> +----
> mailto:[EMAIL PROTECTED] ----+
> | Thomas E Enebo, Protagonist | "Luck favors the prepared |
> | | mind." -Louis Pasteur |
>
--
http://cwilliams.textdriven.com
--
http://cwilliams.textdriven.com
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Rubyeclipse-development mailing list
Rubyeclipse-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rubyeclipse-development