module Sfp::Helper
Public Class Methods
deep_clone(value)
click to toggle source
# File lib/sfp/Sfplib.rb, line 114 def self.deep_clone(value) if value.is_a?(Hash) result = value.clone value.each { |k,v| if k != '_parent' result[k] = deep_clone(v) result[k]['_parent'] = result if result[k].is_a?(Hash) and result[k].has_key?('_parent') end } result elsif value.is_a?(Array) result = Array.new value.each { |v| result << deep_clone(v) } result else value end end
expand_object(obj, root)
click to toggle source
# File lib/sfp/Sfplib.rb, line 145 def self.expand_object(obj, root) return false if obj == nil or root == nil or not obj.has_key?('_isa') or obj['_isa'] == nil objclass = root.at?(obj['_isa']) if objclass.nil? or objclass.is_a?(Sfp::Unknown) or objclass.is_a?(Sfp::Undefined) raise Exception, "Schema #{obj['_isa']} of object #{obj['_self']} is not found!" end obj.inherits( objclass ) obj['_classes'] = (objclass.has_key?('_super') ? objclass['_super'].clone : Array.new) obj['_classes'] << obj['_isa'] if objclass['_finals'].is_a?(Array) if obj['_finals'].is_a?(Array) obj['_finals'].concat(objclass['_finals']) else obj['_finals'] = objclass['_finals'] end end return true end
to_json(sfp)
click to toggle source
# File lib/sfp/Sfplib.rb, line 133 def self.to_json(sfp) root = Sfp::Helper.deep_clone(sfp) root.accept(Sfp::Visitor::ParentEliminator.new) return JSON.generate(root) end
to_pretty_json(sfp)
click to toggle source
# File lib/sfp/Sfplib.rb, line 139 def self.to_pretty_json(sfp) root = Sfp::Helper.deep_clone(sfp) root.accept(Sfp::Visitor::ParentEliminator.new) return JSON.pretty_generate(root) end