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

Reply via email to