Class: Kiba::Extend::Transforms::Replace::GlobalReversible

Inherits:
Object
  • Object
show all
Defined in:
lib/kiba/extend/transforms/replace/global_reversible.rb

Overview

Note:

Runs on all fields in the job where it is used.

Note:

Has no effect if ProjectConfig.global_reversible_replacements is not populated

Replaces all ProjectConfig.global_reversible_replacements key matches with the corresponding :replace value.

Examples:

# Used in pipeline as:
# transform Replace::GlobalReversible
Kiba::Extend::ProjectConfig
  .config.global_reversible_replacements = {
    /(?:\n|\r)/ => {replace: "%CR%", reversed: "\n"},
    /\t/ => {replace: "%TAB%", reversed: " "},
    /  +/ => {replace: " ", reversed: " "}
  }
xform = Replace::GlobalReversible.new
input = [{
  ant: "a\nb",
  bat: nil,
  cow: "",
  dog: "c\rd",
  eel: "e\tf",
  fawn: "g    o"
}]
result = Kiba::StreamingRunner.transform_stream(input, xform)
  .map{ |row| row }
expected = [{
  ant: "a%CR%b",
  bat: nil,
  cow: nil,
  dog: "c%CR%d",
  eel: "e%TAB%f",
  fawn: "g o"
}]
expect(result).to eq(expected)
Kiba::Extend::ProjectConfig.reset_config

See Also:

Instance Method Summary collapse

Constructor Details

#initialize(omit_from_all_fields: []) ⇒ GlobalReversible

Returns a new instance of GlobalReversible.

Parameters:

  • omit_from_all_fields (Array<Symbol>) (defaults to: [])

    fields to omit from inclusion in “all” fields



48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/kiba/extend/transforms/replace/global_reversible.rb', line 48

def initialize(omit_from_all_fields: [])
  @omit_from_all_fields = omit_from_all_fields
  @replacers =
    Kiba::Extend::ProjectConfig.global_reversible_replacements
      .map do |pattern, config|
        Clean::RegexpFindReplaceFieldVals.new(
          fields: :all,
          omit_from_all_fields: omit_from_all_fields,
          find: pattern,
          replace: config[:replace]
        )
      end
end

Instance Method Details

#process(row) ⇒ Object



62
63
64
65
# File 'lib/kiba/extend/transforms/replace/global_reversible.rb', line 62

def process(row)
  replacers.each { |replacer| replacer.process(row) }
  row
end