This file is indexed.

/usr/lib/ruby/vendor_ruby/eim_xml/parser.rb is in ruby-eim-xml 0.0.4-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
# XML parser for EimXML
#
# Copyright (C) 2006, KURODA Hiraku <hiraku@hinet.mydns.jp>
# You can redistribute it and/or modify it under GPL2.
#

require "eim_xml"
require "strscan"

module EimXML
	class ParseError < StandardError
	end

	class Parser
		attr_reader :scanner
		module RE
			EMPTY_ELEMENT = /<([^>]*?)\/>/
			START_TAG = /<([^>]*?([^\/>]\s*))>/
			END_TAG = /<\/(\S+?)\s*>/
			ATTRIBUTE = /\s+([^=\s]+)\s*=\s*('(.*?)'|"(.*?)")/m
			STRING = /[^<]+/
		end

		def initialize(src)
			@scanner = StringScanner.new(src)
			@scanner.scan(/\s*<\?.*?\?>\s*/)
		end

		def parse
			if @scanner.scan(RE::EMPTY_ELEMENT)
				parse_empty_element
			elsif @scanner.scan(RE::START_TAG)
				parse_start_tag
			elsif @scanner.scan(RE::STRING)
				parse_string
			else
				nil
			end
		end

		def parse_tag
			s = StringScanner.new(@scanner[1])
			e = Element.new(s.scan(/\S+/))
			e[s[1]] = s[3] ? s[3] : s[4] while s.scan(RE::ATTRIBUTE)
			e
		end
		protected :parse_tag

		def parse_empty_element
			parse_tag
		end
		protected :parse_empty_element

		def parse_start_tag
			e = parse_tag

			until @scanner.scan(RE::END_TAG)
				c = parse
				raise ParseError.new("Syntax error.") unless c
				e << c
			end
			raise ParseError.new("End tag mismatched.") unless @scanner[1].to_sym==e.name
			e
		end
		protected :parse_start_tag

		def parse_string
			s = @scanner[0]
			s = s.gsub(/&(amp|quot|apos|lt|gt);/) do
				case $1
				when "amp"
					"&"
				when "quot"
					'"'
				when "apos"
					"'"
				when "lt"
					"<"
				when "gt"
					">"
				end
			end
			PCString.new(s)
		end
		protected :parse_string
	end
end