Class: JsonInference::NodeValuesCollection

Inherits:
Object
  • Object
show all
Defined in:
lib/json-inference.rb

Defined Under Namespace

Classes: ValueCounter

Instance Method Summary collapse

Constructor Details

#initializeNodeValuesCollection

Returns a new instance of NodeValuesCollection.



29
30
31
# File 'lib/json-inference.rb', line 29

def initialize
  @value_counters = Hash.new { |h,k| h[k] = ValueCounter.new(k) }
end

Instance Method Details

#<<(value) ⇒ Object



33
34
35
36
37
38
39
40
41
# File 'lib/json-inference.rb', line 33

def <<(value)
  if value.class == String && value =~ /^(\d){4}-(\d){2}-(\d){2}T(\d){2}:(\d){2}:(\d){2}\.(\d){3}Z$/
    @value_counters[Date] << value
  elsif [true, false].include?(value)
    @value_counters['Boolean'] << value
  else
    @value_counters[value.class] << value
  end
end

#sizeObject



43
44
45
# File 'lib/json-inference.rb', line 43

def size
  @value_counters.values.inject(0) { |sum, counter| sum + counter.size } || 0
end

#to_s(indent) ⇒ Object



47
48
49
50
51
52
53
# File 'lib/json-inference.rb', line 47

def to_s(indent)
  str = ""
  @value_counters.values.each do |value_counter|
    str << "  #{indent}#{value_counter.to_s(size)}\n"
  end
  str
end