From 9b10ca106d0835ed3bdd0c1661ee61982487765e Mon Sep 17 00:00:00 2001 From: Kristina Spurgin Date: Mon, 12 Aug 2024 16:06:47 -0400 Subject: [PATCH] Split transforms to different files --- lib/kiba/extend/transforms/append.rb | 92 +------------------ .../extend/transforms/append/nil_fields.rb | 51 ++++++++++ .../transforms/append/to_field_value.rb | 54 +++++++++++ 3 files changed, 106 insertions(+), 91 deletions(-) create mode 100644 lib/kiba/extend/transforms/append/nil_fields.rb create mode 100644 lib/kiba/extend/transforms/append/to_field_value.rb diff --git a/lib/kiba/extend/transforms/append.rb b/lib/kiba/extend/transforms/append.rb index 66e8c2440..71ca52bfc 100644 --- a/lib/kiba/extend/transforms/append.rb +++ b/lib/kiba/extend/transforms/append.rb @@ -3,99 +3,9 @@ module Kiba module Extend module Transforms - # Adds values to the end of fields or rows + # Namespace for transforms that add values to the end of fields or rows module Append ::Append = Kiba::Extend::Transforms::Append - - # Adds the given field(s) to the row with nil value if they do not - # already exist in row - # - # # Examples - # - # Input table: - # - # ~~~ - # | z | - # |----| - # | zz | - # ~~~ - # - # Used in pipeline as: - # - # ~~~ - # transform Append::NilFields, fields: %i[a b c z] - # ~~~ - # - # Results in: - # - # ~~~ - # | z | a | b | c | - # |----+-----+-----+-----| - # | zz | nil | nil | nil | - # ~~~ - class NilFields - # @param fields [Array, Symbol] field name or list of field - # names to add - def initialize(fields:) - @fields = [fields].flatten - end - - # @param row [Hash{ Symbol => String, nil }] - def process(row) - @fields.each do |field| - row[field] = nil unless row.key?(field) - end - row - end - end - - # Adds the given value to the end of value of the given field. Does not - # affect nil/empty field values - # - # # Examples - # - # Input table: - # - # ~~~ - # | name | - # |-------| - # | Weddy | - # | nil | - # | | - # ~~~ - # - # Used in pipeline as: - # - # ~~~ - # transform Append::ToFieldValue, field: :name, value: ' (name)' - # ~~~ - # - # Results in: - # - # ~~~ - # | name | - # |--------------| - # | Weddy (name) | - # | nil | - # | | - # ~~~ - class ToFieldValue - # @param field [Symbol] name of field to append to - # @param value [String] value to append to existing field values - def initialize(field:, value:) - @field = field - @value = value - end - - # @param row [Hash{ Symbol => String, nil }] - def process(row) - fv = row.fetch(@field, nil) - return row if fv.blank? - - row[@field] = "#{fv}#{@value}" - row - end - end end end end diff --git a/lib/kiba/extend/transforms/append/nil_fields.rb b/lib/kiba/extend/transforms/append/nil_fields.rb new file mode 100644 index 000000000..f246d7af6 --- /dev/null +++ b/lib/kiba/extend/transforms/append/nil_fields.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +module Kiba + module Extend + module Transforms + module Append + # Adds the given field(s) to the row with nil value if they do not + # already exist in row + # + # # Examples + # + # Input table: + # + # ~~~ + # | z | + # |----| + # | zz | + # ~~~ + # + # Used in pipeline as: + # + # ~~~ + # transform Append::NilFields, fields: %i[a b c z] + # ~~~ + # + # Results in: + # + # ~~~ + # | z | a | b | c | + # |----+-----+-----+-----| + # | zz | nil | nil | nil | + # ~~~ + class NilFields + # @param fields [Array, Symbol] field name or list of field + # names to add + def initialize(fields:) + @fields = [fields].flatten + end + + # @param row [Hash{ Symbol => String, nil }] + def process(row) + @fields.each do |field| + row[field] = nil unless row.key?(field) + end + row + end + end + end + end + end +end diff --git a/lib/kiba/extend/transforms/append/to_field_value.rb b/lib/kiba/extend/transforms/append/to_field_value.rb new file mode 100644 index 000000000..502bbbec7 --- /dev/null +++ b/lib/kiba/extend/transforms/append/to_field_value.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +module Kiba + module Extend + module Transforms + module Append + # # Examples + # + # Input table: + # + # ~~~ + # | name | + # |-------| + # | Weddy | + # | nil | + # | | + # ~~~ + # + # Used in pipeline as: + # + # ~~~ + # transform Append::ToFieldValue, field: :name, value: ' (name)' + # ~~~ + # + # Results in: + # + # ~~~ + # | name | + # |--------------| + # | Weddy (name) | + # | nil | + # | | + # ~~~ + class ToFieldValue + # @param field [Symbol] name of field to append to + # @param value [String] value to append to existing field values + def initialize(field:, value:) + @field = field + @value = value + end + + # @param row [Hash{ Symbol => String, nil }] + def process(row) + fv = row.fetch(@field, nil) + return row if fv.blank? + + row[@field] = "#{fv}#{@value}" + row + end + end + end + end + end +end