Forum: Ruby help if else

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.
Tonyrrr T. (Guest)
on 2007-07-26 18:55
   if ((( chaine[i+14] == "twincards>false</twincards")||(chaine[i+14]
== "twincards>true</twincards"))|| ( chaine[ i+14]== "twincards
xsi:nil="1"/"))


???

  : syntax error, expecting      end-of-file


????
Jano S. (Guest)
on 2007-07-26 19:09
(Received via mailing list)
On 7/26/07, Tonyrrr T. <removed_email_address@domain.invalid> wrote:
>    if ((( chaine[i+14] == "twincards>false</twincards")||(chaine[i+14]
> == "twincards>true</twincards"))|| ( chaine[ i+14]== "twincards
- xsi:nil="1"/"))
+ xsi:nil=\"1\"/"))

you have to escape quotes with \
Ben B. (Guest)
on 2007-07-26 19:23
(Received via mailing list)
On Thu, Jul 26, 2007, Tonyrrr T. wrote:
>    if ((( chaine[i+14] == "twincards>false</twincards")||(chaine[i+14]
> == "twincards>true</twincards"))|| ( chaine[ i+14]== "twincards
> xsi:nil="1"/"))

You're closing one too many sets of parents after the "true"
conditional.  Also, in the third conditional, you need to either escape
the inner quotes or use single quotes:

  "twincards xsi:nil=\"1\"/"
  'twincards xsi:nil="1"/'

You might want to rewrite it for better legibility, too.  A suggestion:

  test = chaine[ i + 14 ]
  if test == 'twincards>false</twincards' or
     test == 'twincards>true</twincards'  or
     test == 'twincards xsi:nil="1"/'

     # do whatever
  end

Ben
Bertram S. (Guest)
on 2007-07-26 19:35
(Received via mailing list)
Hi,

Am Freitag, 27. Jul 2007, 00:21:31 +0900 schrieb Ben B.:
>   test = chaine[ i + 14 ]
>   if test == 'twincards>false</twincards' or
>      test == 'twincards>true</twincards'  or
>      test == 'twincards xsi:nil="1"/'

It's not only legibility, it's enough to calculate c[i+14]
once as the result is every time the same.

Another suggestion:

  case chaine[ i+14]
    when %r{twincards>(true|false)</twincards},
         %q{twincards xsi:nil="1"/}             then
      ...
  end

Bertram
Ben B. (Guest)
on 2007-07-26 19:46
(Received via mailing list)
On Fri, Jul 27, 2007, Bertram S. wrote:
> It's not only legibility, it's enough to calculate c[i+14]
> once as the result is every time the same.

Right!  I forgot to mention that :)

> Another suggestion:
>
>   case chaine[ i+14]
>     when %r{twincards>(true|false)</twincards},
>          %q{twincards xsi:nil="1"/}             then
>       ...
>   end

My gut tells me this might be slower, but probably not enough to matter.
And I always forget about %q, that's really the best way to quote
something that has quotes inside it.

Ben
This topic is locked and can not be replied to.