This file is indexed.

/usr/lib/ruby/vendor_ruby/slim/splat/builder.rb is in ruby-slim 2.0.2-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
module Slim
  module Splat
    # @api private
    class Builder
      def initialize(options)
        @options = options
        @attrs = {}
      end

      def code_attr(name, escape, value)
        if delim = @options[:merge_attrs][name]
          value = Array === value ? value.join(delim) : value.to_s
          attr(name, escape ? Temple::Utils.escape_html(value) : value) unless value.empty?
        elsif @options[:hyphen_attrs].include?(name) && Hash === value
          hyphen_attr(name, escape, value)
        else
          case value
          when false, nil
            # Boolean false attribute
            return
          when true
            # Boolean true attribute
            value = ''
          else
            value = value.to_s
          end
          attr(name, escape ? Temple::Utils.escape_html(value) : value)
        end
      end

      def splat_attrs(splat)
        splat.each do |name, value|
          code_attr(name.to_s, true, value)
        end
      end

      def attr(name, value)
        if @attrs[name]
          if delim = @options[:merge_attrs][name]
            @attrs[name] << delim << value
          else
            raise("Multiple #{name} attributes specified")
          end
        else
          @attrs[name] = value
        end
      end

      def build_tag
        tag = @attrs.delete('tag').to_s
        tag = @options[:default_tag] if tag.empty?
        if block_given?
          "<#{tag}#{build_attrs}>#{yield}</#{tag}>"
        else
          "<#{tag}#{build_attrs} />"
        end
      end

      def build_attrs
        attrs = @options[:sort_attrs] ? @attrs.sort_by(&:first) : @attrs
        attrs.map do |k, v|
          " #{k}=#{@options[:attr_quote]}#{v}#{@options[:attr_quote]}"
        end.join
      end

      private

      def hyphen_attr(name, escape, value)
        if Hash === value
          value.each do |n, v|
            hyphen_attr("#{name}-#{n.to_s.gsub('_', '-')}", escape, v)
          end
        else
          attr(name, escape ? Temple::Utils.escape_html(value) : value.to_s)
        end
      end
    end
  end
end