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