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!