[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

literal quote in an array?

Simon Schuster

9/24/2007 5:28:00 PM

using colons for now, but would like to somehow encapsulate a sentence
in this way (basically), with quotes.

speaker = ["joe ", "betty "]
expression = ["said: ", "replied: ", "stated: "]
content = ["hello.", "bye."]

053:0> sentence = speaker[0] + expression[1] + content[0]
"joe replied: hello."
but I'd like to get:
"joe replied, "hello.""

thanks!

7 Answers

Tim Hunter

9/24/2007 5:32:00 PM

0

Simon Schuster wrote:
> using colons for now, but would like to somehow encapsulate a sentence
> in this way (basically), with quotes.
>
> speaker = ["joe ", "betty "]
> expression = ["said: ", "replied: ", "stated: "]
> content = ["hello.", "bye."]
>
> 053:0> sentence = speaker[0] + expression[1] + content[0]
> "joe replied: hello."
> but I'd like to get:
> "joe replied, "hello.""
>
> thanks!

'"hello"'
%q{"hello"}
"\"hello\""
--
Posted via http://www.ruby-....

Gaspard Bucher

9/24/2007 5:38:00 PM

0

This can work if you do not have strange characters in the content:
sentence = speaker[0] + expression[1] + content[0].inspect

This is better:
sentence = speaker[0] + expression[1] + "\"#{content[0]}\""

2007/9/24, Simon Schuster <significants@gmail.com>:
> using colons for now, but would like to somehow encapsulate a sentence
> in this way (basically), with quotes.
>
> speaker = ["joe ", "betty "]
> expression = ["said: ", "replied: ", "stated: "]
> content = ["hello.", "bye."]
>
> 053:0> sentence = speaker[0] + expression[1] + content[0]
> "joe replied: hello."
> but I'd like to get:
> "joe replied, "hello.""
>
> thanks!
>
>
> !DSPAM:46f7f33b123781222944467!
>
>

Sebastian Hungerecker

9/24/2007 5:44:00 PM

0

Simon Schuster wrote:
> speaker = ["joe ", "betty "]
> expression = ["said", "replied", "stated"]
> content = ["hello.", "bye."]
>
> 053:0> sentence = speaker[0] + expression[1] + content[0]
> "joe replied: hello."
> but I'd like to get:
> "joe replied, "hello.""

I'd do it like this:
speaker = %w(joe betty)
expression = %w(said replied stated)
content = %w(hello. bye.)
sentence = "#{speaker[0]} #{expression[1]}, #{content[0].inspect}"

If using inspect feels too hackish to you, you could use \"#{content[0]}\"
instead.


HTH,
Sebastian
--
NP: Shape of Despair - Angels of Distress
Jabber: sepp2k@jabber.org
ICQ: 205544826

Rob Biedenharn

9/24/2007 5:44:00 PM

0

On Sep 24, 2007, at 1:37 PM, Gaspard Bucher wrote:
> 2007/9/24, Simon Schuster <significants@gmail.com>:
>> using colons for now, but would like to somehow encapsulate a
>> sentence
>> in this way (basically), with quotes.
>>
>> speaker = ["joe ", "betty "]
>> expression = ["said: ", "replied: ", "stated: "]
>> content = ["hello.", "bye."]
>>
>> 053:0> sentence = speaker[0] + expression[1] + content[0]
>> "joe replied: hello."
>> but I'd like to get:
>> "joe replied, "hello.""
>>
>> thanks!
>>
>> !DSPAM:46f7f33b123781222944467!
> This can work if you do not have strange characters in the content:
> sentence = speaker[0] + expression[1] + content[0].inspect
>
> This is better:
> sentence = speaker[0] + expression[1] + "\"#{content[0]}\""

Or better still:

sentence = %{#{speaker[0]} #{expression[1]} "#{content[0]}"}

Then you don't need the extra spaces in the speaker and expression
elements.

-Rob

Rob Biedenharn http://agileconsult...
Rob@AgileConsultingLLC.com



Simon Schuster

9/24/2007 5:52:00 PM

0

excellent, thank you

On 9/24/07, Gaspard Bucher <gaspard@teti.ch> wrote:
> This can work if you do not have strange characters in the content:
> sentence = speaker[0] + expression[1] + content[0].inspect
>
> This is better:
> sentence = speaker[0] + expression[1] + "\"#{content[0]}\""
>
> 2007/9/24, Simon Schuster <significants@gmail.com>:
> > using colons for now, but would like to somehow encapsulate a sentence
> > in this way (basically), with quotes.
> >
> > speaker = ["joe ", "betty "]
> > expression = ["said: ", "replied: ", "stated: "]
> > content = ["hello.", "bye."]
> >
> > 053:0> sentence = speaker[0] + expression[1] + content[0]
> > "joe replied: hello."
> > but I'd like to get:
> > "joe replied, "hello.""
> >
> > thanks!
> >
> >
> > !DSPAM:46f7f33b123781222944467!
> >
> >
>
>

Phrogz

9/24/2007 6:39:00 PM

0

On Sep 24, 11:28 am, "Simon Schuster" <significa...@gmail.com> wrote:
> using colons for now, but would like to somehow encapsulate a sentence
> in this way (basically), with quotes.
>
> speaker = ["joe ", "betty "]
> expression = ["said: ", "replied: ", "stated: "]
> content = ["hello.", "bye."]
>
> 053:0> sentence = speaker[0] + expression[1] + content[0]
> "joe replied: hello."
> but I'd like to get:
> "joe replied, "hello.""

Seeing what you're doing, I thought I'd show you my "String#variation"
method, that allows you to write a generic sentence like this:
q = "(How (much|many)|What) is (the (value|result) of)? "
and generate random variations on it via:
q.variation

If you have variables you want to substitute into the string, you can
either do that during construction (if they never change):
q = "(Hello|Howdy), #{name}"
or you can substitute the name variable on the fly:
q = "(Hello|Howdy), :name"
greeting = q.variation( :name=>"Bob" )

I wrote this code for my solution to Quiz #48 [1], and have only ever
used it there, but it's reasonably simple and seems solid enough.

class String
def variation( values={} )
out = self.dup
while out.gsub!( /\(([^())?]+)\)(\?)?/ ){
( $2 && ( rand > 0.5 ) ) ? '' : $1.split( '|' ).random
}; end
out.gsub!( /:(#{values.keys.join('|')})\b/ ){ values[$1.intern] }
out.gsub!( /\s{2,}/, ' ' )
out
end
end


Perhaps you will find it useful.

[1] http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-t...

Phrogz

9/24/2007 6:41:00 PM

0

On Sep 24, 12:38 pm, Phrogz <phr...@mac.com> wrote:
> class String
> def variation( values={} )
> out = self.dup
> while out.gsub!( /\(([^())?]+)\)(\?)?/ ){
> ( $2 && ( rand > 0.5 ) ) ? '' : $1.split( '|' ).random
> }; end
> out.gsub!( /:(#{values.keys.join('|')})\b/ ){ values[$1.intern] }
> out.gsub!( /\s{2,}/, ' ' )
> out
> end
> end

Oops, I forgot that this relies on having:

class Array
def random
self[ rand( self.length ) ]
end
end