cinch 2.2.5 → 2.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/lib/cinch/irc.rb +81 -61
 - data/lib/cinch/mode_parser.rb +20 -7
 - data/lib/cinch/network.rb +1 -1
 - data/lib/cinch/target.rb +1 -1
 - data/lib/cinch/user.rb +2 -2
 - data/lib/cinch/user_list.rb +12 -1
 - data/lib/cinch/version.rb +1 -1
 - metadata +86 -89
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: b1e40f6cd0cfe7e806d4b87bfd591c5320c5a2fc
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: d7a173c15ed16769d1703ba3dd7b9d1f7c810cba
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: f687dc8eeffdbb9c455017e679ec0528b09c95aea5e921207f5ccb132d61bfb3ae2d3417db6cdb0500199671d5f5344194d1d021ff8933914254acc78f419b82
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 96e85381ff58dc28d4aa457c4985924e1b32fcc708823330e6eb87c71ef7da4c62f36edd4a3c958a640d63135c64c65bccf9a66c39e8c7ecf0270beae52646f4
         
     | 
    
        data/lib/cinch/irc.rb
    CHANGED
    
    | 
         @@ -311,6 +311,11 @@ module Cinch 
     | 
|
| 
       311 
311 
     | 
    
         
             
                      new_network = :jtv
         
     | 
| 
       312 
312 
     | 
    
         
             
                      new_ircd    = :jtv
         
     | 
| 
       313 
313 
     | 
    
         
             
                    end
         
     | 
| 
      
 314 
     | 
    
         
            +
                  when "004"
         
     | 
| 
      
 315 
     | 
    
         
            +
                    if msg.params == %w{irc.tinyspeck.com IRC-SLACK gateway}
         
     | 
| 
      
 316 
     | 
    
         
            +
                      new_network = :slack
         
     | 
| 
      
 317 
     | 
    
         
            +
                      new_ircd = :slack
         
     | 
| 
      
 318 
     | 
    
         
            +
                    end
         
     | 
| 
       314 
319 
     | 
    
         
             
                  when "005"
         
     | 
| 
       315 
320 
     | 
    
         
             
                    case @isupport["NETWORK"]
         
     | 
| 
       316 
321 
     | 
    
         
             
                    when "NGameTV"
         
     | 
| 
         @@ -350,7 +355,7 @@ module Cinch 
     | 
|
| 
       350 
355 
     | 
    
         
             
                    msg.channel.bans_unsynced << ban
         
     | 
| 
       351 
356 
     | 
    
         
             
                    events << [:ban, ban]
         
     | 
| 
       352 
357 
     | 
    
         
             
                  else
         
     | 
| 
       353 
     | 
    
         
            -
                    msg.channel.bans_unsynced.delete_if {|b| b.mask == ban.mask} 
     | 
| 
      
 358 
     | 
    
         
            +
                    msg.channel.bans_unsynced.delete_if {|b| b.mask == ban.mask}
         
     | 
| 
       354 
359 
     | 
    
         
             
                    events << [:unban, ban]
         
     | 
| 
       355 
360 
     | 
    
         
             
                  end
         
     | 
| 
       356 
361 
     | 
    
         
             
                end
         
     | 
| 
         @@ -441,64 +446,83 @@ module Cinch 
     | 
|
| 
       441 
446 
     | 
    
         
             
                # @version 1.1.0
         
     | 
| 
       442 
447 
     | 
    
         
             
                def on_mode(msg, events)
         
     | 
| 
       443 
448 
     | 
    
         
             
                  if msg.channel?
         
     | 
| 
       444 
     | 
    
         
            -
                     
     | 
| 
       445 
     | 
    
         
            -
             
     | 
| 
       446 
     | 
    
         
            -
             
     | 
| 
       447 
     | 
    
         
            -
             
     | 
| 
       448 
     | 
    
         
            -
             
     | 
| 
       449 
     | 
    
         
            -
             
     | 
| 
       450 
     | 
    
         
            -
             
     | 
| 
       451 
     | 
    
         
            -
                    modes = ModeParser.parse_modes(msg.params[1], msg.params[2..-1], param_modes)
         
     | 
| 
       452 
     | 
    
         
            -
                    modes.each do |direction, mode, param|
         
     | 
| 
       453 
     | 
    
         
            -
                      if @bot.irc.isupport["PREFIX"].keys.include?(mode)
         
     | 
| 
       454 
     | 
    
         
            -
                        target = User(param)
         
     | 
| 
       455 
     | 
    
         
            -
             
     | 
| 
       456 
     | 
    
         
            -
                        # (un)set a user-mode
         
     | 
| 
       457 
     | 
    
         
            -
                        if direction == :add
         
     | 
| 
       458 
     | 
    
         
            -
                          msg.channel.users[target] << mode unless msg.channel.users[User(param)].include?(mode)
         
     | 
| 
       459 
     | 
    
         
            -
                        else
         
     | 
| 
       460 
     | 
    
         
            -
                          msg.channel.users[target].delete mode
         
     | 
| 
       461 
     | 
    
         
            -
                        end
         
     | 
| 
      
 449 
     | 
    
         
            +
                    parse_channel_modes(msg, events)
         
     | 
| 
      
 450 
     | 
    
         
            +
                    return
         
     | 
| 
      
 451 
     | 
    
         
            +
                  end
         
     | 
| 
      
 452 
     | 
    
         
            +
                  if msg.params.first == bot.nick
         
     | 
| 
      
 453 
     | 
    
         
            +
                    parse_bot_modes(msg)
         
     | 
| 
      
 454 
     | 
    
         
            +
                  end
         
     | 
| 
      
 455 
     | 
    
         
            +
                end
         
     | 
| 
       462 
456 
     | 
    
         | 
| 
       463 
     | 
    
         
            -
             
     | 
| 
       464 
     | 
    
         
            -
             
     | 
| 
       465 
     | 
    
         
            -
             
     | 
| 
       466 
     | 
    
         
            -
             
     | 
| 
       467 
     | 
    
         
            -
             
     | 
| 
       468 
     | 
    
         
            -
             
     | 
| 
       469 
     | 
    
         
            -
             
     | 
| 
       470 
     | 
    
         
            -
             
     | 
| 
       471 
     | 
    
         
            -
             
     | 
