Class: Bocadillo::Serializer

Inherits:
Object
  • Object
show all
Defined in:
lib/bocadillo/serializer.rb

Class Method Summary collapse

Class Method Details

.serialize(tree, preamble, divider, terminator, nested = false) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/bocadillo/serializer.rb', line 2

def self.serialize(tree, preamble, divider, terminator, nested = false)
  return '' if tree.nil?

  head = [tree['l']]
  if tree['c'].length === 0
    return head
  end

  if tree['c'].length === 1
    tail = [self.serialize(tree['c'][0], preamble, divider, terminator, true)]
  else
    suffixes = tree['c'].map do |suffix|
      Bocadillo::Serializer.serialize(suffix, preamble, divider, terminator, true)
    end
    tail = [suffixes.join(divider)]
    if nested
      tail = [preamble].concat(tail).concat([terminator]);
    end
  end
  return head.concat(tail).join('')
end