[#74825] Millisecond in time. — place4oracle@... (Warren)

Hi,

17 messages 2003/07/01
[#74827] Re: Millisecond in time. — Harry Ohlsen <harryo@...> 2003/07/01

Warren wrote:

[#74841] Re: Millisecond in time. — Anders Borch <spam@...> 2003/07/01

Harry Ohlsen wrote:

[#74853] Aeditor-0.1 is unleashed — "Simon Strandgaard" <0bz63fz3m1qt3001@...>

Aeditor is a editor-widget written in Ruby. The primary

17 messages 2003/07/01

[#74884] Speaking of I18N... — "Hal E. Fulton" <hal9000@...>

I don't suppose anyone has implemented any

17 messages 2003/07/01

[#74894] rb_gc() and scan stack — "Simon Strandgaard" <0bz63fz3m1qt3001@...>

I were experimenting with Init_stack, when I discovered a flaw in my mind.

12 messages 2003/07/01

[#74912] Ruby9i now available — Jim Cain <list@...>

All,

18 messages 2003/07/02

[#74980] OT: It's that time of year again ... — james_b <james_b@...>

Happy Birthmonth to all fellow Rubyists born in July!

19 messages 2003/07/02

[#75023] A Quick Guide to SQLite and Ruby — why the lucky stiff <ruby-talk@...>

-Talkers:

17 messages 2003/07/02

[#75119] purpose of replace method — Ian Macdonald <ian@...>

Hi,

17 messages 2003/07/04

[#75137] How to create Shell Links on Windows? — Timon Christl <me@...>

Is there an easy way to create or modify shell links (.lnk) with ruby on

12 messages 2003/07/04

[#75160] seeking feedback on my first Ruby program — "Joe Cheng" <code@...>

I just took my first stab at writing a useful Ruby program. My programming

11 messages 2003/07/04

[#75307] Need regex to match "^\n" — Jim Freeze <jim@...>

Hi:

16 messages 2003/07/06

[#75369] Code Snippet: Array.shuffle — Stefan Arentz <stefan.arentz@...>

14 messages 2003/07/08

[#75420] My brief and torrid affair with Ruby. — Ray Cote <rgacote@...>

Hi List:

150 messages 2003/07/08
[#75421] Re: My brief and torrid affair with Ruby. — Daniel Carrera <dcarrera@...> 2003/07/09

-----BEGIN PGP SIGNED MESSAGE-----

[#75425] Re: My brief and torrid affair with Ruby. — Ray Cote <rgacote@...> 2003/07/09

At 9:08 AM +0900 7/9/03, Daniel Carrera wrote:

[#75426] Re: My brief and torrid affair with Ruby. — Daniel Carrera <dcarrera@...> 2003/07/09

-----BEGIN PGP SIGNED MESSAGE-----

[#75433] Re: My brief and torrid affair with Ruby. — Stephyn Butcher <tendzin.dorje@...> 2003/07/09

They don't call GPL a legal virus for nothing:

[#75527] Re: My brief and torrid affair with Ruby. — "Hal E. Fulton" <hal9000@...> 2003/07/09

----- Original Message -----

[#75529] Re: My brief and torrid affair with Ruby. — Daniel Carrera <dcarrera@...> 2003/07/09

-----BEGIN PGP SIGNED MESSAGE-----

[#75548] OT: GPL - was Re: My brief and torrid affair with Ruby. — "Hal E. Fulton" <hal9000@...> 2003/07/09

> > Are you honestly saying that you don't understand

[#75565] Re: OT: GPL - was Re: My brief and torrid affair with Ruby. — Chalmers <feldt@...> 2003/07/09

Sorry for this long post and rambling. Just skip if you're not in

[#75588] Re: OT: GPL - was Re: My brief and torrid affair with Ruby. — Austin Ziegler <austin@...> 2003/07/10

-----BEGIN PGP SIGNED MESSAGE-----

[#75610] Re: OT: GPL - was Re: My brief and torrid affair with Ruby. — Robert Feldt <feldt@...> 2003/07/10

Austin Ziegler <austin@halostatue.ca> skrev den Thu, 10 Jul 2003 10:10:03

[#75530] Re: My brief and torrid affair with Ruby. — "Michael Campbell" <michael_s_campbell@...> 2003/07/09

[#75531] Re: My brief and torrid affair with Ruby. — Daniel Carrera <dcarrera@...> 2003/07/09

-----BEGIN PGP SIGNED MESSAGE-----

[#75711] Re: My brief and torrid affair with Ruby. — "Sean O'Dell" <sean@...> 2003/07/11

"Daniel Carrera" <dcarrera@math.umd.edu> wrote in message

[#75712] Re: My brief and torrid affair with Ruby. — Daniel Carrera <dcarrera@...> 2003/07/11

-----BEGIN PGP SIGNED MESSAGE-----

[#75536] Re: My brief and torrid affair with Ruby. — "Hal E. Fulton" <hal9000@...> 2003/07/09

----- Original Message -----

[#75539] Re: My brief and torrid affair with Ruby. — "Gennady" <gfb@...> 2003/07/09

OK, Daniel, let's put it this way: if you do not use something there's

[#75438] NASA using Ruby? — Harry Ohlsen <harryo@...>

I noticed a reference in the intro blurb for Dave Thomas's talk at OSCON to NASA doing numerical simulations using Ruby.

24 messages 2003/07/09

[#75570] Ruby T-Shirt Idea — shout@... (Austin King)

Keywords: advocacy, silly t-shirts, Request For Feedback

43 messages 2003/07/09

[#75654] Re: Ruby T-Shirt Idea — "Orion Hunter" <orion2480@...>

What we need is a code snippet that is excessively long and obfuscate in

31 messages 2003/07/10

[#75767] Getting my IP address — Philip Mak <pmak@...>

Is there a piece of Ruby code somewhere that will tell me what my IP

13 messages 2003/07/11

[#75777] Re: OSCON report — "Volkmann, Mark" <Mark.Volkmann@...>

> -----Original Message-----

19 messages 2003/07/11
[#75810] Re: OSCON report — matz@... (Yukihiro Matsumoto) 2003/07/11

Hi,

[#75811] Re: OSCON report — Matt Lawrence <matt@...> 2003/07/11

On Sat, 12 Jul 2003, Yukihiro Matsumoto wrote:

[#75852] ruby-mysql library load error — eric.anderson@... (Eric Anderson)

I am trying to get the ruby dbi library up and running on my machine.

10 messages 2003/07/12

[#75963] Custom method_missing doesn't trap super call — Richard Dale <Richard_Dale@...>

When I run the code below it produces the following output:

26 messages 2003/07/14

[#75975] Booleans — "Mark J. Reed" <markjreed@...>

Okay, as a convert from Perl to Ruby, I have to say that I love

14 messages 2003/07/14

[#75991] ruby-specific CGI question (I think) — "Kurt M. Dresner" <kdresner@...>

I'm using sessions and forms in my cgi script.

15 messages 2003/07/14

[#76058] How to reduce Ruby runtime error? — Xiangrong Fang <xrfang@...>

Hi my friends,

17 messages 2003/07/15

[#76121] Keyword "with" — "Robert Klemme" <bob.news@...>

66 messages 2003/07/16
[#76134] Re: Keyword "with" — "Robert Klemme" <bob.news@...> 2003/07/16

[#76143] Re: Keyword "with" — Peter Hickman <peter@...> 2003/07/16

Robert Klemme wrote:

[#76148] Other languages' features in Ruby — Ben Giddings <ben@...> 2003/07/16

Hrm, well I'm a Ruby/Java/C/C++/Python/Perl/Lisp/Javascript/PHP...

[#76149] Re: Keyword "with" — "Mark J. Reed" <markjreed@...> 2003/07/16

Peter (having a bad day) Hickman wrote:

[#76181] Re: Keyword "with" — Mark Wilson <mwilson13@...> 2003/07/16

[#76184] Re: Keyword "with" — "Michael Campbell" <michael_s_campbell@...> 2003/07/16

[#76293] Re: Keyword "with" — "Hal E. Fulton" <hal9000@...> 2003/07/17

----- Original Message -----

[#76145] Advocacy: Ruby on/with .net — "Thomas Sondergaard" <thomass@...>

I'd like a minute or two of your time as I try to sell you the idea of ruby

34 messages 2003/07/16

[#76196] OO Design question for Net::HTTP caching extension — Aredridel <aredridel@...>

I'm in the process of writing an HTTP-1.1 extension to Net::HTTP. At

10 messages 2003/07/16

[#76254] What's the point? — Jim Freeze <jim@...>

Hi

19 messages 2003/07/17

[#76336] Aliased setter methods behave differently than other methods? — Jim Cain <list@...>

Here's another question... I am aliasing and redefining certain methods,

11 messages 2003/07/18

[#76372] Binary counter — ptkwt@...1.aracnet.com (Phil Tomson)

I needed to test a class which had a certain number of 'binary' inputs (ie. each input

14 messages 2003/07/18

[#76396] chaining comparisons — "Kurt M. Dresner" <kdresner@...>

When I learned python I was overjoyed that I could evaluate 1 < 2 < 3

36 messages 2003/07/19

[#76424] Proposal: Array#to_h, to simplify hash generation — Gavin Sinclair <gsinclair@...>

Hi -talk,

41 messages 2003/07/19
[#76512] Re: Proposal: Array#to_h, to simplify hash generation — Martin DeMello <martindemello@...> 2003/07/20

Yukihiro Matsumoto <matz@ruby-lang.org> wrote:

[#76513] Re: Proposal: Array#to_h, to simplify hash generation — dblack@... 2003/07/20

Hi --

[#76530] Re: Proposal: Array#to_h, to simplify hash generation — Martin DeMello <martindemello@...> 2003/07/21

dblack@superlink.net wrote:

[#76532] Re: Proposal: Array#to_h, to simplify hash generation — "Gavin Sinclair" <gsinclair@...> 2003/07/21

>

[#76540] Re: Proposal: Array#to_h, to simplify hash generation — dblack@... 2003/07/21

Hi --

[#76473] ruby documentation generator? — "Kurt M. Dresner" <kdresner@...>

I've been googling for a few minutes but I haven't found anything yet.

12 messages 2003/07/20

[#76497] Parsing POST and GET variables simultaneously? — David Heinemeier Hansson <david@...>

Isn't it possible to get variables from POST and GET simultaneously?

13 messages 2003/07/20

[#76499] From Windows internal format to UTF-8? — "renoX" <renZYX@...>

Hello,

13 messages 2003/07/20

[#76551] matz thoughts on Rite ? — "Simon Strandgaard" <0bz63fz3m1qt3001@...>

I don't know much about Rite, therefore I ask.

30 messages 2003/07/21

[#76563] Deep copy — Jim Freeze <jim@...>

Hi

15 messages 2003/07/21

[#76619] Should String#strip take a parameter? — "Warren Brown" <wkb@...>

All,

18 messages 2003/07/21

[#76625] RubyForge.org — Richard Kilmer <rich@...>

All,

37 messages 2003/07/22
[#76831] Re: [ANN] RubyForge.org — "Simon Strandgaard" <0bz63fz3m1qt3001@...> 2003/07/23

On Tue, 22 Jul 2003 12:43:41 +0200, Oliver Bolzer wrote:

[#76693] Bug report: ruby-1.8.0p3 fails to compile under FreeBSD-4.7 — Brian Candler <B.Candler@...>

gcc -fPIC -g -O2 -DDB_DBM_HSEARCH -DDBM_HDR="<db.h>" -I. -I/u/home/telinco/build/ruby/ruby-1.8.0 -I/u/home/telinco/build/ruby/ruby-1.8.0 -I/u/home/telinco/build/ruby/ruby-1.8.0/ext/dbm -DHAVE_DB_H -DHAVE_SYS_CDEFS_H -DHAVE___DB_NDBM_OPEN -DHAVE___DB_NDBM_CLEARERR -c dbm.c

10 messages 2003/07/22

[#76697] String substitution without RegEx — Andreas Schwarz <usenet@...>

I wanted to do a simple string substitution, and was surprised to see

20 messages 2003/07/22

[#76751] New RDoc template, and a question — Dave Thomas <dave@...>

Michael Granger has produced a wonderful new RDoc template, which looks

37 messages 2003/07/23

[#76783] Embedding problem - SEGV — Brian Candler <B.Candler@...>

I have a problem with embedding Ruby, which hopefully someone can shed some

16 messages 2003/07/23

[#76843] Re: [OT] subversion, was [ANN] RubyForge.org — "Bennett, Patrick" <Patrick.Bennett@...>

Hmm, the linuxworld article didn't really say anything useful about

12 messages 2003/07/23

[#76892] ruby 1.8.0 preview4 — matz@... (Yukihiro Matsumoto)

Hello,

44 messages 2003/07/24

[#76984] Patches to 1.8.0p4 to add Bessel functions for those that have 'em — Mike Hall <mghall@...>

Here's some simple patches to configure.in, configure and math.c

23 messages 2003/07/25
[#77006] Re: Patches to 1.8.0p4 to add Bessel functions for those that have 'em — matz@... (Yukihiro Matsumoto) 2003/07/25

Hi,

[#76991] Confused about locking a file via file.flock(File::LOCK_EX) — Ludwigi Beethoven <aix_tech@...>

I am writing a ruby appl under AIX where I need to

11 messages 2003/07/25

[#77082] Set doesn't have [] instance method — Gavin Sinclair <gsinclair@...>

It should, shouldn't it? It's meant to combine the fast lookup of

15 messages 2003/07/26

[#77087] What's wrong with ruby garden? — "Carl Youngblood" <carl@...>

It seems that Ruby Garden is down right now. Does anyone know what's

10 messages 2003/07/26

[#77129] Ruby in Ruby — Austin Ziegler <austin@...>

Over on the pragprog list, Ron Jeffries suggested that it might be

15 messages 2003/07/28

[#77144] ruby 1.8.0 preview5 — matz@... (Yukihiro Matsumoto)

Hello,

16 messages 2003/07/28

[#77149] winsock problem? — Xiangrong Fang <xrfang@...>

Hi,

14 messages 2003/07/28

[#77176] Fishing for ideas: Ruby-talk for Java coders — Armin Roehrl <armin@...>

Hi all,

19 messages 2003/07/28

[#77197] Parser generator — "Rodrigo B. de Oliveira" <rodrigob@...>

I'm evaluating language/frameworks for creating a toy language compiler =

13 messages 2003/07/29

[#77227] Warnings? — Tim Bates <tim@...>

Hi all,

15 messages 2003/07/29
[#77242] Re: Warnings? — matz@... (Yukihiro Matsumoto) 2003/07/29

Hi,

[#77354] Ruby could be wildly more popular if it had ... — quixoticsycophant@... (Jeff Mitchell)

Brackets.

40 messages 2003/07/30
[#77694] Re: Ruby could be wildly more popular if it had ... — Martin DeMello <martindemello@...> 2003/08/01

Chris Thomas <chris@m-audio.com> wrote:

[#77359] Hm... nice, Euclid is a one-liner — Rudolf Polzer <denshimeiru-sapmctacher@...>

a, b = b, a % b while b != 0

12 messages 2003/07/30

[#77408] Bignum multiplication — Harry Ohlsen <harryo@...>

I was just reading about Python 2.3 and they talked about how they've changed their arbitrary-precision integer multiplication to use the Karatsuba multiplication algorithm.

21 messages 2003/07/30

[#77516] wanted: official mirrors for 1.8.0 — matz@... (Yukihiro Matsumoto)

Hello,

24 messages 2003/07/31

[#77528] ruby 1.8.0 preview6 — matz@... (Yukihiro Matsumoto)

Hello,

14 messages 2003/07/31

[#77590] Spam at ruby-talk — Daniel Carrera <dcarrera@...>

I don't know who runs the ruby-talk mailing list. I've noticed that

13 messages 2003/07/31
[#77595] Re: Spam at ruby-talk — Dave Thomas <dave@...> 2003/07/31

Daniel Carrera wrote:

[#77592] Changing ==,>,<, etc — elbows@... (Nathan Weston)

The latest Perl exegesis

15 messages 2003/07/31

[#77623] Extracting a parent class — Michael Garriss <mgarriss@...>

Sorry about the newbie question but....

14 messages 2003/07/31

Ruby Golf: Object Diff

From: "John W. Long" <ws@...>
Date: 2003-07-19 03:20:39 UTC
List: ruby-talk #76389
The problem:

When debugging a program that uses large objects and a test fails because
the object is different from the expected it is sometimes hard to discern
the difference between the objects from the output of Test::Unit.

The goal of this hole is to create a method that will output the differences
of two objects in an intelligent manner. Something similar in concept to
this:
        #<TestObject1:0x1 ... @b="b", ... @d="d", ...>
        #<TestObject1:0x2 ... @b="", ... @d="", ...>

You are free to use whatever method you might choose. Program size does not
matter. Creativity and one-up-man-ship is encouraged. We will probably post
the best solution on the wiki.

The following test case is a guideline and may be changed if you have better
ideas for how such a method should work:

<TestCase>
class TestObject1
 attr_accessor :a, :b, :c, :d, :e
 def initialize(a, b, c, d, e = nil)
  @a, @b, @c, @d, @e = a, b, c, d, e
 end
end
class TestObject2
 attr_accessor :a, :b, :c, :d, :f, :g
 def initialize(a, b, c, d, f, g)
  @a, @b, @c, @d, @f, @g = a, b, c, d, f, g
 end
end

class TC_ObjectDiff < Test::Unit::TestCase
 def test_to_s
  object = TestObject1.new('a', 'b', 'c', 'd', [1, 2, 3, 4])
  def object.__id__
   0
  end
  assert_equal('#<TestObject1:0x0 @a="a", @b="b", @c="c", @d="d", @e=[1, 2,
3, 4]>',
   ObjectDiff.object_to_s(object))
 end
 def test_compare
  object1 = TestObject1.new('a', 'b', 'c', 'd')
  def object1.__id__
   1
  end
  object2 = TestObject1.new('a', '', 'c', '')
  def object2.__id__
   2
  end
  string1, string2 = ObjectDiff.compare(object1, object2)
  puts [string1, string2]
  assert_equal('#<TestObject1:0x1 ... @b="b", ... @d="d", ...>', string1)
  assert_equal('#<TestObject1:0x2 ... @b="", ... @d="", ...>', string2)

  complexObject1 = TestObject1.new('1', {:a => 1, :b => 2, :j => 3}, [1, 2,
3], object1)
  def complexObject1.__id__
   3
  end
  complexObject2 = TestObject1.new('1', {:a => 2, :b => object1, :j => 3},
[0, 2], object2)
  def complexObject2.__id__
   4
  end
  string1, string2 = ObjectDiff.compare(complexObject1, complexObject2)
  puts [string1, string2]
  assert_equal('#<TestObject1:0x3 ... @b={:a=>1, :b=>2, ...}, @c=[1, ... 3],
@d=#<TestObject1:0x1 ... @b="b", ... @d="d", ...>, ...>', string1)
  assert_equal('#<TestObject1:0x4 ... @b={:a=>2, :b=>#<TestObject1:0x284a3a8
@c="c", @b="b", @e=nil, @a="a", @d="d">, ...}, @c=[0, ...],
@d=#<TestObject1:0x2 ... @b="", ... @d="", ...>, ...>', string2)
 end
 def test_compare_different_classes
  object1 = TestObject1.new('a', 'b', 'c', 'd')
  def object1.__id__
   5
  end
  object2 = TestObject2.new('a', '', 'c', '', 'f', 'g')
  def object2.__id__
   6
  end

  string1, string2 = ObjectDiff.compare(object1, object2)
  puts [string1, string2]
  assert_equal('#<TestObject1:0x5 ... @b="b", ... @d="d", @e=nil>', string1)
  assert_equal('#<TestObject2:0x6 ... @b="", ... @d="", @f="f", @g="g">',
string2)
 end
 def test_compare_array
  a = [1, 2, 3, 4, 5]
  b = [1, 3, 4, 4, 5, 6]
  string_a, string_b = ObjectDiff.compare_array(a, b)
  puts [string_a, string_b]
  assert_equal('[... 2, 3, ... ...]', string_a)
  assert_equal('[... 3, 4, ... ... 6]', string_b)
 end
 def test_compare_hash
  a = {
   :a => 1,
   :b => 2,
   :c => 3,
   :d => 4
  }
  b = {
   :j => 2,
   :b => 3,
   :c => 3,
   :d => 5
  }
  string_a, string_b = ObjectDiff.compare_hash(a, b)
  puts [string_a, string_b]
  assert_equal('{:a=>1, :b=>2, ... :d=>4}', string_a)
  assert_equal('{       :b=>3, ... :d=>5, :j=>2}', string_b)
 end
end
</TestCase>



Here is my solution:



<MySolution>
class ObjectDiff
 class Node
  attr_reader :object, :nodes

  def initialize(value)
   @object = value
   @nodes = {}
   variables = @object.instance_variables
   variables.each { |key|
    variable = @object.instance_eval(key)
    @nodes[key] = Node.new(variable)
   }
  end

  def to_s
   return @object.inspect if [String, Integer, NilClass, Array, Hash,
Fixnum, Integer, Bignum].index(@object.class)
   string = s_begin(self)
   @nodes.each { |key, node|
    string << "#{key}=#{node.to_s}, "
   }
   s_end(string)
  end

  def compare_with(node)
   return ::ObjectDiff::compare_hash(@object, node.object) if
@object.instance_of?(Hash) and node.object.instance_of?(Hash)
   return ::ObjectDiff::compare_array(@object, node.object) if
@object.instance_of?(Array) and node.object.instance_of?(Array)
   return [@object.inspect, node.object.inspect] if [String, Integer,
NilClass, Array, Hash, Fixnum, Integer, Bignum].index(@object.class)

   keys = []
   @nodes.each_key { |key|
    keys << key
   }
   node.nodes.each_key { |key|
    keys << key
   }
   keys.uniq!
   keys.sort!

   string1 = s_begin(self)
   string2 = s_begin(node)

   keys.each { |key|
    node1 = @nodes[key]
    node2 = node.nodes[key]
    if @nodes.has_key?(key) and node.nodes.has_key?(key)
     if node1.to_s == node2.to_s
      string1 << '... '
      string2 << '... '
     else
      s1, s2 = node1.compare_with(node2)
      string1 << "#{key}=#{s1}, "
      string2 << "#{key}=#{s2}, "
     end
    else
     if @nodes.has_key?(key)
      string1 << "#{key}=#{node1.to_s}, "
     end
     if node.nodes.has_key?(key)
      string2 << "#{key}=#{node2.to_s}, "
     end
    end
   }

   string1 = s_end(string1)
   string2 = s_end(string2)

   [string1, string2]
  end

  def s_begin(node)
   "#<#{node.object.class.name}:0x#{format('%x', node.object.__id__)} "
  end

  def s_end(string)
   string.chomp!(' ')
   string.chomp!(',')
   string << '>'
  end
 end

 def self.object_to_s(object)
  Node.new(object).to_s
 end

 def self.compare(object1, object2)
  node1 = Node.new(object1)
  node2 = Node.new(object2)
  node1.compare_with(node2)
 end

 def self.compare_array(array1, array2)
  if array1.size < array2.size
   a = array2
   b = array1
   flipped = true
  else
   a = array1
   b = array2
   flipped = false
  end

  string1 = '['
  string2 = '['

  for i in 0...a.size
   if i < b.size
    node1 = Node.new(a[i])
    node2 = Node.new(b[i])
    if node1.to_s == node2.to_s
     string1 << '... '
     string2 << '... '
    else
     string_a, string_b = compare(a[i], b[i])
     string1 << "#{string_a}, "
     string2 << "#{string_b}, "
    end
   else
    string1 << Node.new(a[i]).to_s
   end
  end

  string1.strip!
  string1.chomp!(',')
  string2.strip!
  string2.chomp!(',')

  string1 << ']'
  string2 << ']'

  if flipped
   [string2, string1]
  else
   [string1, string2]
  end
 end

 def self.compare_hash(hash1, hash2)
  keys = []
  hash1.each_key { |key|
   keys << key
  }
  hash2.each_key { |key|
   keys << key
  }
  keys.uniq!
  keys.sort!{ |a, b|
   a = a.inspect if a.is_a?(Symbol)
   b = b.inspect if b.is_a?(Symbol)
   a <=> b
  }

  string1 = '{'
  string2 = '{'

  keys.each { |key|
   node1 = Node.new(hash1[key])
   node2 = Node.new(hash2[key])
   if hash1.has_key?(key) and hash2.has_key?(key)
    if node1.to_s == node2.to_s
     string1 << '... '
     string2 << '... '
    else
     s1, s2 = node1.compare_with(node2)
     string1 << "#{key.inspect}=>#{s1}, "
     string2 << "#{key.inspect}=>#{s2}, "
    end
   else
    if hash1.has_key?(key) and not hash2.has_key?(key)
        append = "#{key.inspect}=>#{node1.to_s}, "
     string1 << append
     string2 << (' ' * append.size)
    else
     append = "#{key.inspect}=>#{node2.to_s}, "
     string2 << append
     string1 << (' ' * append.size)
    end
   end
  }
  string1.strip!
  string1.chomp!(',')
  string2.strip!
  string2.chomp!(',')

  string1 << '}'
  string2 << '}'

  [string1, string2]
 end
end
</MySolution>



Feel free to improve upon my code or create your own. Remember this is for
posterity, so be honest...

___________________
John Long
www.wiseheartdesign.com



In This Thread

Prev Next