class Kustomize::Json6902Patch::GsubOp

Public Class Methods

create(patch_spec) click to toggle source
# File lib/kustomize/json_6902_patch/gsub_op.rb, line 4
def self.create(patch_spec)
  self.new(
    paths: patch_spec['paths'],
    pattern: Regexp.new(patch_spec['pattern'], Regexp::EXTENDED),
    replacement: patch_spec['replacement']
  )
end
new(paths:, pattern:, replacement:) click to toggle source
# File lib/kustomize/json_6902_patch/gsub_op.rb, line 12
def initialize(paths:, pattern:, replacement:)
  @lenses = paths.map{ |path| parse_lens(path) }
  @pattern = pattern
  @replacement = replacement
end

Public Instance Methods

apply(rc) click to toggle source
# File lib/kustomize/json_6902_patch/gsub_op.rb, line 18
def apply(rc)
  @lenses.inject(rc) do |doc, lens|
    lens.update_in(doc) do |orig_value|
      next(:keep) unless orig_value.kind_of?(String)

      new_value = orig_value.gsub(@pattern, @replacement)

      if new_value != orig_value
        [:set, new_value]
      else
        :keep
      end
    end
  end
end