Module: Spdx

Defined in:
lib/spdx.rb,
lib/license.rb,
lib/exception.rb,
lib/spdx/version.rb

Overview

Fuzzy matcher for licenses to SPDX standard licenses

Defined Under Namespace

Classes: Exception, License

Constant Summary collapse

VERSION =
"3.0.0"

Class Method Summary collapse

Class Method Details

.exception_exists?(id) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/spdx.rb', line 33

def self.exception_exists?(id)
  exceptions.key?(id.to_s) || exceptions_downcase.key?(id.to_s.downcase)
end

.exceptionsObject



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/spdx.rb', line 16

def self.exceptions
  unless defined?(@exceptions)
    data = JSON.parse(File.read(File.expand_path("../exceptions.json", __dir__)))
    @exceptions = {}

    data["exceptions"].each do |details|
      id = details.delete("licenseExceptionId")
      @exceptions[id] = details
    end
  end
  @exceptions
end

.exceptions_downcaseObject



58
59
60
61
62
63
64
# File 'lib/spdx.rb', line 58

def self.exceptions_downcase
  unless defined?(@exceptions_downcase)
    @exceptions_downcase = {}
    exceptions.keys.each { |key| @exceptions_downcase[key.downcase] = key }
  end
  @exceptions_downcase
end

.license_exists?(id) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/spdx.rb', line 29

def self.license_exists?(id)
  licenses.key?(id.to_s) || licenses_downcase.key?(id.to_s.downcase)
end

.licensesObject



37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/spdx.rb', line 37

def self.licenses
  unless defined?(@licenses)
    data = JSON.parse(File.read(File.expand_path("../licenses.json", __dir__)))
    @licenses = {}

    data["licenses"].each do |details|
      id = details.delete("licenseId")
      @licenses[id] = details
    end
  end
  @licenses
end

.licenses_downcaseObject



50
51
52
53
54
55
56
# File 'lib/spdx.rb', line 50

def self.licenses_downcase
  unless defined?(@licenses_downcase)
    @licenses_downcase = {}
    licenses.keys.each { |key| @licenses_downcase[key.downcase] = key }
  end
  @licenses_downcase
end

.namesObject



12
13
14
# File 'lib/spdx.rb', line 12

def self.names
  (licenses.keys + licenses.map { |_k, v| v["name"] }).sort
end

.parse_spdx(spdx_string) ⇒ Object



75
76
77
# File 'lib/spdx.rb', line 75

def self.parse_spdx(spdx_string)
  SpdxParser.parse(spdx_string)
end

.valid_spdx?(spdx_string) ⇒ Boolean

Returns:

  • (Boolean)


66
67
68
69
70
71
72
73
# File 'lib/spdx.rb', line 66

def self.valid_spdx?(spdx_string)
  return false unless spdx_string.is_a?(String)

  SpdxParser.parse(spdx_string)
  true
rescue SpdxGrammar::SpdxParseError
  false
end