[#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
[PATCH] ostruct.rb: recursive inspect, .send with exotic symbols, return value of assignment
Moin. I've attached a patch for ostruct.rb (against 1.8.2, but I don't think there was changes to it lately) which makes the following work: > irb(main):001:0> o = OpenStruct.new > => #<OpenStruct> > irb(main):002:0> o.o = o > => #<OpenStruct o=#<OpenStruct ...>> > irb(main):003:0> o.foo = "bar" > => "bar" > irb(main):004:0> o > => #<OpenStruct foo="bar", o=#<OpenStruct ...>> > irb(main):005:0> o.to_s > => "#<OpenStruct foo=\"bar\", o=#<OpenStruct ...>>" > irb(main):006:0> o.send(:"->=", "foo") > => "foo" > irb(main):007:0> o > => #<OpenStruct ->="foo", foo="bar", o=#<OpenStruct ...>> It's mostly just small changes, but I think the recursive inspect is actually important. Making the inspect result more consistent with Object#inspect is probably also a good idea. Regards, Florian Gross
Attachments (1)
--- ostruct.rb.original 2005-08-07 10:43:53.257125000 +0200
+++ ostruct.rb 2005-08-07 11:18:15.944625000 +0200
@@ -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
@@ -87,8 +87,8 @@
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}"
+ 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