Class: Kiba::Extend::Transforms::Deduplicate::Fields
- Inherits:
-
Object
- Object
- Kiba::Extend::Transforms::Deduplicate::Fields
- Includes:
- MultivalPlusDelimDeprecatable, SepDeprecatable
- Defined in:
- lib/kiba/extend/transforms/deduplicate/fields.rb
Overview
Removes the value(s) of source
from targets
Instance Method Summary collapse
-
#initialize(source:, targets:, casesensitive: true, multival: omitted = true, sep: nil, delim: nil) ⇒ Fields
constructor
A new instance of Fields.
-
#process(row) ⇒ Object
Methods included from SepDeprecatable
Methods included from MultivalPlusDelimDeprecatable
Constructor Details
#initialize(source:, targets:, casesensitive: true, multival: omitted = true, sep: nil, delim: nil) ⇒ Fields
Returns a new instance of Fields.
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/kiba/extend/transforms/deduplicate/fields.rb', line 145 def initialize(source:, targets:, casesensitive: true, multival: omitted = true, sep: nil, delim: nil) @source = source @casesensitive = casesensitive @multival = if omitted && delim true else set_multival(multival, omitted, self) end if sep.nil? && delim.nil? && multival && !omitted msg = "If you are expecting Kiba::Extend.delim to be used as "\ "default `sep` value, please pass it as explicit `delim` "\ "argument. In a future release of kiba-extend, the `delim` "\ "value will no longer default to Kiba::Extend.delim." warn("#{Kiba::Extend.warning_label}:\n #{self.class}: #{msg}") sep = Kiba::Extend.delim end @delim = usedelim(sepval: sep, delimval: delim, calledby: self, default: nil) getter_params = if @delim {fields: targets, delim: @delim} else {fields: targets} end @getter = Helpers::FieldValueGetter.new(**getter_params) end |
Instance Method Details
#process(row) ⇒ Object
173 174 175 176 177 178 179 180 181 182 183 184 185 |
# File 'lib/kiba/extend/transforms/deduplicate/fields.rb', line 173 def process(row) sourceval = row[source] return row unless sourceval targetdata = getter.call(row) return row if targetdata.empty? sourcevals = split_value(sourceval) targetdata.transform_values! { |val| split_value(val) } deduplicate(row, sourcevals, targetdata) row end |