Errata for _The Ruby Way_, 1st printing
19 February 2002

Page Found by         Problem
---- ---------------- ------------------------------------------
 10  Mike Hall        "site" should be "sight" (Sams did this)
 10  Mike Hall        "for what is" - omit "what is" (Sams!)
 20  Mike Hall        Code fragment needs indenting
 21  Mike Hall        Code fragment needs indenting
 23  Hal Fulton       Code fragment needs indenting
 23  Hal Fulton       zero-indexed"; (move semi outside quote)
 24  Hal Fulton       Code fragment needs indenting
 25  Jos Backus       exit if not str or str.chomp!.empty?
 28  Hal Fulton       Code fragment needs indenting
 29  Hal Fulton       Code fragment needs indenting
 30  Hal Fulton       Code fragment needs indenting
 31  Hal Fulton       Code fragment needs indenting
 32  Hal Fulton       Code fragment needs indenting
 32  Stephan Kaemper  "repeat" example is incorrect;
                      Recommend deleting paras starting
                      "As a crude example..." and "In this
                      example..."
 33  Hal Fulton       Code fragment needs indenting
 35  Hal Fulton       Code fragment needs indenting
 39  Stephan Kaemper  Class member @@count uninitialized
 52  Kent Dahl        Reads: condition is false
                      Should read: condition is true
 57  Doug Kearns      end_excluded? should read exclude_end?
 70  Jos Backus       Bottom: "characters" misspelled
 71  Jos Backus       Top: "characters" misspelled
 71  Hal Fulton       Brackets missing
 92  Hal Fulton       Trash! fix from original source
105  Hal Fulton       2nd 6.12 should be 6.14
116  Hal Fulton       That's not a lowercase sigma!
121  Stephan Kaemper  DST - in other countries also
121  Hal Fulton       Move right paren
123  Jack Dempsey     %a and %A reversed, comments wrong
128  Hal Fulton       Code font: "date" (standard library date)
129  Hal Fulton       Get rid of code font: has a method
140  Steven Grady     Says "one less"; should say "one more" 
141  Stephan Kaemper  Missing left paren: (other)
141  Hal Fulton       Insert "do not"
159  Jos Backus       join should be join(" ")
161  Hal Fulton       Code fragment needs indenting
174  Jos Backus       Reads: shift and unshift
                      Should read: unshift and shift
191  Garance Drosihn  Code wrong! exhaustive, not binary search.
192  Hal Fulton       Replace += with << (twice)
192  Garance Drosihn  Replace last six lines of listing
                      (as shown below).
206  Hal Fulton       Indent first line
207  Hal Fulton       Indent first line
208  Hal Fulton       Code fragment needs indenting
209  Hal Fulton       Code fragment needs indenting
209  Hal Fulton       Remove extra blank space: " that many"
211  Jos Backus       Reads: 
                        perms = File.stat.mode("somefile")
                      Should read:
                        perms = File.stat("somefile").mode
217  Hal Fulton       Change "j ust" to "just"
229  Hal Fulton       Code fragment needs indenting
237  Jos Backus       Reads: you have a table
                      Should read: you have a database
247  Jack Dempsey     In attr_writer comment, a1 should be b1 
259  Hal Fulton       Spelling of "makeWithdrawal"
264  Phil Thomson     Listing 5.7, 1st line: "module" not "class"
266  Hal Fulton       Inadequate indentation
294  Hal Fulton       Change ; to :
294  Hal Fulton       Inadequate indentation
310  Hal Fulton       Blatant falsehood in final paragraph.
                      Delete last sentence and replace with:
                      "We don't advocate the careless use of
                      globals in real-life programs."
327  Hal Fulton       Indent first line
335  Guy Hurst        Should say: "Today is..." not "Hello..."
366  Hal Fulton       2nd "right" should say "wrong"
402  Hal Fulton       Change "others ports" to "other ports"
413  Hal Fulton       Code fragment needs indenting
495  Guy Hurst        2nd para: Omit (otherwise...)
506  Guy Hurst        Note: attrs cannot be accessed by "self."
514  Guy Hurst        Leftover HTML junk


Page 191:

    def search(x)
      if self.data == x
        return self
      elsif x < self.data
        return left != nil ? left.search(x) : nil
      else
        return right != nil ? right.search(x) : nil
      end
    end

Page 192 (replace last 6 lines of listing with these 8):

    str = tree.to_s
    # str is now: 
    # "[bongo,[grimace,[[jewel],monoid,[[nexus],plover,[synergy]]]]]"

    arr = tree.to_a
    # arr is now:
    # ["bongo",["grimace",[["jewel"],"monoid",[["nexus"],"plover",
    # ["synergy"]]]]]