class PipeFitter::Pipeline::PipelineBaseObjects
Public Class Methods
new(objs)
click to toggle source
# File lib/pipe_fitter/pipeline.rb, line 86 def initialize(objs) @objs = (objs || []).map { |obj| symbolize_keys(obj) } .sort_by { |obj| obj[:id] }.map do |obj| obj.sort_by do |k, v| [key_order.index(k) || key_order.size + 1, k.to_s, v.to_s] end.to_h end end
Private Class Methods
update_hash(base, key, value)
click to toggle source
# File lib/pipe_fitter/pipeline.rb, line 124 def self.update_hash(base, key, value) if base.key?(key) base[key] = [base[key]] unless base[key].is_a?(Array) base[key] << value else base[key] = value end base end
Public Instance Methods
to_objs()
click to toggle source
# File lib/pipe_fitter/pipeline.rb, line 95 def to_objs case @objs when Array then @objs.map { |obj| stringify_keys(obj) } else stringify_keys(@objs) end end
Private Instance Methods
modify_keys_recursively(val, method)
click to toggle source
# File lib/pipe_fitter/pipeline.rb, line 112 def modify_keys_recursively(val, method) return val unless val.is_a?(Hash) h = Hashie.send(method, val.to_h) h.each do |k, v| case v when Array then h[k].map! { |e| self.send(method, e) } when Hash then h[k] = self.send(method, v) end end h end
split_object(obj, skip_keys)
click to toggle source
# File lib/pipe_fitter/pipeline.rb, line 134 def split_object(obj, skip_keys) res = [] obj.each do |k, v| next if skip_keys.include?(k) (v.is_a?(Array) ? v : [v]).each do |vv| if vv.is_a?(Hash) && vv.key?(:ref) res << { key: k, ref_value: vv[:ref] } else res << { key: k, string_value: vv } end end end res end
stringify_keys(val)
click to toggle source
# File lib/pipe_fitter/pipeline.rb, line 104 def stringify_keys(val) modify_keys_recursively(val, __method__) end
symbolize_keys(val)
click to toggle source
# File lib/pipe_fitter/pipeline.rb, line 108 def symbolize_keys(val) modify_keys_recursively(val, __method__) end