/usr/lib/ruby/vendor_ruby/net/irc/message.rb is in ruby-net-irc 0.0.9-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | class Net::IRC::Message
include Net::IRC
class InvalidMessage < Net::IRC::IRCException; end
attr_reader :prefix, :command, :params
# Parse string and return new Message.
# If the string is invalid message, this method raises Net::IRC::Message::InvalidMessage.
def self.parse(str)
_, prefix, command, *rest = *PATTERN::MESSAGE_PATTERN.match(str)
raise InvalidMessage, "Invalid message: #{str.dump}" unless _
case
when rest[0] && !rest[0].empty?
middle, trailer, = *rest
when rest[2] && !rest[2].empty?
middle, trailer, = *rest[2, 2]
when rest[1]
params = []
trailer = rest[1]
when rest[3]
params = []
trailer = rest[3]
else
params = []
end
params ||= middle.split(/ /)[1..-1]
params << trailer if trailer
new(prefix, command, params)
end
def initialize(prefix, command, params)
@prefix = Prefix.new(prefix.to_s)
@command = command
@params = params
end
# Same as @params[n].
def [](n)
@params[n]
end
# Iterate params.
def each(&block)
@params.each(&block)
end
# Stringfy message to raw IRC message.
def to_s
str = ""
str << ":#{@prefix} " unless @prefix.empty?
str << @command
if @params
f = false
@params.each do |param|
f = !f && (param.empty? || param[0] == ?: || param.include?(" "))
str << " "
str << ":" if f
str << param
end
end
str << "\x0D\x0A"
str
end
alias to_str to_s
# Same as params.
def to_a
@params.dup
end
# If the message is CTCP, return true.
def ctcp?
#message = @params[1]
#message[0] == ?\01 && message[-1] == ?\01
/\x01(?>[^\x00\x01\r\n]*)\x01/ === @params[1]
end
def ctcps
messages = []
@params[1].gsub!(/\x01(?>[^\x00\x01\r\n]*)\x01/) do
messages << ctcp_decode($&)
""
end
messages
end
def inspect
"#<%s:0x%x prefix:%s command:%s params:%s>" % [
self.class,
self.object_id,
@prefix,
@command,
@params.inspect
]
end
autoload :ModeParser, "net/irc/message/modeparser"
autoload :ServerConfig, "net/irc/message/serverconfig"
#autoload :ISupportModeParser, "net/irc/message/isupportmodeparser"
end # Message
|