Kenosis
September 17, 2007, 1:23pm
1
Greetings friends,
I wondering if anyone here has some Ruby-fu they can share with WRT
for following problem. I’ve toyed with this today and don’t like my
solution so I thought I’d run it by y’all. In summary, suppose we
have the following input, say to a command line interpreter:
foo bar “baz 42” “matz ruby yarv” jruby
Running split on this string, of course, yeilds:
[‘foo’, ‘bar’, ‘"baz’, ‘42"’, ‘"matz’, ‘ruby’, ‘yarv"’, ‘jruby’]
What I’d like instead is a “split” that respects the quoted word
groupings, which would result in the following instead:
[‘foo’, ‘bar’, ‘baz 42’, ‘matz ruby yarv’, ‘jruby’]
Thanks in advance for any ideas you can lend!
Cheers,
Ken
Kenosis
September 17, 2007, 1:23pm
2
On Sep 13, 5:12 pm, Kenosis [email protected] wrote:
Ken
My cleanest solution thus far, which does not properly handled nested
quotes:
a = “foo ‘bar baz bim’ 42 ‘java jruby jar’”
puts a.split(“'”).each { |b| b.strip! }
Kenosis
September 17, 2007, 1:25pm
3
On Sep 13, 2007, at 7:15 PM, Kenosis wrote:
What I’d like instead is a “split” that respects the quoted word
groupings, which would result in the following instead:
[‘foo’, ‘bar’, ‘baz 42’, ‘matz ruby yarv’, ‘jruby’]
require “shellwords”
=> true
Shellwords.shellwords(%q{foo bar “baz 42” “matz ruby yarv” jruby})
=> [“foo”, “bar”, “baz 42”, “matz ruby yarv”, “jruby”]
Hope that helps.
James Edward G. II
Kenosis
September 17, 2007, 1:25pm
4
On 9/14/07, Kenosis [email protected] wrote:
Thanks in advance for any ideas you can lend!
Not sure if this is the best way, but just doing this off the cuff and
it
works:
scan(/\w+|".+?"/)
Regards,
Peter C.
Kenosis
September 25, 2007, 11:05pm
5
On Sep 13, 5:45 pm, James Edward G. II [email protected]
wrote:
=> [“foo”, “bar”, “baz 42”, “matz ruby yarv”, “jruby”]
Hope that helps.
James Edward G. II
Yes, Jame - that helps a lot
Best,
Ken