lib/spdx.rb in spdx-1.2.8 vs lib/spdx.rb in spdx-1.3.0

- old
+ new

@@ -41,96 +41,65 @@ match = SpdxLicenses.data.find{|k,v| v['name'] == name } lookup(match[0]) if match end def self.find_by_special_case(name) + gpl = gpl_match(name) + return gpl if gpl lookup(special_cases[name.downcase.strip]) end + def self.gpl_match(name) + match = name.match(/^(l|a)?gpl-?\s?_?v?(1|2|3)\.?(\d)?(\+)?$/i) + return unless match + lookup "#{match[1]}GPL-#{match[2]}.#{match[3] || 0}#{match[4]}" + end + def self.special_cases { 'perl_5' => 'Artistic-1.0-Perl', 'bsd3' => 'BSD-3-Clause', 'bsd' => 'BSD-3-Clause', 'new bsd license' => 'BSD-3-Clause', - 'gplv3' => 'GPL-3.0', - 'gplv2' => 'GPL-2.0', - 'gpl3' => 'GPL-3.0', - 'gpl2' => 'GPL-2.0', - 'gpl 3' => 'GPL-3.0', - 'gpl_1' => 'GPL-1.0', - 'gpl_2' => 'GPL-2.0', - 'gpl_3' => 'GPL-3.0', - 'gpl 2' => 'GPL-2.0', - 'gpl v3' => 'GPL-3.0', - 'gpl v2' => 'GPL-2.0', - 'gpl 3.0' => 'GPL-3.0', - 'gpl 2.0' => 'GPL-2.0', - 'gpl-3' => 'GPL-3.0', - 'gpl-2' => 'GPL-2.0', - 'gpl30' => 'GPL-3.0', - 'gpl20' => 'GPL-2.0', - 'gpl v3+' => 'GPL-3.0+', - 'gpl v2+' => 'GPL-2.0+', - 'gplv2+' => 'GPL-2.0+', 'gpl' => 'GPL-2.0+', + 'gpl-2 | gpl-3 [expanded from: gpl (≥ 2.0)]' => 'GPL-2.0+', + 'gpl-2 | gpl-3 [expanded from: gpl]' => 'GPL-2.0+', + 'gpl-2 | gpl-3 [expanded from: gpl (≥ 2)]' => 'GPL-2.0+', + 'gpl-2 | gpl-3' => 'GPL-2.0+', + 'gplv2 or later' => 'GPL-2.0+', + 'the gpl v3' => 'GPL-3.0', 'gpl (≥ 3)' => 'GPL-3.0+', 'mpl2.0' => 'mpl-2.0', 'mpl1' => 'mpl-1.0', 'mpl1.0' => 'mpl-1.0', 'mpl1.1' => 'mpl-1.1', 'mpl2' => 'mpl-2.0', - 'gpl-2 | gpl-3 [expanded from: gpl (≥ 2)]' => 'GPL-2.0+', - 'gpl-2 | gpl-3 [expanded from: gpl (≥ 2.0)]' => 'GPL-2.0+', - 'gpl-2 | gpl-3 [expanded from: gpl]' => 'GPL-2.0+', - 'gpl-2 | gpl-3' => 'GPL-2.0+', "gnu lesser general public license" => 'LGPL-2.1+', 'lgplv2 or later' => 'LGPL-2.1+', - 'gplv2 or later' => 'GPL-2.0+', 'gpl2 w/ cpe' => 'GPL-2.0-with-classpath-exception', 'new bsd license (gpl-compatible)' => 'BSD-3-Clause', - 'the gpl v3' => 'GPL-3.0', 'public domain' => 'Unlicense', 'cc0' => 'CC0-1.0', - 'lgpl v3' => 'LGPL-3.0', 'artistic_2' => 'Artistic-2.0', 'artistic_1' => 'Artistic-1.0', - 'lgpl 2.1' => 'LGPL-2.1', - 'lgpl' => 'LGPL-3.0', - 'lgplv2.1+' => 'LGPL-2.1+', - 'lgplv3' => 'LGPL-3.0', - 'gplv3+' => 'GPL-3.0+', 'alv2' => 'Apache-2.0', 'asl 2.0' => 'Apache-2.0', 'mpl 2.0' => 'MPL-2.0', - 'agplv3' => 'AGPL-3.0', 'publicdomain' => 'Unlicense', 'unlicensed' => 'Unlicense', - 'lgpl-3' => 'LGPL-3.0', 'psfl' => 'Python-2.0', 'psf' => 'Python-2.0', 'asl2' => 'Apache-2.0', 'al2' => 'Apache-2.0', 'aslv2' => 'Apache-2.0', 'apache_2_0' => 'Apache-2.0', 'apache_v2' => 'Apache-2.0', 'ZPL 1.1' => 'ZPL-1.1', 'ZPL 2.0' => 'ZPL-2.0', 'ZPL 2.1' => 'ZPL-2.1', - 'lgplv2' => 'LGPL-2.0', - 'lgplv2+' => 'LGPL-2.0+', - 'lgplv2.1' => 'LGPL-2.1', 'lgpl_2_1' => 'LGPL-2.1', 'lgpl_v2_1' => 'LGPL-2.1', - 'lgpl v2.1+' => 'LGPL-2.1+', - 'lgplv3+' => 'LGPL-3.0+', - 'lgpl 3.0' => 'LGPL-3.0', - 'lgpl 3' => 'LGPL-3.0', - 'lgpl3' => 'LGPL-3.0', 'lgpl version 3' => 'LGPL-3.0', - 'agpl3' => 'AGPL-3.0', - 'agpl-3' => 'AGPL-3.0', - 'agpl3+' => 'AGPL-3.0+', 'cc by-sa 4.0' => 'CC-BY-SA-4.0', 'cc by-nc-sa 3.0' => 'CC-BY-NC-SA-3.0', 'cc by-sa 3.0' => 'CC-BY-SA-3.0', 'mpl v2.0' => 'MPL-2.0', 'mplv2.0' => 'MPL-2.0',