Module: Pangrid::ExolveWriter

Included in:
ExolveBlank, ExolveFilled
Defined in:
lib/pangrid/plugins/exolve.rb

Instance Method Summary collapse

Instance Method Details

#format_clues(numbers, clues) ⇒ Object



35
36
37
# File 'lib/pangrid/plugins/exolve.rb', line 35

def format_clues(numbers, clues)
  numbers.zip(clues).map {|n, c| "#{n.to_s.rjust(2)} #{c}"}
end

#format_headers(xw) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/pangrid/plugins/exolve.rb', line 22

def format_headers(xw)
  headers = [
    'id', 'replace-with-unique-id',
    'title', xw.title,
    'setter', xw.author,
    'width', xw.width,
    'height', xw.height,
    'copyright', xw.copyright,
    'prelude', xw.preamble
  ]
  headers.each_slice(2).select {|k, v| v}.map {|k, v| "exolve-#{k}: #{v}"}
end

#indent(lines) ⇒ Object



39
40
41
# File 'lib/pangrid/plugins/exolve.rb', line 39

def indent(lines)
  lines.map {|x| "  " + x}
end

#write(xw) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/pangrid/plugins/exolve.rb', line 8

def write(xw)
  headers = format_headers(xw)
  across, down = xw.number
  grid = format_grid(xw)
  ac = format_clues(across, xw.across_clues)
  dn = format_clues(down, xw.down_clues)
  across = ["exolve-across:"] + indent(ac)
  down = ["exolve-down:"] + indent(dn)
  grid = ["exolve-grid:"] + indent(grid)
  body = headers + grid + across + down
  out = ["exolve-begin"] + indent(body) + ["exolve-end"]
  out.join("\n")
end