Sha256: f989537032b4a1d456b42a69ca29d51dcfe6912550ec77c41700a12c43302c08

Contents?: true

Size: 1.5 KB

Versions: 25

Compression:

Stored size: 1.5 KB

Contents

module Stepmod
  module Utils
    class ChangeEdition
      attr_accessor :version, :description
      attr_reader :additions, :modifications, :deletions, :mapping

      def initialize(options)
        @version = options[:version]
        @description = options[:description]
        self.additions = options[:additions] || []
        self.modifications = options[:modifications] || []
        self.deletions = options[:deletions] || []
        self.mapping = options[:mapping] || []
      end

      def additions=(additions)
        validate_type("additions", additions, Array)

        @additions = additions
      end

      def modifications=(modifications)
        validate_type("modifications", modifications, Array)

        @modifications = modifications
      end

      def deletions=(deletions)
        validate_type("deletions", deletions, Array)

        @deletions = deletions
      end

      def mapping=(mapping)
        validate_type("mapping", mapping, Array)

        @mapping = mapping
      end

      def to_h
        {
          "version" => version,
          "description" => description,
          "additions" => additions,
          "modifications" => modifications,
          "deletions" => deletions,
          "mapping" => mapping,
        }.reject { |_k, v| v.nil? || v.empty? }
      end

      private

      def validate_type(column, value, type)
        error = "#{column} must be of type ::#{type}, Got ::#{value.class}"

        raise error unless value.is_a?(type)
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
stepmod-utils-0.4.13 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.4.12 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.4.11 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.4.10 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.4.9 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.4.8 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.4.7 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.4.6 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.4.5 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.4.2 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.4.1 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.4.0 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.3.37 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.3.36 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.3.35 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.3.34 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.3.33 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.3.32 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.3.31 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.3.30 lib/stepmod/utils/change_edition.rb