This file is indexed.

/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