Sha256: e2c42fea45359a41f599f3a10f1066e8152c0050e2c64f61d245ef039fda7ecc

Contents?: true

Size: 1.03 KB

Versions: 4

Compression:

Stored size: 1.03 KB

Contents

require_relative '../all_jobs_shared'

class ParseDateJob < Remi::Job

  param(:format) { '%Y-%m-%d' }
  param(:if_blank) { nil }

  source :source_data do
    fields(
      {
        :date_string  => { type: :date, in_format: params[:format] },
        :stubbed_date => { type: :date, in_format: params[:format] }
      }
    )
  end

  target :target_data

  transform :main do
    # Only needed for testing, would be nice to make it testable without this
    job.params[:if_blank] = ['high', 'low'].include?(job.params[:if_blank]) ? job.params[:if_blank].to_sym : job.params[:if_blank]

    Remi::SourceToTargetMap.apply(source_data.df, target_data.df) do
      map source(:date_string) .target(:parsed_date)
        .transform(Remi::Transform::ParseDate.new(in_format: job.params[:format], if_blank: job.params[:if_blank]))

      map source(:stubbed_date) .target(:parsed_stubbed_date)
        .transform(Remi::Transform::ParseDate.new(in_format: source_data.fields[:stubbed_date][:in_format], if_blank: job.params[:if_blank]))
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
remi-0.3.3 jobs/transforms/parse_date_job.rb
remi-0.3.2 jobs/transforms/parse_date_job.rb
remi-0.3.1 jobs/transforms/parse_date_job.rb
remi-0.3.0 jobs/transforms/parse_date_job.rb