From: dblack@... Date: 2006-04-22T08:14:13+09:00 Subject: Re: Problem with String.my_custom_func! "Can't change the value of self" Hi -- On Sat, 22 Apr 2006, Philip Hallstrom wrote: > Hi all - > > I'm extending the String class to include a tidy_up_html() method that runs > the string using tidy. Works great. However, I'd like to also have a > tidy_up_html!() method and do it in place. > > The problem is that the tidy library *has* to return a new value, so at some > point I have to do: > > self = ...... > > at which point I get the error: Can't change the value of self > > Here's a trivial example: > > class String > def my_func! > self.gsub!(/x/, 'y') #okay > self = result_of_tidy_call #not okay > end > end > > I'm new enough to ruby that I can't figure out how to work around this... > > Suggestions? There's a String#replace method: s = "abc" s.replace("def") s is now the same object, but with different contents. David -- David A. Black (dblack@wobblini.net) Ruby Power and Light, LLC (http://www.rubypowerandlight.com) "Ruby for Rails" PDF now on sale! http://www.manning.com/black Paper version coming in early May!