lib/sub_diff/gsub.rb
module SubDiff
# Processes matches for {String#gsub} replacements
# by pushing diffs into a {Builder} instance.
#
# Used internally by {Adapter}.
#
# @api private
class Gsub < Sub
private
def append_diff_to_builder(diff, _search)
super
last_prefix << prefix(diff) << diff[:match]
end
def last_prefix
@last_prefix ||= ''
end
def prefix(_diff)
super.sub(last_prefix, '')
end
def suffix(_diff, search)
suffix = super
regex = Regexp.new(search)
suffix unless suffix.match(regex)
end
end
end