File: memo_key.rb

package info (click to toggle)
ruby-hocon 1.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 768 kB
  • sloc: ruby: 7,903; makefile: 4
file content (42 lines) | stat: -rw-r--r-- 935 bytes parent folder | download
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
# encoding: utf-8

require_relative '../../hocon'
require_relative '../../hocon/impl'

class Hocon::Impl::MemoKey

  def initialize(value, restrict_to_child_or_nil)
    @value = value
    @restrict_to_child_or_nil = restrict_to_child_or_nil
  end

  def hash
    h = @value.hash
    if @restrict_to_child_or_nil != nil
      h + 41 * (41 + @restrict_to_child_or_nil.hash)
    else
      h
    end
  end

  def ==(other)
    if other.is_a?(self.class)
      o = other
      if !o.value.equal?(@value)
        return false
      elsif o.restrict_to_child_or_nil.equals(@restrict_to_child_or_nil)
        return true
      elsif o.restrict_to_child_or_nil == nil || @restrict_to_child_or_nil == nil
        return false
      else
        return o.restrict_to_child_or_nil == @restrict_to_child_or_nil
      end
    else
      false
    end
  end

  def to_s
    "MemoKey(#{@value}@#{@value.hash},#{@restrict_to_child_or_nil})"
  end
end