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