[#8976] Insecure warnings on sticky-bit directories — "Laurent Sansonetti" <laurent.sansonetti@...>
Hi,
[#8978] Inheritance and Autorunner: Default_test causes a problem — <noreply@...>
Bugs item #5990, was opened at 2006-10-02 10:05
Hi,
[#8997] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Mathieu Bouchard <matju@...>
On Tue, 3 Oct 2006, matz wrote:
Hi,
On Wed, 4 Oct 2006, Yukihiro Matsumoto wrote:
Hi,
Hi --
Yukihiro Matsumoto wrote:
Hi,
Hi --
Hi,
Hi --
Hi,
Hi --
On Oct 9, 2006, at 10:19 AM, dblack@wobblini.net wrote:
On 2006.10.10 00:31, James Edward Gray II wrote:
On Oct 9, 2006, at 11:50 AM, Eero Saynatkari wrote:
Hi --
dblack@wobblini.net wrote:
Thomas Enebo wrote:
Hi --
Hi --
Hi,
Hi --
Hi,
On 10/10/06, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Hi,
On Oct 10, 2006, at 8:43 AM, Yukihiro Matsumoto wrote:
From: <dblack@wobblini.net>
Hi --
> to_a was too general. All enumerable objects (and even
Brown, Warren wrote:
> -----Original Message-----
[#8999] making FileUtils.rm_rf robust: is anyone interested? — Jim Meyering <list+ruby@...>
Hello,
Hi,
"Nobuyoshi Nakada" <nobu@ruby-lang.org> wrote:
[#9014] C#'s ?? Operator — "Nikolai Weibull" <now@...>
Hi!
[#9021] argument passing bug — Mathieu Bouchard <matju@...>
[#9024] — Shashank Date <sdate@...>
Hi All,
[#9077] how to create a NODE_ARGSPUSH? — Ryan Davis <ryand-ruby@...>
Is it possible for plain ruby code to create a NODE_ARGSPUSH? It
[#9104] Loop over array.delete breaks at first hit — <noreply@...>
Bugs item #6090, was opened at 2006-10-10 22:33
Hi,
[#9119] What about 'splay'? — dblack@...
Hi --
On 2006.10.12 02:32, dblack@wobblini.net wrote:
On Wednesday 11 October 2006 13:55, Eero Saynatkari wrote:
Hi --
dblack@wobblini.net wrote:
Hi --
On 2006.10.12 03:36, Sean Russell wrote:
On 10/11/06, dblack@wobblini.net <dblack@wobblini.net> wrote:
[#9152] regular expressions tainting? — hadmut@... (Hadmut Danisch)
Hi,
Hi,
On Thu, Oct 12, 2006 at 01:01:36PM +0900, Nobuyoshi Nakada wrote:
It's worse:
Hi,
On Oct 15, 2006, at 1:20 AM, Hadmut Danisch wrote:
On Sun, Oct 15, 2006 at 05:33:16PM +0900, Eric Hodel wrote:
[#9158] Module#class_variable_defined? — Mauricio Fernandez <mfp@...>
[#9188] Symbol < String in Ruby > 1.8 — dblack@...
Hi --
Hi
Yukihiro Matsumoto wrote:
Charles Oliver Nutter wrote:
Charles Oliver Nutter wrote:
Jim Weirich wrote:
On Thu, Oct 19, 2006 at 05:06:02AM +0900, Charles Oliver Nutter wrote:
Hi,
Quoting matz@ruby-lang.org, on Thu, Oct 19, 2006 at 01:40:42PM +0900:
Hi,
Quoting matz@ruby-lang.org, on Thu, Oct 19, 2006 at 02:49:30PM +0900:
Hi,
Quoting matz@ruby-lang.org, on Thu, Oct 19, 2006 at 11:22:18PM +0900:
On 10/15/06, dblack@wobblini.net <dblack@wobblini.net> wrote:
Hi --
On 10/15/06, dblack@wobblini.net <dblack@wobblini.net> wrote:
Hi,
On 10/16/06, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
On Oct 16, 2006, at 3:06 PM, Rick DeNatale wrote:
On Tue, Oct 17, 2006 at 05:14:09AM +0900, James Edward Gray II wrote:
On 10/16/06, Sam Roberts <sroberts@uniserve.com> wrote:
Hi,
Hi --
On Oct 17, 2006, at 7:29 PM, dblack@wobblini.net wrote:
Hi --
On Oct 18, 2006, at 4:18 AM, dblack@wobblini.net wrote:
On 10/18/06, Eric Hodel <drbrain@segment7.net> wrote:
On 10/18/06, Nikolai Weibull <now@bitwi.se> wrote:
On 10/18/06, mathew <meta@pobox.com> wrote:
On Thu, Oct 19, 2006 at 04:24:24AM +0900, Nikolai Weibull wrote:
On 10/18/06, Mauricio Fernandez <mfp@acm.org> wrote:
Hi --
On 10/18/06, dblack@wobblini.net <dblack@wobblini.net> wrote:
Hi -
Hi,
Hi --
Rick DeNatale wrote:
Hi --
Hi,
Hi --
On 10/19/06, dblack@wobblini.net <dblack@wobblini.net> wrote:
Hi --
On 10/19/06, dblack@wobblini.net <dblack@wobblini.net> wrote:
Hi --
dblack@wobblini.net wrote:
Hi --
Hi,
Hi --
Hi,
Hi --
On 10/20/06, dblack@wobblini.net <dblack@wobblini.net> wrote:
Hi --
Hi,
On Sat, Oct 21, 2006 at 01:11:36AM +0900, dblack@wobblini.net wrote:
Hi,
On Oct 18, 2006, at 11:37 AM, Nikolai Weibull wrote:
[#9197] Ruby Threads — "Abhisek Datta" <abhisek@...>
Hello,
[#9282] Re: String not enumerable, what about IO? — "Michael Selig" <michael.selig@...>
I am fairly new to ruby, and I have just started listening to this mailing
[#9341] array.c - defining aliases as aliases — "Daniel Berger" <djberg96@...>
Hi all,
On Oct 27, 2006, at 11:12 AM, Daniel Berger wrote:
[#9351] Module#method_aliased and Module#singleton_method_aliased — "Daniel Berger" <djberg96@...>
Hi all,
[patch] REXML DTD read
Hi, HORIKAWA Hisashi recently posted a patch to ruby-dev [ruby-dev:29643] that allows REXML to read DTD. He think this is useful enough to merge, but I think we need to get approval from Sean (who is CC'ed). Sean, how do you think? matz.
Attachments (1)
diff -Naurw /opt/src/ruby-1.8.5-20061002/lib/rexml/child.rb /lib/ruby/1.8/rexml/child.rb
--- /opt/src/ruby-1.8.5-20061002/lib/rexml/child.rb 2003-06-10 10:31:04.000000000 +0900
+++ /lib/ruby/1.8/rexml/child.rb 2006-10-06 09:27:04.963844500 +0900
@@ -15,6 +15,7 @@
# if supplied, the parent of this child will be set to the
# supplied value, and self will be added to the parent
def initialize( parent = nil )
+ raise TypeError, "expected a Parent but #{parent.inspect}" if parent && !defined?(parent.add)
@parent = nil
# Declare @parent, but don't define it. The next line sets the
# parent.
diff -Naurw /opt/src/ruby-1.8.5-20061002/lib/rexml/doctype.rb /lib/ruby/1.8/rexml/doctype.rb
--- /opt/src/ruby-1.8.5-20061002/lib/rexml/doctype.rb 2006-04-14 11:56:42.000000000 +0900
+++ /lib/ruby/1.8/rexml/doctype.rb 2006-10-06 19:05:32.704872500 +0900
@@ -4,6 +4,8 @@
require 'rexml/entity'
require 'rexml/attlistdecl'
require 'rexml/xmltokens'
+require 'rexml/dtd/dtd'
+require 'rexml/element'
module REXML
# Represents an XML DOCTYPE declaration; that is, the contents of <!DOCTYPE
@@ -61,6 +63,7 @@
event = parser.pull
if event[0] == :start_doctype
@name, @external_id, @long_name, @uri, = event[1..-1]
+ DTD::Parser.parse_dtd parser, self
end
else
super()
@@ -227,9 +230,14 @@
public
class ElementDecl < Declaration
+ PATTERN_RE = /^\s*<!ELEMENT\s+([A-Za-z_:][A-Za-z0-9_:.-]*)\s+(.+)/um
def initialize( src )
super
+ md = PATTERN_RE.match src
+ @name = md[1]
+ @rest = md[2]
end
+ attr_reader :name, :rest
end
class ExternalEntity < Child
diff -Naurw /opt/src/ruby-1.8.5-20061002/lib/rexml/dtd/attlistdecl.rb /lib/ruby/1.8/rexml/dtd/attlistdecl.rb
--- /opt/src/ruby-1.8.5-20061002/lib/rexml/dtd/attlistdecl.rb 2003-06-10 10:31:07.000000000 +0900
+++ /lib/ruby/1.8/rexml/dtd/attlistdecl.rb 1970-01-01 09:00:00.000000000 +0900
@@ -1,10 +0,0 @@
-require "rexml/child"
-module REXML
- module DTD
- class AttlistDecl < Child
- START = "<!ATTLIST"
- START_RE = /^\s*#{START}/um
- PATTERN_RE = /\s*(#{START}.*?>)/um
- end
- end
-end
diff -Naurw /opt/src/ruby-1.8.5-20061002/lib/rexml/dtd/dtd.rb /lib/ruby/1.8/rexml/dtd/dtd.rb
--- /opt/src/ruby-1.8.5-20061002/lib/rexml/dtd/dtd.rb 2003-06-10 10:31:07.000000000 +0900
+++ /lib/ruby/1.8/rexml/dtd/dtd.rb 2006-10-09 15:07:49.369206500 +0900
@@ -1,9 +1,9 @@
-require "rexml/dtd/elementdecl"
-require "rexml/dtd/entitydecl"
+require 'rexml/doctype'
+require "rexml/entity"
require "rexml/comment"
-require "rexml/dtd/notationdecl"
-require "rexml/dtd/attlistdecl"
+require "rexml/attlistdecl"
require "rexml/parent"
+require 'rexml/parsers/baseparser'
module REXML
module DTD
@@ -17,34 +17,34 @@
end
end
- # Takes a String and parses it out
- def Parser.parse_helper( input )
- contents = Parent.new
- while input.size > 0
- case input
- when ElementDecl.PATTERN_RE
- match = $&
- source = $'
- contents << EleemntDecl.new( match )
- when AttlistDecl.PATTERN_RE
- matchdata = $~
- source = $'
- contents << AttlistDecl.new( matchdata )
- when EntityDecl.PATTERN_RE
- matchdata = $~
- source = $'
- contents << EntityDecl.new( matchdata )
- when Comment.PATTERN_RE
- matchdata = $~
- source = $'
- contents << Comment.new( matchdata )
- when NotationDecl.PATTERN_RE
- matchdata = $~
- source = $'
- contents << NotationDecl.new( matchdata )
+ def Parser.parse_dtd parser, parent
+ while parser.has_next?
+ event = parser.pull
+ break if event[0] == :end_doctype
+
+ case event[0]
+ when :elementdecl
+ parent.add ElementDecl.new(event[1])
+ when :attlistdecl
+ parent.add AttlistDecl.new(event[1..-1])
+ when :entitydecl
+ parent.add Entity.new(event[1..-1])
+ when :notationdecl
+ parent.add NotationDecl.new(*event[1..-1])
+ when :externalentity
+ # TODO: fixme
+ when :processing_instruction, :comment, :text
+ # empty
+ else
+ raise ParseException.new("unexpected: #{event}")
end
end
- contents
+ parent
+ end
+
+ def Parser.parse_helper( input )
+ parser = Parsers::BaseParser.new(input, :document_status => :in_doctype)
+ return parse_dtd(parser, Parent.new)
end
end
end
diff -Naurw /opt/src/ruby-1.8.5-20061002/lib/rexml/dtd/elementdecl.rb /lib/ruby/1.8/rexml/dtd/elementdecl.rb
--- /opt/src/ruby-1.8.5-20061002/lib/rexml/dtd/elementdecl.rb 2003-06-10 10:31:07.000000000 +0900
+++ /lib/ruby/1.8/rexml/dtd/elementdecl.rb 1970-01-01 09:00:00.000000000 +0900
@@ -1,17 +0,0 @@
-require "rexml/child"
-module REXML
- module DTD
- class ElementDecl < Child
- START = "<!ELEMENT"
- START_RE = /^\s*#{START}/um
- PATTERN_RE = /^\s*(#{START}.*?)>/um
- PATTERN_RE = /^\s*#{START}\s+((?:[:\w_][-\.\w_]*:)?[-!\*\.\w_]*)(.*?)>/
- #\s*((((["']).*?\5)|[^\/'">]*)*?)(\/)?>/um, true)
-
- def initialize match
- @name = match[1]
- @rest = match[2]
- end
- end
- end
-end
diff -Naurw /opt/src/ruby-1.8.5-20061002/lib/rexml/dtd/entitydecl.rb /lib/ruby/1.8/rexml/dtd/entitydecl.rb
--- /opt/src/ruby-1.8.5-20061002/lib/rexml/dtd/entitydecl.rb 2004-04-02 12:26:19.000000000 +0900
+++ /lib/ruby/1.8/rexml/dtd/entitydecl.rb 2006-10-06 18:52:06.496170200 +0900
@@ -1,3 +1,4 @@
+=begin
require "rexml/child"
module REXML
module DTD
@@ -54,3 +55,4 @@
end
end
end
+=end
diff -Naurw /opt/src/ruby-1.8.5-20061002/lib/rexml/dtd/notationdecl.rb /lib/ruby/1.8/rexml/dtd/notationdecl.rb
--- /opt/src/ruby-1.8.5-20061002/lib/rexml/dtd/notationdecl.rb 2004-04-02 12:26:19.000000000 +0900
+++ /lib/ruby/1.8/rexml/dtd/notationdecl.rb 1970-01-01 09:00:00.000000000 +0900
@@ -1,39 +0,0 @@
-require "rexml/child"
-module REXML
- module DTD
- class NotationDecl < Child
- START = "<!NOTATION"
- START_RE = /^\s*#{START}/um
- PUBLIC = /^\s*#{START}\s+(\w[\w-]*)\s+(PUBLIC)\s+((["']).*?\4)\s*>/um
- SYSTEM = /^\s*#{START}\s+(\w[\w-]*)\s+(SYSTEM)\s+((["']).*?\4)\s*>/um
- def initialize src
- super()
- if src.match( PUBLIC )
- md = src.match( PUBLIC, true )
- elsif src.match( SYSTEM )
- md = src.match( SYSTEM, true )
- else
- raise ParseException.new( "error parsing notation: no matching pattern", src )
- end
- @name = md[1]
- @middle = md[2]
- @rest = md[3]
- end
-
- def to_s
- "<!NOTATION #@name #@middle #@rest>"
- end
-
- def write( output, indent )
- indent( output, indent )
- output << to_s
- end
-
- def NotationDecl.parse_source source, listener
- md = source.match( PATTERN_RE, true )
- thing = md[0].squeeze(" \t\n\r")
- listener.send inspect.downcase, thing
- end
- end
- end
-end
diff -Naurw /opt/src/ruby-1.8.5-20061002/lib/rexml/element.rb /lib/ruby/1.8/rexml/element.rb
--- /opt/src/ruby-1.8.5-20061002/lib/rexml/element.rb 2006-09-08 10:53:31.000000000 +0900
+++ /lib/ruby/1.8/rexml/element.rb 2006-10-06 19:00:22.623659300 +0900
@@ -121,9 +121,7 @@
end
def root
- return elements[1] if self.kind_of? Document
- return self if parent.kind_of? Document or parent.nil?
- return parent.root
+ parent.nil? ? self : parent.root
end
# Evaluates to the document to which this element belongs, or nil if this
diff -Naurw /opt/src/ruby-1.8.5-20061002/lib/rexml/parsers/baseparser.rb /lib/ruby/1.8/rexml/parsers/baseparser.rb
--- /opt/src/ruby-1.8.5-20061002/lib/rexml/parsers/baseparser.rb 2006-09-08 10:53:33.000000000 +0900
+++ /lib/ruby/1.8/rexml/parsers/baseparser.rb 2006-10-06 18:58:00.054686300 +0900
@@ -103,7 +103,8 @@
######################################################################
MISSING_ATTRIBUTE_QUOTES = /^<#{NAME_STR}\s+#{NAME_STR}\s*=\s*[^"']/um
- def initialize( source )
+ def initialize source, option = {}
+ @option = option
self.stream = source
end
@@ -126,10 +127,10 @@
attr_reader :source
- def stream=( source )
+ def stream= source
@source = SourceFactory.create_from( source )
@closed = nil
- @document_status = nil
+ @document_status = @option[:document_status]
@tags = []
@stack = []
@entities = []
diff -Naurw /opt/src/ruby-1.8.5-20061002/lib/rexml/parsers/streamparser.rb /lib/ruby/1.8/rexml/parsers/streamparser.rb
--- /opt/src/ruby-1.8.5-20061002/lib/rexml/parsers/streamparser.rb 2006-04-14 11:56:44.000000000 +0900
+++ /lib/ruby/1.8/rexml/parsers/streamparser.rb 2006-10-06 18:54:11.942928700 +0900
@@ -1,3 +1,5 @@
+require 'rexml/parsers/baseparser'
+
module REXML
module Parsers
class StreamParser
diff -Naurw /opt/src/ruby-1.8.5-20061002/lib/rexml/parsers/treeparser.rb /lib/ruby/1.8/rexml/parsers/treeparser.rb
--- /opt/src/ruby-1.8.5-20061002/lib/rexml/parsers/treeparser.rb 2006-04-14 11:56:44.000000000 +0900
+++ /lib/ruby/1.8/rexml/parsers/treeparser.rb 2006-10-06 18:54:28.689800100 +0900
@@ -3,7 +3,7 @@
module REXML
module Parsers
class TreeParser
- def initialize( source, build_context = Document.new )
+ def initialize source, build_context
@build_context = build_context
@parser = Parsers::BaseParser.new( source )
end
diff -Naurw /opt/src/ruby-1.8.5-20061002/lib/rexml/text.rb /lib/ruby/1.8/rexml/text.rb
--- /opt/src/ruby-1.8.5-20061002/lib/rexml/text.rb 2006-04-14 11:56:43.000000000 +0900
+++ /lib/ruby/1.8/rexml/text.rb 2006-10-09 15:12:42.191645500 +0900
@@ -1,7 +1,5 @@
require 'rexml/entity'
-require 'rexml/doctype'
require 'rexml/child'
-require 'rexml/doctype'
require 'rexml/parseexception'
module REXML