lib/dependabot/uv/name_normaliser.rb



# typed: strict
# frozen_string_literal: true

require "sorbet-runtime"

module Dependabot
  module Uv
    module NameNormaliser
      extend T::Sig

      sig { params(name: String).returns(String) }
      def self.normalise(name)
        extras_regex = /\[.+\]/
        name.downcase.gsub(/[-_.]+/, "-").gsub(extras_regex, "")
      end

      sig { params(name: String, extras: T::Array[String]).returns(String) }
      def self.normalise_including_extras(name, extras)
        normalised_name = normalise(name)
        return normalised_name if extras.empty?

        normalised_name + "[" + extras.join(",") + "]"
      end
    end
  end
end