class Seafoam::JSONWriter
Write files in a JSON format.
Public Class Methods
new(out)
click to toggle source
# File lib/seafoam/json_writer.rb, line 6 def initialize(out) @out = out end
Public Instance Methods
write(name, graph)
click to toggle source
# File lib/seafoam/json_writer.rb, line 10 def write(name, graph) nodes = [] edges = [] graph.nodes.each_value do |node| nodes.push( id: node.id, props: node.props ) node.outputs.each do |edge| edges.push( from: edge.from.id, to: edge.to.id, props: edge.props ) end end object = { name: name, props: graph.props, nodes: nodes, edges: edges } @out.puts JSON.pretty_generate(prepare_json(object)) end
Private Instance Methods
prepare_json(object)
click to toggle source
# File lib/seafoam/json_writer.rb, line 41 def prepare_json(object) case object when Float if object.nan? '[NaN]' else object end when Array object.map { |o| prepare_json(o) } when Hash object.transform_values { |v| prepare_json(v) } else object end end