Sha256: 59ce33a5ca32cc04ccc585f3821bf6ba7c91983288b44432ef2981397aefbab8

Contents?: true

Size: 933 Bytes

Versions: 2

Compression:

Stored size: 933 Bytes

Contents

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

module DefMastership
  # Change references from temporary to definitive with multiple RefChangers
  class BatchModifier
    attr_reader :config, :adoc_texts, :changes

    def initialize(config, adoc_texts)
      @config = config
      @adoc_texts = adoc_texts
      @changes = []
    end

    def apply(modifs)
      modifs.split(/\s*,\s*/).each do |modif|
        modifier = modifier_from(modif)
        @adoc_texts = modifier.do_modifications(@adoc_texts)
        @config[modif.to_sym][:config] = modifier.config
        modifier.changes.each do |change|
          @changes << [modif] + change
        end
      end
    end

    private

    def modifier_from(modif)
      class_name = "#{@config[modif.to_sym][:type].split('_').map(&:capitalize).join}Modifier"
      DefMastership.const_get(class_name).new(@config[modif.to_sym][:config])
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
defmastership-1.0.7 lib/defmastership/batch_modifier.rb
defmastership-1.0.6 lib/defmastership/batch_modifier.rb