Sha256: c9d185411f874301fdc5bf2b8655b9e79cbaad5c5e941f89774299dbaba6ebfe

Contents?: true

Size: 1.14 KB

Versions: 12

Compression:

Stored size: 1.14 KB

Contents

# frozen_string_literal: true

require_relative '../colorizable'
require_relative '../normalizable'

module Branch
  module Name
    class BranchNameService
      include Colorizable
      include Normalizable

      def initialize(description:, ticket: nil, options: {})
        @description  = description
        @ticket       = ticket
        @options      = options
      end

      def call
        validate_description!
        @branch_name = normalize_branch_name!
        validate_banch_name!
        @branch_name
      end

      private

      attr_reader :options

      def normalize_branch_name!
        normalize_branch_name(@description, @ticket) do |error|
          raise ArgumentError, error.message
        end
      end

      def validate_description!
        return unless @description.blank?

        raise ArgumentError, 'description is required'
      end

      def validate_banch_name!
        return unless @branch_name.blank?

        raise ArgumentError, invalid_branch_name_message
      end

      def invalid_branch_name_message
        'the combination of description/ticket resulted in an empty branch name'
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
branch-name-4.0.5 lib/branch/name/services/branch_name_service.rb
branch-name-4.0.4 lib/branch/name/services/branch_name_service.rb
branch-name-4.0.3 lib/branch/name/services/branch_name_service.rb
branch-name-4.0.2 lib/branch/name/services/branch_name_service.rb
branch-name-4.0.1 lib/branch/name/services/branch_name_service.rb
branch-name-4.0.0 lib/branch/name/services/branch_name_service.rb
branch-name-3.10.10 lib/branch/name/services/branch_name_service.rb
branch-name-3.10.9 lib/branch/name/services/branch_name_service.rb
branch-name-3.10.8 lib/branch/name/services/branch_name_service.rb
branch-name-3.10.7 lib/branch/name/services/branch_name_service.rb
branch-name-3.10.6 lib/branch/name/services/branch_name_service.rb
branch-name-3.10.5 lib/branch/name/services/branch_name_service.rb