class Sie::Document::Renderer

Constants

ENCODING

Public Class Methods

new() click to toggle source
# File lib/sie/document/renderer.rb, line 6
def initialize
  @io = StringIO.new
  @io.set_encoding(ENCODING)
end

Public Instance Methods

add_array() { || ... } click to toggle source
# File lib/sie/document/renderer.rb, line 15
def add_array
  append "{"
  yield
  append "}"
end
add_line(label, *values) click to toggle source
# File lib/sie/document/renderer.rb, line 11
def add_line(label, *values)
  append ["##{ label }", *format_values(values)].join(" ")
end
render() click to toggle source
# File lib/sie/document/renderer.rb, line 21
def render
  io.rewind
  io.read
end

Private Instance Methods

append(text) click to toggle source
# File lib/sie/document/renderer.rb, line 30
def append(text)
  io.puts(encoded(text))
end
encoded(text) click to toggle source
# File lib/sie/document/renderer.rb, line 38
def encoded(text)
  text.encode(ENCODING, :invalid => :replace, :undef => :replace, :replace => "?")
end
format_value(value) click to toggle source
# File lib/sie/document/renderer.rb, line 42
def format_value(value)
  case value
  when Date
    value.strftime("%Y%m%d")
  when Array
    subvalues = value.map { |subvalue| format_value(subvalue.to_s) }
    "{#{subvalues.join(' ')}}"
  when Numeric
    value.to_s
  else
    '"' + value.to_s.gsub('"', '\"') + '"'
  end
end
format_values(values) click to toggle source
# File lib/sie/document/renderer.rb, line 34
def format_values(values)
  values.map { |value| format_value(value) }
end