Splitting a string with escapable separator?

class String
  def split_escapable(split_char, escape_char)
    arr = []
    split(split_char).each do |x|
      if(arr[-1] && (/#{escape_char}$/ === arr[-1]))
        arr[-1] << x
      else
        arr << x
      end
    end
    arr
  end
end

···

-----Original Message-----
From: Michael Schuerig [mailto:michael@schuerig.de]
Sent: Wednesday, 28 September 2005 9:47 AM
To: ruby-talk ML
Subject: Splitting a string with escapable separator?

I'm trying to come up with an *elegant* way to split a string into an
array at a separator with the additional feature that the separators can
be escaped. It should work like this

  "Hello\, World,Hi".split_escapable(',' '\')
  # => ["Hello, World", "Hi"]

Through a number of permutations with regexps, scan and the rest of the
family, I was unable to find a solution. I could parse the given string
myself, going though it character by character, but I'd prefer a less
pedestrian approach.

Michael

--
Michael Schuerig All good people read good books
mailto:michael@schuerig.de Now your conscience is clear
http://www.schuerig.de/michael/ --Tanita Tikaram, Twist In My Sobriety

#####################################################################################
This email has been scanned by MailMarshal, an email content filter.
#####################################################################################