Sha256: 046ed52b170dbfdd595587a2464a5fe42004a979e514b39ca1a9241acc5b55ab

Contents?: true

Size: 1.5 KB

Versions: 7

Compression:

Stored size: 1.5 KB

Contents

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

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

7 entries across 7 versions & 1 rubygems

Version Path
stepmod-utils-0.6.5 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.6.3 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.6.2 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.6.1 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.6.0 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.5.0 lib/stepmod/utils/change_edition.rb
stepmod-utils-0.4.14 lib/stepmod/utils/change_edition.rb