Sha256: 8da3309be11b61e082df06f097834dd50b08b4fc78d867b495e682f1f86b10b4

Contents?: true

Size: 1.34 KB

Versions: 20

Compression:

Stored size: 1.34 KB

Contents

module Licensee
  module Matchers
    class Cran < Licensee::Matchers::Package
      attr_reader :file

      # While we could parse the DESCRIPTION file, prefer
      # a lenient regex for speed and security. Moar parsing moar problems.
      LICENSE_FIELD_REGEX = /^license:\s*(.+)/i
      PLUS_FILE_LICENSE_REGEX = /\s*\+\s*file\s+LICENSE$/i
      GPL_VERSION_REGEX = /^GPL(?:-([23])|\s*\(\s*>=\s*([23])\s*\))$/i

      private

      # Returns the raw license string from the `license: ` field
      # or `nil` if no license field is found
      def license_field
        return @license_field if defined? @license_field
        match = @file.content.match LICENSE_FIELD_REGEX
        @license_field = match ? match[1].downcase : nil
      end

      # returns the normalized GPL version, if the license is a GPL license
      # Otherwise, returns `nil`
      def gpl_version(license_key)
        match = license_key.match GPL_VERSION_REGEX
        match ? "gpl-#{(match[1] || match[2])}.0" : nil
      end

      # Normalizes the license field value to an SPDX ID
      # Rerurns `nil` if no license is found
      def license_property
        return unless license_field
        # Remove The common + file LICENSE text
        license_key = license_field.sub(PLUS_FILE_LICENSE_REGEX, '')
        gpl_version(license_key) || license_key
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
licensee-9.10.0 lib/licensee/matchers/cran.rb
licensee-9.9.4 lib/licensee/matchers/cran.rb
licensee-9.9.3 lib/licensee/matchers/cran.rb
licensee-9.9.2 lib/licensee/matchers/cran.rb
licensee-9.9.1 lib/licensee/matchers/cran.rb
licensee-9.9.0 lib/licensee/matchers/cran.rb
licensee-9.9.0.beta.3 lib/licensee/matchers/cran.rb
licensee-9.9.0.beta.2 lib/licensee/matchers/cran.rb
licensee-9.8.0 lib/licensee/matchers/cran.rb
licensee-9.7.0 lib/licensee/matchers/cran.rb
licensee-9.6.0 lib/licensee/matchers/cran.rb
licensee-9.5.0 lib/licensee/matchers/cran.rb
licensee-9.4.0 lib/licensee/matchers/cran.rb
licensee-9.3.1 lib/licensee/matchers/cran.rb
licensee-9.3.0 lib/licensee/matchers/cran.rb
licensee-9.2.1 lib/licensee/matchers/cran.rb
licensee-9.2.0 lib/licensee/matchers/cran.rb
licensee-9.1.0 lib/licensee/matchers/cran.rb
licensee-9.0.0 lib/licensee/matchers/cran.rb
licensee-9.0.0.beta.1 lib/licensee/matchers/cran.rb