Sha256: 7ca16763c228a3cfbdbb3052fbd5cb0c8353ecf5bb373f5fcc96a503b222f9af

Contents?: true

Size: 667 Bytes

Versions: 1

Compression:

Stored size: 667 Bytes

Contents

module SubDiff
  # Processes matches for {String#gsub} replacements
  # by pushing diffs into a {Builder} instance.
  #
  # Used internally by {Adapter}.
  #
  # @api private
  class Sub
    include Buildable

    def diff(search, *args, &block)
      differ.match(search, *args, block) do |diff|
        append_diff_to_builder(diff, search)
      end
    end

    private

    def append_diff_to_builder(diff, search)
      builder << prefix(diff)
      builder.push(diff[:replacement], diff[:match])
      builder << suffix(diff, search)
    end

    def prefix(diff)
      diff[:prefix]
    end

    def suffix(diff, _search)
      diff[:suffix]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sub_diff-1.1.1 lib/sub_diff/sub.rb