Sha256: 8c0e5862df77b13b6c6821f6c03710c896e1e5404dfe090ed8efebbf302505fa

Contents?: true

Size: 1016 Bytes

Versions: 21

Compression:

Stored size: 1016 Bytes

Contents

require "pact_broker/domain/group"

module PactBroker

  module Pacticipants

    class FindPotentialDuplicatePacticipantNames

      attr_reader :new_name, :existing_names

      def initialize new_name, existing_names
        @new_name = new_name
        @existing_names = existing_names
      end

      def self.call new_name, existing_names
        new(new_name, existing_names).call
      end

      def call
        return [] if existing_names.include?(new_name)

        existing_names.select do | existing_name |
          clean(new_name) == clean(existing_name)
        end
      end

      def clean name
        self.class.split(name).collect{|w| w.chomp("s") } - ["api", "provider", "service"]
      end

      def self.split(string)
        string.gsub(/\s/, "_")
              .gsub(/::/, "/")
              .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
              .gsub(/([a-z\d])([A-Z])/, '\1_\2')
              .tr("-", "_")
              .downcase
              .split("_")
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
pact_broker-2.94.0 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.93.4 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.93.3 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.93.2 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.93.1 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.93.0 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.92.0 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.91.0 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.90.0 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.89.1 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.89.0 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.88.0 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.87.0 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.86.0 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.85.1 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.85.0 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.84.0 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.83.0 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.82.0 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb
pact_broker-2.81.0 lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names.rb