Sha256: ec73329d67b6feaa5fe62b0089e2963c187abeefa307c5c4b36a8727b05115bf

Contents?: true

Size: 1.01 KB

Versions: 9

Compression:

Stored size: 1.01 KB

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)
      raise(ArgumentError, "#{modif} is not a known modification") if @config[modif.to_sym].nil?

      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

9 entries across 9 versions & 1 rubygems

Version Path
defmastership-1.0.16 lib/defmastership/batch_modifier.rb
defmastership-1.0.15 lib/defmastership/batch_modifier.rb
defmastership-1.0.14 lib/defmastership/batch_modifier.rb
defmastership-1.0.13 lib/defmastership/batch_modifier.rb
defmastership-1.0.12 lib/defmastership/batch_modifier.rb
defmastership-1.0.11 lib/defmastership/batch_modifier.rb
defmastership-1.0.10 lib/defmastership/batch_modifier.rb
defmastership-1.0.9 lib/defmastership/batch_modifier.rb
defmastership-1.0.8 lib/defmastership/batch_modifier.rb