class AwDatapipe::PipelineObject
Attributes
id[R]
name[RW]
pipeline[RW]
Public Class Methods
build(params)
click to toggle source
# File lib/aw_datapipe/pipeline_object.rb, line 7 def self.build(params) new(params) end
new(params)
click to toggle source
# File lib/aw_datapipe/pipeline_object.rb, line 11 def initialize(params) @id = params.delete(:id) || params[:name].underscore.to_sym || raise(ArgumentError, ":id or :name required: #{params.inspect}") params.each_pair { |k, v| send "#{k}=", v } end
Public Instance Methods
dependencies()
click to toggle source
Iterates through struct members, recursively collecting any PipelineObjects. Recursion ensures dependencies sorted before dependents.
# File lib/aw_datapipe/pipeline_object.rb, line 19 def dependencies members.each_with_object([]) do |attr_name, depends| value = send(attr_name) value = pipeline.objects.fetch(value) if value.is_a?(Symbol) depends << value.dependencies << value if value.is_a?(PipelineObject) end.flatten end
inspect()
click to toggle source
# File lib/aw_datapipe/pipeline_object.rb, line 27 def inspect "#<#{type} #{to_hash}>" end
source(indent_level = 1)
click to toggle source
# File lib/aw_datapipe/pipeline_object.rb, line 35 def source(indent_level = 1) "#{self.class.name}.build(" << [:id, :name, *members].map do |member| "\n" << indent(indent_level) << member_source(member) end.join(",") << ")" end
to_hash()
click to toggle source
# File lib/aw_datapipe/pipeline_object.rb, line 31 def to_hash Hash[each_pair.select { |k, v| v != nil }].merge(id: id, name: name) end
type()
click to toggle source
# File lib/aw_datapipe/pipeline_object.rb, line 41 def type self.class.name.split('::').last end
Protected Instance Methods
indent(indent_level)
click to toggle source
# File lib/aw_datapipe/pipeline_object.rb, line 47 def indent(indent_level) " " * 2 * indent_level end
member_source(member)
click to toggle source
# File lib/aw_datapipe/pipeline_object.rb, line 51 def member_source(member) value = send member value = ?' << value.gsub("'", "\\\\'") << ?' if value.is_a?(String) value = ":#{value}" if member == :id "#{member}: #{value}" end