| 
       472 
     | 
    
         
            -
             
     | 
| 
       473 
     | 
    
         
            -
             
     | 
| 
       474 
     | 
    
         
            -
             
     | 
| 
       475 
     | 
    
         
            -
             
     | 
| 
       476 
     | 
    
         
            -
             
     | 
| 
       477 
     | 
    
         
            -
             
     | 
| 
       478 
     | 
    
         
            -
             
     | 
| 
       479 
     | 
    
         
            -
             
     | 
| 
       480 
     | 
    
         
            -
             
     | 
| 
      
 457 
     | 
    
         
            +
                def parse_channel_modes(msg, events)
         
     | 
| 
      
 458 
     | 
    
         
            +
                  add_and_remove = @bot.irc.isupport["CHANMODES"]["A"] + @bot.irc.isupport["CHANMODES"]["B"] + @bot.irc.isupport["PREFIX"].keys
         
     | 
| 
      
 459 
     | 
    
         
            +
             
     | 
| 
      
 460 
     | 
    
         
            +
                  param_modes = {
         
     | 
| 
      
 461 
     | 
    
         
            +
                    :add    => @bot.irc.isupport["CHANMODES"]["C"] + add_and_remove,
         
     | 
| 
      
 462 
     | 
    
         
            +
                    :remove => add_and_remove
         
     | 
| 
      
 463 
     | 
    
         
            +
                  }
         
     | 
| 
      
 464 
     | 
    
         
            +
             
     | 
| 
      
 465 
     | 
    
         
            +
             
     | 
| 
      
 466 
     | 
    
         
            +
                  modes, err = ModeParser.parse_modes(msg.params[1], msg.params[2..-1], param_modes)
         
     | 
| 
      
 467 
     | 
    
         
            +
                  if err != nil
         
     | 
| 
      
 468 
     | 
    
         
            +
                    if  @network.ircd != :slack || !err.is_a?(ModeParser::TooManyParametersError)
         
     | 
| 
      
 469 
     | 
    
         
            +
                      raise Exceptions::InvalidModeString, err
         
     | 
| 
      
 470 
     | 
    
         
            +
                    end
         
     | 
| 
      
 471 
     | 
    
         
            +
                  end
         
     | 
| 
      
 472 
     | 
    
         
            +
                  modes.each do |direction, mode, param|
         
     | 
| 
      
 473 
     | 
    
         
            +
                    if @bot.irc.isupport["PREFIX"].keys.include?(mode)
         
     | 
| 
      
 474 
     | 
    
         
            +
                      target = User(param)
         
     | 
| 
      
 475 
     | 
    
         
            +
             
     | 
| 
      
 476 
     | 
    
         
            +
                      # (un)set a user-mode
         
     | 
| 
      
 477 
     | 
    
         
            +
                      if direction == :add
         
     | 
| 
      
 478 
     | 
    
         
            +
                        msg.channel.users[target] << mode unless msg.channel.users[target].include?(mode)
         
     | 
| 
       481 
479 
     | 
    
         
             
                      else
         
     | 
| 
       482 
     | 
    
         
            -
                         
     | 
| 
       483 
     | 
    
         
            -
                        if direction == :add
         
     | 
| 
       484 
     | 
    
         
            -
                          msg.channel.modes_unsynced[mode] = param.nil? ? true : param
         
     | 
| 
       485 
     | 
    
         
            -
                        else
         
     | 
| 
       486 
     | 
    
         
            -
                          msg.channel.modes_unsynced.delete(mode)
         
     | 
| 
       487 
     | 
    
         
            -
                        end
         
     | 
| 
      
 480 
     | 
    
         
            +
                        msg.channel.users[target].delete mode
         
     | 
| 
       488 
481 
     | 
    
         
             
                      end
         
     | 
| 
       489 
     | 
    
         
            -
                    end
         
     | 
| 
       490 
482 
     | 
    
         | 
| 
       491 
     | 
    
         
            -
             
     | 
| 
       492 
     | 
    
         
            -
             
     | 
| 
       493 
     | 
    
         
            -
             
     | 
| 
       494 
     | 
    
         
            -
             
     | 
| 
      
 483 
     | 
    
         
            +
                      user_events = {
         
     | 
| 
      
 484 
     | 
    
         
            +
                        "o" => "op",
         
     | 
| 
      
 485 
     | 
    
         
            +
                        "v" => "voice",
         
     | 
| 
      
 486 
     | 
    
         
            +
                        "h" => "halfop"
         
     | 
| 
      
 487 
     | 
    
         
            +
                      }
         
     | 
| 
      
 488 
     | 
    
         
            +
                      if user_events.has_key?(mode)
         
     | 
| 
      
 489 
     | 
    
         
            +
                        event = (direction == :add ? "" : "de") + user_events[mode]
         
     | 
| 
      
 490 
     | 
    
         
            +
                        events << [event.to_sym, target]
         
     | 
| 
      
 491 
     | 
    
         
            +
                      end
         
     | 
| 
      
 492 
     | 
    
         
            +
                    elsif @bot.irc.isupport["CHANMODES"]["A"].include?(mode)
         
     | 
| 
      
 493 
     | 
    
         
            +
                      case mode
         
     | 
| 
      
 494 
     | 
    
         
            +
                      when "b"
         
     | 
| 
      
 495 
     | 
    
         
            +
                        process_ban_mode(msg, events, param, direction)
         
     | 
| 
      
 496 
     | 
    
         
            +
                      when "q"
         
     | 
| 
      
 497 
     | 
    
         
            +
                        process_owner_mode(msg, events, param, direction) if @network.owner_list_mode
         
     | 
| 
      
 498 
     | 
    
         
            +
                      else
         
     | 
| 
      
 499 
     | 
    
         
            +
                        raise Exceptions::UnsupportedMode, mode
         
     | 
| 
      
 500 
     | 
    
         
            +
                      end
         
     | 
| 
      
 501 
     | 
    
         
            +
                    else
         
     | 
| 
      
 502 
     | 
    
         
            +
                      # channel options
         
     | 
| 
       495 
503 
     | 
    
         
             
                      if direction == :add
         
     | 
| 
       496 
     | 
    
         
            -
                         
     | 
| 
      
 504 
     | 
    
         
            +
                        msg.channel.modes_unsynced[mode] = param.nil? ? true : param
         
     | 
