[#5524] Division weirdness in 1.9 — "Florian Frank" <flori@...>
Hi,
[#5536] bug in variable assignment — Mauricio Fern疣dez <mfp@...>
Hi,
On Mon, Aug 08, 2005 at 11:36:22AM +0900, nobuyoshi nakada wrote:
hi,
Hi,
[#5552] Exceptions in threads all get converted to a TypeError — Paul van Tilburg <paul@...>
Hey all,
[#5563] Non-overridable and non-redefinable methods — Eric Mahurin <eric_mahurin@...>
Lately, I've been thinking about the future of ruby
On 8/19/05, Eric Mahurin <eric_mahurin@yahoo.com> wrote:
--- Austin Ziegler <halostatue@gmail.com> wrote:
Just wanted to add a few things.
On 8/19/05, TRANS <transfire@gmail.com> wrote:
Hi --
--- "David A. Black" <dblack@wobblini.net> wrote:
On 8/20/05, Eric Mahurin <eric_mahurin@yahoo.com> wrote:
On 8/20/05, TRANS <transfire@gmail.com> wrote:
On 8/19/05, Eric Mahurin <eric_mahurin@yahoo.com> wrote:
--- Austin Ziegler <halostatue@gmail.com> wrote:
On 20 Aug 2005, at 02:05, Eric Mahurin wrote:
Eric Hodel wrote:
Eric Mahurin wrote:
Hi,
--- SASADA Koichi <ko1@atdot.net> wrote:
Hi,
--- SASADA Koichi <ko1@atdot.net> wrote:
[#5609] Pathname#walk for traversing path nodes (patch) — ES <ruby-ml@...>
Here is a small addition to Pathname against 1.9, probably suited
Evan Webb wrote:
In article <43094510.6090406@magical-cat.org>,
[#5651] File.extname edge case bug? — Daniel Berger <Daniel.Berger@...>
Hi all,
[#5662] Postgrey — Shugo Maeda <shugo@...>
Hi,
[#5676] uri test failures. (Re: [ruby-cvs] ruby/lib, ruby/lib/uri: Lovely RDOC patches from mathew (metaATpoboxDOTcom) on URI/* and getoptlong.rb) — Tanaka Akira <akr@...17n.org>
In article <20050824050801.5B4E0C671F@lithium.ruby-lang.org>,
[#5680] Problem with mkmf and spaces in directory names? — noreply@...
Bugs item #2308, was opened at 2005-08-25 13:42
[#5685] Wilderness Project — "Charles E. Thornton" <ruby-core@...>
OK - I see where ELTS_SHARED is used to implement COPY-ON-WRITE
Re: [PATCH] ostruct.rb: recursive inspect, .send with exotic symbols, return value of assignment
Florian Growrote:
> I've attached a patch for ostruct.rb [...]
Sorry, the patch ignored changed indentation. I've attached a new one.
--------------030707010008010001030404
Content-Type: text/plain;
name="ostruct.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="ostruct.patch"
--- ostruct.rb.original 2005-08-07 10:43:53.257125000 +0200
+++ ostruct.rb 2005-08-07 11:18:15.944625000 +0200
@@ -47,7 +47,7 @@
@table = {}
if hash
for k,v in hash
- @table[k.to_sym] = v
+ @table[k.to_sym] = v
new_ostruct_member(k)
end
end
@@ -68,11 +68,11 @@
end
def new_ostruct_member(name)
+ name = name.to_sym
unless self.respond_to?(name)
- self.instance_eval %{
- def #{name}; @table[:#{name}]; end
- def #{name}=(x); @table[:#{name}] = x; end
- }
+ meta = class << self; self; end
+ meta.send(:define_method, name) { @table[name] }
+ meta.send(:define_method, :"#{name}=") { |x| @table[name] = x }
end
end
@@ -81,14 +81,14 @@
len = args.length
if mname =~ /=$/
if len != 1
- raise ArgumentError, "wrong number of arguments (#{len} for 1)", caller(1)
+ raise ArgumentError, "wrong number of arguments (#{len} for 1)", caller(1)
end
if self.frozen?
- raise TypeError, "can't modify frozen #{self.class}", caller(1)
+ raise TypeError, "can't modify frozen #{self.class}", caller(1)
end
mname.chop!
- @table[mname.intern] = args[0]
self.new_ostruct_member(mname)
+ @table[mname.intern] = args[0]
elsif len == 0
@table[mid]
else
@@ -103,16 +103,35 @@
@table.delete name.to_sym
end
+ InspectKey = :__inspect_key__ # :nodoc:
+
#
# Returns a string containing a detailed summary of the keys and values.
#
def inspect
- str = "<#{self.class}"
- for k,v in @table
- str << " #{k}=#{v.inspect}"
+ str = "#<#{self.class}"
+
+ Thread.current[InspectKey] ||= []
+ if Thread.current[InspectKey].include?(self) then
+ str << " ..."
+ else
+ first = true
+ for k,v in @table
+ str << "," unless first
+ first = false
+
+ Thread.current[InspectKey] << v
+ begin
+ str << " #{k}=#{v.inspect}"
+ ensure
+ Thread.current[InspectKey].pop
+ end
+ end
end
+
str << ">"
end
+ alias :to_s :inspect
attr_reader :table # :nodoc:
protected :table
--------------030707010008010001030404--