From 9492f29e667c7b96c7af0d8ce8dc4676dfe64ba6 Mon Sep 17 00:00:00 2001 From: Torsten Ruger Date: Sat, 13 Jun 2015 23:09:02 +0300 Subject: [PATCH] split node classes into separate files --- lib/salama-object-file.rb | 2 ++ lib/sof/node.rb | 38 +------------------------------------- lib/sof/object_node.rb | 30 ++++++++++++++++++++++++++++++ lib/sof/simple_node.rb | 19 +++++++++++++++++++ 4 files changed, 52 insertions(+), 37 deletions(-) create mode 100644 lib/sof/object_node.rb create mode 100644 lib/sof/simple_node.rb diff --git a/lib/salama-object-file.rb b/lib/salama-object-file.rb index 6d789ca..d805ad9 100644 --- a/lib/salama-object-file.rb +++ b/lib/salama-object-file.rb @@ -1,5 +1,7 @@ require_relative "sof/util" require_relative "sof/node" +require_relative "sof/simple_node" +require_relative "sof/object_node" require_relative "sof/members" require_relative "sof/volotile" require_relative "sof/writer" diff --git a/lib/sof/node.rb b/lib/sof/node.rb index 713d0df..c706be0 100644 --- a/lib/sof/node.rb +++ b/lib/sof/node.rb @@ -1,7 +1,7 @@ # We transform objects into a tree of nodes module Sof - #abstract base class for nodes in the tree + # abstract base class for nodes in the tree # may be referenced (should be a simple name or number) class Node include Util @@ -19,40 +19,4 @@ module Sof end attr_reader :referenced end - - class SimpleNode < Node - def initialize data , ref = nil - super(ref) - @data = data - end - attr_reader :data - def out io , level - super(io,level) - io.write(data) - end - end - - class ObjectNode < Node - def initialize data , ref - super(ref) - @data = data - @children = [] - end - attr_reader :children , :data - def add k , v - @children << [k,v] - end - def out io , level = 0 - super - io.write(@data) - indent = " " * (level + 1) - @children.each_with_index do |child , i| - k , v = child - io.write "\n#{indent}" - k.out(io , level + 2) - io.write " " - v.out(io , level + 2) - end - end - end end diff --git a/lib/sof/object_node.rb b/lib/sof/object_node.rb new file mode 100644 index 0000000..a16f6cc --- /dev/null +++ b/lib/sof/object_node.rb @@ -0,0 +1,30 @@ + +module Sof + + # ObjectNode means node with structure + # ie arrays and hashes get transformed into these too + + class ObjectNode < Node + def initialize data , ref + super(ref) + @data = data + @children = [] + end + attr_reader :children , :data + def add k , v + @children << [k,v] + end + def out io , level = 0 + super + io.write(@data) + indent = " " * (level + 1) + @children.each_with_index do |child , i| + k , v = child + io.write "\n#{indent}" + k.out(io , level + 2) + io.write " " + v.out(io , level + 2) + end + end + end +end diff --git a/lib/sof/simple_node.rb b/lib/sof/simple_node.rb new file mode 100644 index 0000000..acc43bc --- /dev/null +++ b/lib/sof/simple_node.rb @@ -0,0 +1,19 @@ +# We transform objects into a tree of nodes + +module Sof + + # What makes a node simple is that it has no further structure + # + class SimpleNode < Node + def initialize data , ref = nil + super(ref) + @data = data + end + attr_reader :data + def out io , level + super(io,level) + io.write(data) + end + end + +end