This file is indexed.

/usr/lib/ruby/vendor_ruby/hashery/ordered_hash.rb is in ruby-hashery 2.1.1-1.

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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
module Hashery

  # OrderedHash is a simple ordered hash implmentation, for users of
  # Ruby 1.8.7 or less.
  #
  # NOTE: As of Ruby 1.9+ this class is not needed, since
  # Ruby 1.9's standard Hash tracks inseration order.
  #
  # This implementation derives from the same class in
  # ActiveSupport library.
  #
  class OrderedHash < ::Hash

    def to_yaml_type
      "!tag:yaml.org,2002:omap"
    end

    def to_yaml(opts = {})
      YAML.quick_emit(self, opts) do |out|
        out.seq(taguri, to_yaml_style) do |seq|
          each do |k, v|
            seq.add(k => v)
          end
        end
      end
    end

    # Hash is ordered in Ruby 1.9!
    if RUBY_VERSION < '1.9'

      def initialize(*args, &block)
        super
        @keys = []
      end

      def self.[](*args)
        ordered_hash = new

        if (args.length == 1 && args.first.is_a?(Array))
          args.first.each do |key_value_pair|
            next unless (key_value_pair.is_a?(Array))
            ordered_hash[key_value_pair[0]] = key_value_pair[1]
          end

          return ordered_hash
        end

        unless (args.size % 2 == 0)
          raise ArgumentError.new("odd number of arguments for Hash")
        end

        args.each_with_index do |val, ind|
          next if (ind % 2 != 0)
          ordered_hash[val] = args[ind + 1]
        end

        ordered_hash
      end

      def initialize_copy(other)
        super(other)
        @keys = other.keys
      end

      def []=(key, value)
        @keys << key unless key?(key)
        super(key, value)
      end

      def delete(key)
        if has_key? key
          index = @keys.index(key)
          @keys.delete_at(index)
        end
        super(key)
      end

      def delete_if
        super
        sync_keys!
        self
      end

      def reject!
        super
        sync_keys!
        self
      end

      def reject(&block)
        dup.reject!(&block)
      end

      def keys
        @keys.dup
      end

      def values
        @keys.collect{ |key| self[key] }
      end

      def to_hash
        self
      end

      def to_a
        @keys.map{ |key| [ key, self[key] ] }
      end

      def each_key
        @keys.each{ |key| yield(key) }
      end

      def each_value
        @keys.each{ |key| yield(self[key]) }
      end

      def each
        @keys.each{ |key| yield(key, self[key]) }
      end

      alias_method :each_pair, :each

      def clear
        super
        @keys.clear
        self
      end

      def shift
        k = @keys.first
        v = delete(k)
        [k, v]
      end

      def merge!(other_hash)
        other_hash.each{ |k,v| self[k] = v }
        self
      end

      def merge(other_hash)
        dup.merge!(other_hash)
      end

      # When replacing with another hash, the initial order of our
      # keys must come from the other hash, ordered or not.
      def replace(other)
        super
        @keys = other.keys
        self
      end

      def inspect
        "#<OrderedHash #{super}>"
      end

    private

      def sync_keys!
        @keys.delete_if{ |k| !key?(k) }
      end

    end

  end

end

require 'yaml'

YAML.add_builtin_type("omap") do |type, val|
  OrderedHash[val.map(&:to_a).map(&:first)]
end