47 lines
745 B
Ruby
47 lines
745 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Sbom
|
|
class PackageUrl
|
|
class Normalizer
|
|
def initialize(type:, text:)
|
|
@type = type
|
|
@text = text
|
|
end
|
|
|
|
def normalize_namespace
|
|
return if text.nil?
|
|
|
|
normalize
|
|
end
|
|
|
|
def normalize_name
|
|
raise ArgumentError, 'Name is required' if text.nil?
|
|
|
|
normalize
|
|
end
|
|
|
|
private
|
|
|
|
def normalize
|
|
case type
|
|
when 'bitbucket', 'github'
|
|
downcase
|
|
when 'pypi'
|
|
normalize_pypi
|
|
else
|
|
text
|
|
end
|
|
end
|
|
|
|
attr_reader :type, :text
|
|
|
|
def downcase
|
|
text.downcase
|
|
end
|
|
|
|
def normalize_pypi
|
|
downcase.tr('_', '-')
|
|
end
|
|
end
|
|
end
|
|
end
|