From: Gregory Brown Date: 2008-07-31T03:10:21+09:00 Subject: Re: Suggestions for improving a trivial tag parser On Wed, Jul 30, 2008 at 2:07 PM, Gregory Brown wrote: > On Wed, Jul 30, 2008 at 1:53 PM, Robert Dober wrote: >> What about >> >> eles = split( %r{()} ).delete_if{|x| x.empty? } >> eles.size.one? ? eles.first : eles > > I needed something a little more restricted than that, but you gave me > almost exactly what I need: > > def parse_inline_styles(text) #:nodoc: > segments = text.split( %r{()} ).delete_if{|x| x.empty? } > segments.size == 1 ? segments.first : segments > end Whoops, make that: def parse_inline_styles(text) #:nodoc: segments = text.split( %r{()} ).delete_if{|x| x.empty? } segments.size == 1 ? segments.first : segments end *Slaps head*. I totally get what I was missing out on before, when you use groupings, split includes the matched segments: >> "kitten robot snake robot tree robot".split(/(robot)/) => ["kitten ", "robot", " snake ", "robot", " tree ", "robot"] >> "kitten robot snake robot tree robot".split(/robot/) => ["kitten ", " snake ", " tree "]