class AwDatapipe::SourceWriter

Writes a Pipeline definition into a ruby script.

Attributes

pipeline[R]

Public Class Methods

call(pipeline, pathname) click to toggle source
# File lib/aw_datapipe/source_writer.rb, line 4
def self.call(pipeline, pathname)
  new(pipeline).call(pathname)
end
new(pipeline) click to toggle source
# File lib/aw_datapipe/source_writer.rb, line 11
def initialize(pipeline)
  @pipeline = pipeline
end

Public Instance Methods

call(pathname) click to toggle source
# File lib/aw_datapipe/source_writer.rb, line 15
def call(pathname)
  File.write(pathname, source)
end
source() click to toggle source
# File lib/aw_datapipe/source_writer.rb, line 19
def source
  [
    header_source,
    objects_source,
    parameter_metadata_source,
    parameter_values_source,
    footer_source
  ].join("\n")
end

Protected Instance Methods

header_source() click to toggle source
# File lib/aw_datapipe/source_writer.rb, line 31
    def header_source
      <<-EOF
# Generated by aw_datapipe download_definition of #{pipeline.id}
require 'aw_datapipe'
      EOF
    end
objects_source() click to toggle source
# File lib/aw_datapipe/source_writer.rb, line 38
def objects_source
  object_ids = objects.keys
  unreferenced_object_ids = object_ids - referenced_object_ids
  s = referenced_object_ids.map { |id| "#{id} = #{objects[id].source}" }.join("\n\n")
  s << "\n\nactivities = [\n"
  s << unreferenced_object_ids.map { |id| "  #{objects[id].source(2)}" }.join(",\n")
  s << "\n]"
end
parameter_metadata_source() click to toggle source
# File lib/aw_datapipe/source_writer.rb, line 47
def parameter_metadata_source
  "parameter_metadata = {\n  " << parameter_metadata.sort.map do |key, value|
    "\"#{key}\" => #{value.source}"
  end.join(",\n  ") << "\n}\n"
end
parameter_values_source() click to toggle source
# File lib/aw_datapipe/source_writer.rb, line 53
def parameter_values_source
  "parameter_values = {\n  " << parameter_values.sort.map do |key, value|
    "\"#{key}\" => #{value.inspect}"
  end.join(",\n  ") << "\n}\n"
end