Sha256: 9be6fc53507096a333bc9fd9f009f702e2abf4f4865bf6f9f5224352dd8c977b

Contents?: true

Size: 888 Bytes

Versions: 2

Compression:

Stored size: 888 Bytes

Contents

# Copyright (c) 2020 Jerome Arbez-Gindre
# frozen_string_literal: true

module DefMastership
  # Change references from temporary to definitive with multiple RefChangers
  class BatchChanger
    attr_reader :refchangers

    def initialize
      @refchangers = {}
    end

    def self.from_h(hash)
      new.from_h(hash)
    end

    def from_h(hash)
      @refchangers =
        hash.transform_values do |value|
          DefMastership::RefChanger.from_h(value)
        end
      self
    end

    def to_h
      @refchangers.transform_values(&:to_h)
    end

    def replace(symb, line)
      @refchangers.reduce(line) do |res_line, (_, refchanger)|
        refchanger.public_send("replace_#{symb}".to_sym, res_line)
      end
    end

    def changes
      @refchangers.reduce([]) do |all_changes, (_, refchanger)|
        all_changes + refchanger.changes
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
defmastership-1.0.5 lib/defmastership/batch_changer.rb
defmastership-1.0.4 lib/defmastership/batch_changer.rb