Sha256: a13cdb1c6fce3bad2d71fc2823ba3f6f80a962b3339999f924563abb8192d386

Contents?: true

Size: 1.64 KB

Versions: 3

Compression:

Stored size: 1.64 KB

Contents

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

      def initialize(options)
        @version = options["version"] || options[:version]
        @description = options["description"] || options[:description]
        self.additions = options["additions"] || options[:additions] || []
        self.modifications = options["modifications"] || options[:modifications] || []
        self.deletions = options["deletions"] || options[:deletions] || []
        self.changes = options["changes"] || options[:changes] || []
      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 changes=(changes)
        validate_type("changes", changes, Array)

        @changes = changes
      end

      def to_h
        {
          "version" => version,
          "description" => description,
          "additions" => additions,
          "modifications" => modifications,
          "deletions" => deletions,
          "changes" => changes,
        }.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

3 entries across 3 versions & 1 rubygems

Version Path
stepmod-utils-0.6.8 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.6.7 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.6.6 lib/stepmod/utils/change_edition.rb