Module: Bytemapper::Flattenable

Included in:
Chunk, Shape, Table
Defined in:
lib/bytemapper/flattenable.rb

Instance Method Summary collapse

Instance Method Details

#flatten(flattened = {}, prefix = nil) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/bytemapper/flattenable.rb', line 19

def flatten(flattened = {}, prefix = nil)
  each do |k,v|
    k = prefix.nil? ?  k : "#{prefix}_#{k}".to_sym
    if v.is_a?(Hash)
      v.flatten(flattened, k)
    elsif v.is_a?(Bytemapper::Table)
      v.each_with_index { |e,i| e.flatten(flattened, i) }
    else
      flattened[k] = v
    end
  end
  flattened
end

#sizeObject



33
34
35
# File 'lib/bytemapper/flattenable.rb', line 33

def size
  flatten.values.map(&:first).reduce(:+) >> 3
end