Sha256: bc5237f0d270c7bd2d389124efe8bad5a778fc6dc328575544c53c352422cfce

Contents?: true

Size: 1.05 KB

Versions: 19

Compression:

Stored size: 1.05 KB

Contents

# frozen_string_literal: true
require 'json'
require 'net/http'

json = Net::HTTP.get('spdx.org', '/licenses/licenses.json')
licenses = JSON.parse(json)['licenses'].map do |licenseObject|
  licenseObject['licenseId']
end

open 'lib/rubygems/util/licenses.rb', 'w' do |io|
  io.write <<-RUBY
# frozen_string_literal: true
require 'rubygems/text'

class Gem::Licenses
  extend Gem::Text

  NONSTANDARD = 'Nonstandard'.freeze

  # Software Package Data Exchange (SPDX) standard open-source software
  # license identifiers
  IDENTIFIERS = %w(
      #{licenses.sort.join "\n      "}
  ).freeze

  REGEXP = %r{
    \\A
    (
      \#{Regexp.union(IDENTIFIERS)}
      \\+?
      (\\s WITH \\s .+)?
      | \#{NONSTANDARD}
    )
    \\Z
  }ox.freeze

  def self.match?(license)
    !REGEXP.match(license).nil?
  end

  def self.suggestions(license)
    by_distance = IDENTIFIERS.group_by do |identifier|
      levenshtein_distance(identifier, license)
    end
    lowest = by_distance.keys.min
    return unless lowest < license.size
    by_distance[lowest]
  end
end
  RUBY
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
rubygems-update-2.7.2 util/generate_spdx_license_list.rb
rubygems-update-2.7.1 util/generate_spdx_license_list.rb
rubygems-update-2.7.0 util/generate_spdx_license_list.rb
rubygems-update-2.6.14 util/generate_spdx_license_list.rb
rubygems-update-2.6.13 util/generate_spdx_license_list.rb
rubygems-update-2.6.12 util/generate_spdx_license_list.rb
rubygems-update-2.6.11 util/generate_spdx_license_list.rb
rubygems-update-2.6.10 util/generate_spdx_license_list.rb
rubygems-update-2.6.9 util/generate_spdx_license_list.rb
rubygems-update-2.6.8 util/generate_spdx_license_list.rb
rubygems-update-2.6.7 util/generate_spdx_license_list.rb
rubygems-update-2.6.6 util/generate_spdx_license_list.rb
rubygems-update-2.6.5 util/generate_spdx_license_list.rb
rubygems-update-2.6.4 util/generate_spdx_license_list.rb
rubygems-update-2.6.3 util/generate_spdx_license_list.rb
rubygems-update-2.6.2 util/generate_spdx_license_list.rb
rubygems-update-2.6.1 util/generate_spdx_license_list.rb
rubygems-update-2.6.0 util/generate_spdx_license_list.rb
rubygems-update-2.5.2 util/generate_spdx_license_list.rb