| 
       497 
505 
     | 
    
         
             
                      else
         
     | 
| 
       498 
     | 
    
         
            -
                         
     | 
| 
      
 506 
     | 
    
         
            +
                        msg.channel.modes_unsynced.delete(mode)
         
     | 
| 
       499 
507 
     | 
    
         
             
                      end
         
     | 
| 
       500 
508 
     | 
    
         
             
                    end
         
     | 
| 
       501 
509 
     | 
    
         
             
                  end
         
     | 
| 
      
 510 
     | 
    
         
            +
             
     | 
| 
      
 511 
     | 
    
         
            +
                  events << [:mode_change, modes]
         
     | 
| 
      
 512 
     | 
    
         
            +
                end
         
     | 
| 
      
 513 
     | 
    
         
            +
             
     | 
| 
      
 514 
     | 
    
         
            +
                def parse_bot_modes(msg)
         
     | 
| 
      
 515 
     | 
    
         
            +
                  modes, err = ModeParser.parse_modes(msg.params[1], msg.params[2..-1])
         
     | 
| 
      
 516 
     | 
    
         
            +
                  if err != nil
         
     | 
| 
      
 517 
     | 
    
         
            +
                    raise Exceptions::InvalidModeString, err
         
     | 
| 
      
 518 
     | 
    
         
            +
                  end
         
     | 
| 
      
 519 
     | 
    
         
            +
                  modes.each do |direction, mode, _|
         
     | 
| 
      
 520 
     | 
    
         
            +
                    if direction == :add
         
     | 
| 
      
 521 
     | 
    
         
            +
                      @bot.modes << mode unless @bot.modes.include?(mode)
         
     | 
| 
      
 522 
     | 
    
         
            +
                    else
         
     | 
| 
      
 523 
     | 
    
         
            +
                      @bot.modes.delete(mode)
         
     | 
| 
      
 524 
     | 
    
         
            +
                    end
         
     | 
| 
      
 525 
     | 
    
         
            +
                  end
         
     | 
| 
       502 
526 
     | 
    
         
             
                end
         
     | 
| 
       503 
527 
     | 
    
         | 
| 
       504 
528 
     | 
    
         
             
                def on_nick(msg, events)
         
     | 
| 
         @@ -556,7 +580,6 @@ module Cinch 
     | 
|
| 
       556 
580 
     | 
    
         
             
                    msg.user.online = true
         
     | 
| 
       557 
581 
     | 
    
         
             
                  end
         
     | 
| 
       558 
582 
     | 
    
         | 
| 
       559 
     | 
    
         
            -
             
     | 
| 
       560 
583 
     | 
    
         
             
                  if msg.message =~ /^\001DCC SEND (?:"([^"]+)"|(\S+)) (\S+) (\d+)(?: (\d+))?\001$/
         
     | 
| 
       561 
584 
     | 
    
         
             
                    process_dcc_send($1 || $2, $3, $4, $5, msg, events)
         
     | 
| 
       562 
585 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -595,6 +618,11 @@ module Cinch 
     | 
|
| 
       595 
618 
     | 
    
         
             
                  detect_network(msg, "002")
         
     | 
| 
       596 
619 
     | 
    
         
             
                end
         
     | 
| 
       597 
620 
     | 
    
         | 
| 
      
 621 
     | 
    
         
            +
                # @since 2.2.6
         
     | 
| 
      
 622 
     | 
    
         
            +
                def on_004(msg, events)
         
     | 
| 
      
 623 
     | 
    
         
            +
                  detect_network(msg, "004")
         
     | 
| 
      
 624 
     | 
    
         
            +
                end
         
     | 
| 
      
 625 
     | 
    
         
            +
             
     | 
| 
       598 
626 
     | 
    
         
             
                def on_005(msg, events)
         
     | 
| 
       599 
627 
     | 
    
         
             
                  # ISUPPORT
         
     | 
| 
       600 
628 
     | 
    
         
             
                  @isupport.parse(*msg.params[1..-2].map {|v| v.split(" ")}.flatten)
         
     | 
| 
         @@ -647,13 +675,6 @@ module Cinch 
     | 
|
| 
       647 
675 
     | 
    
         
             
                def on_318(msg, events)
         
     | 
| 
       648 
676 
     | 
    
         
             
                  # RPL_ENDOFWHOIS
         
     | 
| 
       649 
677 
     | 
    
         
             
                  user = User(msg.params[1])
         
     | 
| 
       650 
     | 
    
         
            -
             
     | 
| 
       651 
     | 
    
         
            -
                  if @whois_updates[user].nil? ||
         
     | 
| 
       652 
     | 
    
         
            -
                     (@whois_updates[user].empty? && !user.attr(:unknown?, true, true))
         
     | 
| 
       653 
     | 
    
         
            -
                    user.end_of_whois(nil)
         
     | 
| 
       654 
     | 
    
         
            -
                    return
         
     | 
| 
       655 
     | 
    
         
            -
                  end
         
     | 
| 
       656 
     | 
    
         
            -
             
     | 
| 
       657 
678 
     | 
    
         
             
                  user.end_of_whois(@whois_updates[user])
         
     | 
| 
       658 
679 
     | 
    
         
             
                  @whois_updates.delete user
         
     | 
| 
       659 
680 
     | 
    
         
             
                end
         
     | 
| 
         @@ -828,8 +849,7 @@ module Cinch 
     | 
|
| 
       828 
849 
     | 
    
         
             
                def on_401(msg, events)
         
     | 
| 
       829 
850 
     | 
    
         
             
                  # ERR_NOSUCHNICK
         
     | 
| 
       830 
851 
     | 
    
         
             
                  if user = @bot.user_list.find(msg.params[1])
         
     | 
| 
       831 
     | 
    
         
            -
                    user 
     | 
| 
       832 
     | 
    
         
            -
                    @whois_updates.delete user
         
     | 
| 
      
 852 
     | 
    
         
            +
                    update_whois(user, {:unknown? => true})
         
     | 
| 
       833 
853 
     | 
    
         
             
                  end
         
     | 
| 
       834 
854 
     | 
    
         
             
                end
         
     | 
| 
       835 
855 
     | 
    
         | 
| 
         @@ -837,7 +857,7 @@ module Cinch 
     | 
