Forum: Ruby A hopefully simple question

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Cd07add9735cfe4852973d717b6fb51a?d=identicon&s=25 Chuft Captain (chuft)
on 2009-04-09 06:04
Hello,

I downloaded an irc bot written in Ruby. I haven't programmed in many
years but couldn't resist the urge to tinker with the code so I peeked
inside.

Basically I am trying to add additional string recognition statements to
this bot, so it says things in response to things people say in the
channel.

For example the code contains this statement:

      elsif msg.text == "lol"
        reply(msg, " LOLOLOLOL")

This works fine.  However I would like to have it respond if the
statement being evaluated has "lol" anywhere in it, not just if it is
exactly "lol".  In other words, I want to search their string, which
appears to be in the variable msg.text, to see if it contains "lol".  In
the past, I have found this to be a simple matter in other languages.

I have been unable to find out how to do this in Ruby.  If I try this:

      elsif msg.text.include? "lol"
        reply(msg, " LOLOLOLOL")

the bot either does not run at all, or else quits immediately. Similar
instant failure occurs when I try

      elsif msg.text.include?("lol")
        reply(msg, " LOLOLOLOL")

or

     elsif msg.text =~ "lol"
        reply(msg, " LOLOLOLOL")


Is there a simple way to accomplish this task by replacing the ==
comparison operator with something else that searches a string variable
for a substring?

Thanks
770048af205ed307b8cf35ae2282ee2f?d=identicon&s=25 Michael Malone (Guest)
on 2009-04-09 06:13
(Received via mailing list)
Chuft Captain wrote:
> Is there a simple way to accomplish this task by replacing the ==
> comparison operator with something else that searches a string variable
> for a substring?
>
> Thanks
>
/Everybody stand back/
I know regular expressions

if msg.text =~ %r{lol}i
    reply(msg, " LOLOLOLOL")

=======================================================================
This email, including any attachments, is only for the intended
addressee.  It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
 altered or corrupted during transmission.
=======================================================================
Aafa8848c4b764f080b1b31a51eab73d?d=identicon&s=25 Phlip (Guest)
on 2009-04-09 06:40
(Received via mailing list)
Michael Malone wrote:

> /Everybody stand back/
> I know regular expressions

Our hero!

> if msg.text =~ %r{lol}i
>     reply(msg, " LOLOLOLOL")

bla> echololia is a serious aphasia

bot> LOLOLOLOL

bla> uh... k
Ac973bbf69fc0b9fcbf1559e09877281?d=identicon&s=25 John Sikora (agnrmidst)
on 2009-04-09 06:44
Phlip wrote:
> Michael Malone wrote:
>
>> /Everybody stand back/
>> I know regular expressions
>
> Our hero!
>
>> if msg.text =~ %r{lol}i
>>     reply(msg, " LOLOLOLOL")
>
> bla> echololia is a serious aphasia
>
> bot> LOLOLOLOL
>
> bla> uh... k


It seems that if msg.text was a String object, then the include? method
should work.
The first thing I would do would be to try...

puts msg.text.class

...to know exactly what I am dealing with.


John S.
770048af205ed307b8cf35ae2282ee2f?d=identicon&s=25 Michael Malone (Guest)
on 2009-04-09 06:46
(Received via mailing list)
Phlip wrote:
> bla> echololia is a serious aphasia
>
> bot> LOLOLOLOL
>
> bla> uh... k
>
%r{\Wlol\W}i

da di duh da...
*indiana jones theme music*

=======================================================================
This email, including any attachments, is only for the intended
addressee.  It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
 altered or corrupted during transmission.
=======================================================================
Cd07add9735cfe4852973d717b6fb51a?d=identicon&s=25 Chuft Captain (chuft)
on 2009-04-09 06:47
Michael Malone wrote:
> Chuft Captain wrote:
>> Is there a simple way to accomplish this task by replacing the ==
>> comparison operator with something else that searches a string variable
>> for a substring?
>>
>> Thanks
>>
> /Everybody stand back/
> I know regular expressions
>
> if msg.text =~ %r{lol}i
>     reply(msg, " LOLOLOLOL")
>


You are a god among men. You have my thanks!
This topic is locked and can not be replied to.