-2

I am running a Ruby script but getting the below error message.

root@li140-48:~/rbircd-master# ruby ircd.rb
ircd.rb:38:in `load': ircclient.rb:145: syntax error, unexpected tSTRING_BEG, expecting ':' (SyntaxError)
                                (value == true) ? key.upcase"#{key.upcase}=#{value}"
                                                             ^
        from ircd.rb:38:in `reload!'
        from ircd.rb:41:in `<main>'
root@li140-48:~/rbircd-master#

Here is the code block around ircclient.rb:145:

def send_version(detailed=false)
    if detailed
        send_numeric 351, 'RubyIRCd0.1.0.', @server.name, 'FhiXeOoZE [Linux box 2.6.18-128.1.1.el5.028stab062.3 #1 SMP Sun May 10 18:54:51 MSD 2009 i686=2309]'
        send @server.name, :notice, @nick, 'OpenSSL 0.9.8k 25 Mar 2009'
        send @server.name, :notice, @nick, 'zlib 1.2.3'
        send @server.name, :notice, @nick, 'libcurl/7.19.4 GnuTLS/2.6.6 zlib/1.2.3 c-ares/1.6.0 libssh2/0.18'
    end

    features = ServerConfig.features.clone

    features.each_slice(13) do |slice|
        slice.map! do |(key, value)|
            (value == true) ? key.upcase"#{key.upcase}=#{value}"
        end

        slice << 'are supported by this server'
        send_numeric '005', *slice
    end
end

Please can someone help me?

John
  • 17
  • 1
  • 3

1 Answers1

1

You're doing a ternary if but you're missing the else clause.

Change

(value == true) ? key.upcase"#{key.upcase}=#{value}"

to

value ? key.upcase : "#{key.upcase}=#{value}"

And then read How do I use the conditional operator in Ruby

Community
  • 1
  • 1
Henrik Andersson
  • 37,809
  • 15
  • 88
  • 86