|
| 
       837 
857 
     | 
    
         
             
                  # ERR_NOSUCHSERVER
         
     | 
| 
       838 
858 
     | 
    
         | 
| 
       839 
859 
     | 
    
         
             
                  if user = @bot.user_list.find(msg.params[1]) # not _ensured, we only want a user that already exists
         
     | 
| 
       840 
     | 
    
         
            -
                    user.end_of_whois( 
     | 
| 
      
 860 
     | 
    
         
            +
                    user.end_of_whois({:unknown? => true})
         
     | 
| 
       841 
861 
     | 
    
         
             
                    @whois_updates.delete user
         
     | 
| 
       842 
862 
     | 
    
         
             
                    # TODO freenode specific, test on other IRCd
         
     | 
| 
       843 
863 
     | 
    
         
             
                  end
         
     | 
    
        data/lib/cinch/mode_parser.rb
    CHANGED
    
    | 
         @@ -4,17 +4,26 @@ module Cinch 
     | 
|
| 
       4 
4 
     | 
    
         
             
              # @api private
         
     | 
| 
       5 
5 
     | 
    
         
             
              # @since 1.1.0
         
     | 
| 
       6 
6 
     | 
    
         
             
              module ModeParser
         
     | 
| 
      
 7 
     | 
    
         
            +
                ErrEmptyString = "Empty mode string"
         
     | 
| 
      
 8 
     | 
    
         
            +
                MalformedError = Struct.new(:modes)
         
     | 
| 
      
 9 
     | 
    
         
            +
                EmptySequenceError = Struct.new(:modes)
         
     | 
| 
      
 10 
     | 
    
         
            +
                NotEnoughParametersError = Struct.new(:op)
         
     | 
| 
      
 11 
     | 
    
         
            +
                TooManyParametersError = Struct.new(:modes, :params)
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
       7 
13 
     | 
    
         
             
                # @param [String] modes The mode string as sent by the server
         
     | 
| 
       8 
14 
     | 
    
         
             
                # @param [Array<String>] params Parameters belonging to the modes
         
     | 
| 
       9 
15 
     | 
    
         
             
                # @param [Hash{:add, :remove => Array<String>}] param_modes
         
     | 
| 
       10 
16 
     | 
    
         
             
                #   A mapping describing which modes require parameters
         
     | 
| 
      
 17 
     | 
    
         
            +
                # @return [(Array<(Symbol<:add, :remove>, String<char>, String<param>), foo)]
         
     | 
| 
       11 
18 
     | 
    
         
             
                def self.parse_modes(modes, params, param_modes = {})
         
     | 
| 
       12 
19 
     | 
    
         
             
                  if modes.size == 0
         
     | 
| 
       13 
     | 
    
         
            -
                     
     | 
| 
      
 20 
     | 
    
         
            +
                    return nil, ErrEmptyString
         
     | 
| 
      
 21 
     | 
    
         
            +
                    # raise Exceptions::InvalidModeString, 'Empty mode string'
         
     | 
| 
       14 
22 
     | 
    
         
             
                  end
         
     | 
| 
       15 
23 
     | 
    
         | 
| 
       16 
24 
     | 
    
         
             
                  if modes[0] !~ /[+-]/
         
     | 
| 
       17 
     | 
    
         
            -
                     
     | 
| 
      
 25 
     | 
    
         
            +
                    return nil, MalformedError.new(modes)
         
     | 
| 
      
 26 
     | 
    
         
            +
                    # raise Exceptions::InvalidModeString, "Malformed modes string: %s" % modes
         
     | 
| 
       18 
27 
     | 
    
         
             
                  end
         
     | 
| 
       19 
28 
     | 
    
         | 
| 
       20 
29 
     | 
    
         
             
                  changes = []
         
     | 
| 
         @@ -25,7 +34,8 @@ module Cinch 
     | 
|
| 
       25 
34 
     | 
    
         
             
                  modes.each_char do |ch|
         
     | 
| 
       26 
35 
     | 
    
         
             
                    if ch =~ /[+-]/
         
     | 
| 
       27 
36 
     | 
    
         
             
                      if count == 0
         
     | 
| 
       28 
     | 
    
         
            -
                         
     | 
| 
      
 37 
     | 
    
         
            +
                        return changes, EmptySequenceError.new(modes)
         
     | 
| 
      
 38 
     | 
    
         
            +
                        # raise Exceptions::InvalidModeString, 'Empty mode sequence: %s' % modes
         
     | 
| 
       29 
39 
     | 
    
         
             
                      end
         
     | 
| 
       30 
40 
     | 
    
         | 
| 
       31 
41 
     | 
    
         
             
                      direction = case ch
         
     | 
| 
         @@ -41,7 +51,8 @@ module Cinch 
     | 
|
| 
       41 
51 
     | 
    
         
             
                        if params.size > 0
         
     | 
| 
       42 
52 
     | 
    
         
             
                          param = params.shift
         
     | 
| 
       43 
53 
     | 
    
         
             
                        else
         
     | 
| 
       44 
     | 
    
         
            -
                           
     | 
| 
      
 54 
     | 
    
         
            +
                          return changes, NotEnoughParametersError.new(ch)
         
     | 
| 
      
 55 
     | 
    
         
            +
                          # raise Exceptions::InvalidModeString, 'Not enough parameters: %s' % ch.inspect
         
     | 
| 
       45 
56 
     | 
    
         
             
                        end
         
     | 
| 
       46 
57 
     | 
    
         
             
                      end
         
     | 
| 
       47 
58 
     | 
    
         
             
                      changes << [direction, ch, param]
         
     | 
| 
         @@ -50,14 +61,16 @@ module Cinch 
     | 
|
| 
       50 
61 
     | 
    
         
             
                  end
         
     | 
| 
       51 
62 
     | 
    
         | 
| 
       52 
63 
     | 
    
         
             
                  if params.size > 0
         
     | 
| 
       53 
     | 
    
         
            -
                     
     | 
| 
      
 64 
     | 
    
         
            +
                    return changes, TooManyParametersError.new(modes, params)
         
     | 
| 
      
 65 
     | 
    
         
            +
                    # raise Exceptions::InvalidModeString, 'Too many parameters: %s %s' % [modes, params]
         
     | 
| 
       54 
66 
     | 
    
         
             
                  end
         
     | 
| 
       55 
67 
     | 
    
         | 
| 
       56 
68 
     | 
    
         
             
                  if count == 0
         
     | 
| 
       57 
     | 
    
         
            -
                     
     | 
| 
      
 69 
     | 
    
         
            +
                    return changes, EmptySequenceError.new(modes)
         
     | 
| 
      
 70 
     | 
    
         
            +
                    # raise Exceptions::InvalidModeString, 'Empty mode sequence: %s' % modes
         
     | 
| 
       58 
71 
     | 
    
         
             
                  end
         
     | 
| 
       59 
72 
     | 
    
         | 
| 
       60 
     | 
    
         
            -
                  return changes
         
     | 
| 
      
 73 
     | 
    
         
            +
                  return changes, nil
         
     | 
| 
       61 
74 
     | 
    
         
             
                end
         
     | 
| 
       62 
75 
     | 
    
         
             
              end
         
     | 
| 
       63 
76 
     | 
    
         
             
            end
         
     | 
    
        data/lib/cinch/network.rb
    CHANGED
    
    | 
         @@ -39,7 +39,7 @@ module Cinch 
     | 
|
| 
       39 
39 
     | 
    
         
             
                # @return [String, nil] The mode used for getting the list of
         
     | 
| 
       40 
40 
     | 
    
         
             
                #   channel owners, if any
         
     | 
| 
       41 
41 
     | 
    
         
             
                def owner_list_mode
         
     | 
| 
       42 
     | 
    
         
            -
                  return "q" if @ircd == :unreal
         
     | 
| 
      
 42 
     | 
    
         
            +
                  return "q" if @ircd == :unreal || @ircd == :inspircd
         
     | 
| 
       43 
43 
     | 
    
         
             
                end
         
     | 
| 
       44 
44 
     | 
    
         | 
| 
       45 
45 
     | 
    
         
             
                # @return [String, nil] The mode used for getting the list of
         
     | 
    
        data/lib/cinch/target.rb
    CHANGED
    
    
    
        data/lib/cinch/user.rb
    CHANGED
    
    | 
         @@ -274,9 +274,9 @@ module Cinch 
     | 
|
| 
       274 
274 
     | 
    
         
             
                # @return [void]
         
     | 
| 
       275 
275 
     | 
    
         
             
                # @api private
         
     | 
| 
       276 
276 
     | 
    
         
             
                # @since 1.0.1
         
     | 
| 
       277 
     | 
    
         
            -
                def end_of_whois(values 
     | 
| 
      
 277 
     | 
    
         
            +
                def end_of_whois(values)
         
     | 
| 
       278 
278 
     | 
    
         
             
                  @in_whois = false
         
     | 
| 
       279 
     | 
    
         
            -
                  if  
     | 
| 
      
 279 
     | 
    
         
            +
                  if values[:unknown?]
         
     | 
| 
       280 
280 
     | 
    
         
             
                    sync(:unknown?, true, true)
         
     | 
| 
       281 
281 
     | 
    
         
             
                    self.online = false
         
     | 
| 
       282 
282 
     | 
    
         
             
                    sync(:idle, 0, true)
         
     | 
    
        data/lib/cinch/user_list.rb
    CHANGED
    
    | 
         @@ -34,9 +34,16 @@ module Cinch 
     | 
|
| 
       34 
34 
     | 
    
         
             
                  else
         
     | 
| 
       35 
35 
     | 
    
         
             
                    raise ArgumentError
         
     | 
| 
       36 
36 
     | 
    
         
             
                  end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                  if nick == @bot.nick
         
     | 
| 
      
 39 
     | 
    
         
            +
                    user_obj = @bot
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
       37 
42 
     | 
    
         
             
                  downcased_nick = nick.irc_downcase(@bot.irc.isupport["CASEMAPPING"])
         
     | 
| 
       38 
43 
     | 
    
         
             
                  @mutex.synchronize do
         
     | 
| 
       39 
     | 
    
         
            -
                    user_obj 
     | 
| 
      
 44 
     | 
    
         
            +
                    if user_obj.nil?
         
     | 
| 
      
 45 
     | 
    
         
            +
                      user_obj = @cache[downcased_nick] ||= User.new(*bargs, @bot)
         
     | 
| 
      
 46 
     | 
    
         
            +
                    end
         
     | 
| 
       40 
47 
     | 
    
         
             
                    if user && host
         
     | 
| 
       41 
48 
     | 
    
         
             
                      # Explicitly set user and host whenever we request a User
         
     | 
| 
       42 
49 
     | 
    
         
             
                      # object to update them on e.g. JOIN.
         
     | 
| 
         @@ -52,6 +59,10 @@ module Cinch 
     | 
|
| 
       52 
59 
     | 
    
         
             
                # @param [String] nick nick of a user
         
     | 
| 
       53 
60 
     | 
    
         
             
                # @return [User, nil]
         
     | 
| 
       54 
61 
     | 
    
         
             
                def find(nick)
         
     | 
| 
      
 62 
     | 
    
         
            +
                  if nick == @bot.nick
         
     | 
| 
      
 63 
     | 
    
         
            +
                    return @bot
         
     | 
| 
      
 64 
     | 
    
         
            +
                  end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
       55 
66 
     | 
    
         
             
                  downcased_nick = nick.irc_downcase(@bot.irc.isupport["CASEMAPPING"])
         
     | 
| 
       56 
67 
     | 
    
         
             
                  @mutex.synchronize do
         
     | 
| 
       57 
68 
     | 
    
         
             
                    return @cache[downcased_nick]
         
     | 
    
        data/lib/cinch/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,15 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: cinch
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2.2. 
     | 
| 
       5 
     | 
    
         
            -
              prerelease: 
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.2.6
         
     | 
| 
       6 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       8 
7 
     | 
    
         
             
            - Dominik Honnef
         
     | 
| 
       9 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2015- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-07-08 00:00:00.000000000 Z
         
     | 
| 
       13 
12 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       14 
13 
     | 
    
         
             
            description: A simple, friendly DSL for creating IRC bots
         
     | 
| 
       15 
14 
     | 
    
         
             
            email:
         
     | 
| 
         @@ -18,127 +17,125 @@ executables: [] 
     | 
|
| 
       18 
17 
     | 
    
         
             
            extensions: []
         
     | 
| 
       19 
18 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       20 
19 
     | 
    
         
             
            files:
         
     | 
| 
      
 20 
     | 
    
         
            +
            - ".yardopts"
         
     | 
| 
       21 
21 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       22 
22 
     | 
    
         
             
            - README.md
         
     | 
| 
       23 
     | 
    
         
            -
            - .yardopts
         
     | 
| 
       24 
     | 
    
         
            -
            - docs/changes.md
         
     | 
| 
       25 
     | 
    
         
            -
            - docs/getting_started.md
         
     | 
| 
       26 
     | 
    
         
            -
            - docs/readme.md
         
     | 
| 
       27 
23 
     | 
    
         
             
            - docs/bot_options.md
         
     | 
| 
      
 24 
     | 
    
         
            +
            - docs/changes.md
         
     | 
| 
       28 
25 
     | 
    
         
             
            - docs/common_mistakes.md
         
     | 
| 
       29 
     | 
    
         
            -
            - docs/ 
     | 
| 
       30 
     | 
    
         
            -
            - docs/plugins.md
         
     | 
| 
      
 26 
     | 
    
         
            +
            - docs/common_tasks.md
         
     | 
| 
       31 
27 
     | 
    
         
             
            - docs/encodings.md
         
     | 
| 
      
 28 
     | 
    
         
            +
            - docs/events.md
         
     | 
| 
      
 29 
     | 
    
         
            +
            - docs/getting_started.md
         
     | 
| 
       32 
30 
     | 
    
         
             
            - docs/logging.md
         
     | 
| 
       33 
     | 
    
         
            -
            - docs/common_tasks.md
         
     | 
| 
       34 
31 
     | 
    
         
             
            - docs/migrating.md
         
     | 
| 
       35 
     | 
    
         
            -
            -  
     | 
| 
       36 
     | 
    
         
            -
            -  
     | 
| 
       37 
     | 
    
         
            -
            -  
     | 
| 
       38 
     | 
    
         
            -
            -  
     | 
| 
       39 
     | 
    
         
            -
            -  
     | 
| 
       40 
     | 
    
         
            -
            -  
     | 
| 
       41 
     | 
    
         
            -
            -  
     | 
| 
       42 
     | 
    
         
            -
            -  
     | 
| 
       43 
     | 
    
         
            -
            -  
     | 
| 
       44 
     | 
    
         
            -
            -  
     | 
| 
       45 
     | 
    
         
            -
            -  
     | 
| 
       46 
     | 
    
         
            -
            -  
     | 
| 
      
 32 
     | 
    
         
            +
            - docs/plugins.md
         
     | 
| 
      
 33 
     | 
    
         
            +
            - docs/readme.md
         
     | 
| 
      
 34 
     | 
    
         
            +
            - examples/basic/autovoice.rb
         
     | 
| 
      
 35 
     | 
    
         
            +
            - examples/basic/google.rb
         
     | 
| 
      
 36 
     | 
    
         
            +
            - examples/basic/hello.rb
         
     | 
| 
      
 37 
     | 
    
         
            +
            - examples/basic/join_part.rb
         
     | 
| 
      
 38 
     | 
    
         
            +
            - examples/basic/memo.rb
         
     | 
| 
      
 39 
     | 
    
         
            +
            - examples/basic/msg.rb
         
     | 
| 
      
 40 
     | 
    
         
            +
            - examples/basic/seen.rb
         
     | 
| 
      
 41 
     | 
    
         
            +
            - examples/basic/urban_dict.rb
         
     | 
| 
      
 42 
     | 
    
         
            +
            - examples/basic/url_shorten.rb
         
     | 
| 
      
 43 
     | 
    
         
            +
            - examples/plugins/autovoice.rb
         
     | 
| 
      
 44 
     | 
    
         
            +
            - examples/plugins/custom_prefix.rb
         
     | 
| 
      
 45 
     | 
    
         
            +
            - examples/plugins/dice_roll.rb
         
     | 
| 
      
 46 
     | 
    
         
            +
            - examples/plugins/google.rb
         
     | 
| 
      
 47 
     | 
    
         
            +
            - examples/plugins/hello.rb
         
     | 
| 
      
 48 
     | 
    
         
            +
            - examples/plugins/hooks.rb
         
     | 
| 
      
 49 
     | 
    
         
            +
            - examples/plugins/join_part.rb
         
     | 
| 
      
 50 
     | 
    
         
            +
            - examples/plugins/lambdas.rb
         
     | 
| 
      
 51 
     | 
    
         
            +
            - examples/plugins/last_nick.rb
         
     | 
| 
      
 52 
     | 
    
         
            +
            - examples/plugins/msg.rb
         
     | 
| 
      
 53 
     | 
    
         
            +
            - examples/plugins/multiple_matches.rb
         
     | 
| 
      
 54 
     | 
    
         
            +
            - examples/plugins/own_events.rb
         
     | 
| 
      
 55 
     | 
    
         
            +
            - examples/plugins/seen.rb
         
     | 
| 
      
 56 
     | 
    
         
            +
            - examples/plugins/timer.rb
         
     | 
| 
      
 57 
     | 
    
         
            +
            - examples/plugins/url_shorten.rb
         
     | 
| 
      
 58 
     | 
    
         
            +
            - lib/cinch.rb
         
     | 
| 
       47 
59 
     | 
    
         
             
            - lib/cinch/#channel.rb#
         
     | 
| 
       48 
     | 
    
         
            -
            - lib/cinch/ 
     | 
| 
       49 
     | 
    
         
            -
            - lib/cinch/ 
     | 
| 
       50 
     | 
    
         
            -
            - lib/cinch/ 
     | 
| 
       51 
     | 
    
         
            -
            - lib/cinch/ 
     | 
| 
       52 
     | 
    
         
            -
            - lib/cinch/ 
     | 
| 
       53 
     | 
    
         
            -
            - lib/cinch/ 
     | 
| 
       54 
     | 
    
         
            -
            - lib/cinch/ 
     | 
| 
       55 
     | 
    
         
            -
            - lib/cinch/plugin_list.rb
         
     | 
| 
       56 
     | 
    
         
            -
            - lib/cinch/message.rb
         
     | 
| 
       57 
     | 
    
         
            -
            - lib/cinch/target.rb
         
     | 
| 
       58 
     | 
    
         
            -
            - lib/cinch/mask.rb
         
     | 
| 
       59 
     | 
    
         
            -
            - lib/cinch/configuration/sasl.rb
         
     | 
| 
      
 60 
     | 
    
         
            +
            - lib/cinch/ban.rb
         
     | 
| 
      
 61 
     | 
    
         
            +
            - lib/cinch/bot.rb
         
     | 
| 
      
 62 
     | 
    
         
            +
            - lib/cinch/cached_list.rb
         
     | 
| 
      
 63 
     | 
    
         
            +
            - lib/cinch/callback.rb
         
     | 
| 
      
 64 
     | 
    
         
            +
            - lib/cinch/channel.rb
         
     | 
| 
      
 65 
     | 
    
         
            +
            - lib/cinch/channel_list.rb
         
     | 
| 
      
 66 
     | 
    
         
            +
            - lib/cinch/configuration.rb
         
     | 
| 
       60 
67 
     | 
    
         
             
            - lib/cinch/configuration/bot.rb
         
     | 
| 
      
 68 
     | 
    
         
            +
            - lib/cinch/configuration/dcc.rb
         
     | 
| 
       61 
69 
     | 
    
         
             
            - lib/cinch/configuration/plugins.rb
         
     | 
| 
      
 70 
     | 
    
         
            +
            - lib/cinch/configuration/sasl.rb
         
     | 
| 
       62 
71 
     | 
    
         
             
            - lib/cinch/configuration/ssl.rb
         
     | 
| 
       63 
     | 
    
         
            -
            - lib/cinch/configuration/dcc.rb
         
     | 
| 
       64 
72 
     | 
    
         
             
            - lib/cinch/configuration/timeouts.rb
         
     | 
| 
       65 
     | 
    
         
            -
            - lib/cinch/pattern.rb
         
     | 
| 
       66 
     | 
    
         
            -
            - lib/cinch/open_ended_queue.rb
         
     | 
| 
       67 
     | 
    
         
            -
            - lib/cinch/logger_list.rb
         
     | 
| 
       68 
     | 
    
         
            -
            - lib/cinch/callback.rb
         
     | 
| 
       69 
     | 
    
         
            -
            - lib/cinch/dcc.rb
         
     | 
| 
       70 
     | 
    
         
            -
            - lib/cinch/version.rb
         
     | 
| 
       71 
     | 
    
         
            -
            - lib/cinch/utilities/deprecation.rb
         
     | 
| 
       72 
     | 
    
         
            -
            - lib/cinch/utilities/kernel.rb
         
     | 
| 
       73 
     | 
    
         
            -
            - lib/cinch/utilities/encoding.rb
         
     | 
| 
       74 
73 
     | 
    
         
             
            - lib/cinch/constants.rb
         
     | 
| 
       75 
     | 
    
         
            -
            - lib/cinch/ 
     | 
| 
       76 
     | 
    
         
            -
            - lib/cinch/user.rb
         
     | 
| 
       77 
     | 
    
         
            -
            - lib/cinch/logger/formatted_logger.rb
         
     | 
| 
       78 
     | 
    
         
            -
            - lib/cinch/logger/zcbot_logger.rb
         
     | 
| 
       79 
     | 
    
         
            -
            - lib/cinch/exceptions.rb
         
     | 
| 
       80 
     | 
    
         
            -
            - lib/cinch/logger.rb
         
     | 
| 
       81 
     | 
    
         
            -
            - lib/cinch/plugin.rb
         
     | 
| 
       82 
     | 
    
         
            -
            - lib/cinch/user_list.rb
         
     | 
| 
       83 
     | 
    
         
            -
            - lib/cinch/dcc/incoming/send.rb
         
     | 
| 
      
 74 
     | 
    
         
            +
            - lib/cinch/dcc.rb
         
     | 
| 
       84 
75 
     | 
    
         
             
            - lib/cinch/dcc/dccable_object.rb
         
     | 
| 
       85 
     | 
    
         
            -
            - lib/cinch/dcc/outgoing.rb
         
     | 
| 
       86 
76 
     | 
    
         
             
            - lib/cinch/dcc/incoming.rb
         
     | 
| 
      
 77 
     | 
    
         
            +
            - lib/cinch/dcc/incoming/send.rb
         
     | 
| 
      
 78 
     | 
    
         
            +
            - lib/cinch/dcc/outgoing.rb
         
     | 
| 
       87 
79 
     | 
    
         
             
            - lib/cinch/dcc/outgoing/send.rb
         
     | 
| 
      
 80 
     | 
    
         
            +
            - lib/cinch/exceptions.rb
         
     | 
| 
      
 81 
     | 
    
         
            +
            - lib/cinch/formatting.rb
         
     | 
| 
      
 82 
     | 
    
         
            +
            - lib/cinch/handler.rb
         
     | 
| 
      
 83 
     | 
    
         
            +
            - lib/cinch/handler_list.rb
         
     | 
| 
      
 84 
     | 
    
         
            +
            - lib/cinch/helpers.rb
         
     | 
| 
       88 
85 
     | 
    
         
             
            - lib/cinch/irc.rb
         
     | 
| 
       89 
     | 
    
         
            -
            - lib/cinch/ 
     | 
| 
       90 
     | 
    
         
            -
            - lib/cinch/ 
     | 
| 
      
 86 
     | 
    
         
            +
            - lib/cinch/isupport.rb
         
     | 
| 
      
 87 
     | 
    
         
            +
            - lib/cinch/logger.rb
         
     | 
| 
      
 88 
     | 
    
         
            +
            - lib/cinch/logger/formatted_logger.rb
         
     | 
| 
      
 89 
     | 
    
         
            +
            - lib/cinch/logger/zcbot_logger.rb
         
     | 
| 
      
 90 
     | 
    
         
            +
            - lib/cinch/logger_list.rb
         
     | 
| 
      
 91 
     | 
    
         
            +
            - lib/cinch/mask.rb
         
     | 
| 
      
 92 
     | 
    
         
            +
            - lib/cinch/message.rb
         
     | 
| 
       91 
93 
     | 
    
         
             
            - lib/cinch/message_queue.rb
         
     | 
| 
       92 
     | 
    
         
            -
            - lib/cinch/ 
     | 
| 
       93 
     | 
    
         
            -
            - lib/cinch.rb
         
     | 
| 
       94 
     | 
    
         
            -
            -  
     | 
| 
       95 
     | 
    
         
            -
            -  
     | 
| 
       96 
     | 
    
         
            -
            -  
     | 
| 
       97 
     | 
    
         
            -
            -  
     | 
| 
       98 
     | 
    
         
            -
            -  
     | 
| 
       99 
     | 
    
         
            -
            -  
     | 
| 
       100 
     | 
    
         
            -
            -  
     | 
| 
       101 
     | 
    
         
            -
            -  
     | 
| 
       102 
     | 
    
         
            -
            -  
     | 
| 
       103 
     | 
    
         
            -
            -  
     | 
| 
       104 
     | 
    
         
            -
            -  
     | 
| 
       105 
     | 
    
         
            -
            -  
     | 
| 
       106 
     | 
    
         
            -
            -  
     | 
| 
       107 
     | 
    
         
            -
            -  
     | 
| 
       108 
     | 
    
         
            -
            -  
     | 
| 
       109 
     | 
    
         
            -
            -  
     | 
| 
       110 
     | 
    
         
            -
            -  
     | 
| 
       111 
     | 
    
         
            -
            -  
     | 
| 
       112 
     | 
    
         
            -
            -  
     | 
| 
       113 
     | 
    
         
            -
            -  
     | 
| 
       114 
     | 
    
         
            -
            -  
     | 
| 
       115 
     | 
    
         
            -
            - examples/basic/seen.rb
         
     | 
| 
       116 
     | 
    
         
            -
            - examples/basic/urban_dict.rb
         
     | 
| 
       117 
     | 
    
         
            -
            - examples/basic/hello.rb
         
     | 
| 
      
 94 
     | 
    
         
            +
            - lib/cinch/mode_parser.rb
         
     | 
| 
      
 95 
     | 
    
         
            +
            - lib/cinch/network.rb
         
     | 
| 
      
 96 
     | 
    
         
            +
            - lib/cinch/open_ended_queue.rb
         
     | 
| 
      
 97 
     | 
    
         
            +
            - lib/cinch/pattern.rb
         
     | 
| 
      
 98 
     | 
    
         
            +
            - lib/cinch/plugin.rb
         
     | 
| 
      
 99 
     | 
    
         
            +
            - lib/cinch/plugin_list.rb
         
     | 
| 
      
 100 
     | 
    
         
            +
            - lib/cinch/rubyext/float.rb
         
     | 
| 
      
 101 
     | 
    
         
            +
            - lib/cinch/rubyext/module.rb
         
     | 
| 
      
 102 
     | 
    
         
            +
            - lib/cinch/rubyext/string.rb
         
     | 
| 
      
 103 
     | 
    
         
            +
            - lib/cinch/sasl.rb
         
     | 
| 
      
 104 
     | 
    
         
            +
            - lib/cinch/sasl/dh_blowfish.rb
         
     | 
| 
      
 105 
     | 
    
         
            +
            - lib/cinch/sasl/diffie_hellman.rb
         
     | 
| 
      
 106 
     | 
    
         
            +
            - lib/cinch/sasl/mechanism.rb
         
     | 
| 
      
 107 
     | 
    
         
            +
            - lib/cinch/sasl/plain.rb
         
     | 
| 
      
 108 
     | 
    
         
            +
            - lib/cinch/syncable.rb
         
     | 
| 
      
 109 
     | 
    
         
            +
            - lib/cinch/target.rb
         
     | 
| 
      
 110 
     | 
    
         
            +
            - lib/cinch/timer.rb
         
     | 
| 
      
 111 
     | 
    
         
            +
            - lib/cinch/user.rb
         
     | 
| 
      
 112 
     | 
    
         
            +
            - lib/cinch/user_list.rb
         
     | 
| 
      
 113 
     | 
    
         
            +
            - lib/cinch/utilities/deprecation.rb
         
     | 
| 
      
 114 
     | 
    
         
            +
            - lib/cinch/utilities/encoding.rb
         
     | 
| 
      
 115 
     | 
    
         
            +
            - lib/cinch/utilities/kernel.rb
         
     | 
| 
      
 116 
     | 
    
         
            +
            - lib/cinch/version.rb
         
     | 
| 
       118 
117 
     | 
    
         
             
            homepage: http://cinchrb.org
         
     | 
| 
       119 
118 
     | 
    
         
             
            licenses:
         
     | 
| 
       120 
119 
     | 
    
         
             
            - MIT
         
     | 
| 
      
 120 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
       121 
121 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       122 
122 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       123 
123 
     | 
    
         
             
            require_paths:
         
     | 
| 
       124 
124 
     | 
    
         
             
            - lib
         
     | 
| 
       125 
125 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
       126 
     | 
    
         
            -
              none: false
         
     | 
| 
       127 
126 
     | 
    
         
             
              requirements:
         
     | 
| 
       128 
     | 
    
         
            -
              - -  
     | 
| 
      
 127 
     | 
    
         
            +
              - - ">="
         
     | 
| 
       129 
128 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       130 
129 
     | 
    
         
             
                  version: 1.9.1
         
     | 
| 
       131 
130 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       132 
     | 
    
         
            -
              none: false
         
     | 
| 
       133 
131 
     | 
    
         
             
              requirements:
         
     | 
| 
       134 
     | 
    
         
            -
              - -  
     | 
| 
      
 132 
     | 
    
         
            +
              - - ">="
         
     | 
| 
       135 
133 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       136 
134 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       137 
135 
     | 
    
         
             
            requirements: []
         
     | 
| 
       138 
136 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       139 
     | 
    
         
            -
            rubygems_version:  
     | 
| 
      
 137 
     | 
    
         
            +
            rubygems_version: 2.4.5
         
     | 
| 
       140 
138 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       141 
     | 
    
         
            -
            specification_version:  
     | 
| 
      
 139 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
       142 
140 
     | 
    
         
             
            summary: An IRC Bot Building Framework
         
     | 
| 
       143 
141 
     | 
    
         
             
            test_files: []
         
     | 
| 
       144 
     | 
    
         
            -
            has_rdoc: yard
         
     |