123456789_123456789_123456789_123456789_123456789_

Class: Gem::Licenses

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, Text
Inherits: Object
Defined in: lib/rubygems/util/licenses.rb

Constant Summary

  • DEPRECATED_EXCEPTION_IDENTIFIERS =
    # File 'lib/rubygems/util/licenses.rb', line 754
    %w[
      Nokia-Qt-exception-1.1
    ].freeze
  • DEPRECATED_EXCEPTION_REGEXP =
    # File 'lib/rubygems/util/licenses.rb', line 778
    /
      \A
      .+?
      \+?
      (?:\s WITH \s #{Regexp.union(DEPRECATED_EXCEPTION_IDENTIFIERS)})
      \Z
    /ox
  • DEPRECATED_LICENSE_IDENTIFIERS =
    # File 'lib/rubygems/util/licenses.rb', line 647
    %w[
      AGPL-1.0
      AGPL-3.0
      BSD-2-Clause-FreeBSD
      BSD-2-Clause-NetBSD
      GFDL-1.1
      GFDL-1.2
      GFDL-1.3
      GPL-1.0
      GPL-1.0+
      GPL-2.0
      GPL-2.0+
      GPL-2.0-with-GCC-exception
      GPL-2.0-with-autoconf-exception
      GPL-2.0-with-bison-exception
      GPL-2.0-with-classpath-exception
      GPL-2.0-with-font-exception
      GPL-3.0
      GPL-3.0+
      GPL-3.0-with-GCC-exception
      GPL-3.0-with-autoconf-exception
      LGPL-2.0
      LGPL-2.0+
      LGPL-2.1
      LGPL-2.1+
      LGPL-3.0
      LGPL-3.0+
      Nunit
      StandardML-NJ
      bzip2-1.0.5
      eCos-2.0
      wxWindows
    ].freeze
  • DEPRECATED_LICENSE_REGEXP =
    # File 'lib/rubygems/util/licenses.rb', line 770
    /
      \A
      #{Regexp.union(DEPRECATED_LICENSE_IDENTIFIERS)}
      \+?
      (?:\s WITH \s .+?)?
      \Z
    /ox
  • EXCEPTION_IDENTIFIERS =

    exception identifiers

    # File 'lib/rubygems/util/licenses.rb', line 682
    %w[
      389-exception
      Asterisk-exception
      Asterisk-linking-protocols-exception
      Autoconf-exception-2.0
      Autoconf-exception-3.0
      Autoconf-exception-generic
      Autoconf-exception-generic-3.0
      Autoconf-exception-macro
      Bison-exception-1.24
      Bison-exception-2.2
      Bootloader-exception
      CLISP-exception-2.0
      Classpath-exception-2.0
      DigiRule-FOSS-exception
      FLTK-exception
      Fawkes-Runtime-exception
      Font-exception-2.0
      GCC-exception-2.0
      GCC-exception-2.0-note
      GCC-exception-3.1
      GNAT-exception
      GNOME-examples-exception
      GNU-compiler-exception
      GPL-3.0-interface-exception
      GPL-3.0-linking-exception
      GPL-3.0-linking-source-exception
      GPL-CC-1.0
      GStreamer-exception-2005
      GStreamer-exception-2008
      Gmsh-exception
      KiCad-libraries-exception
      LGPL-3.0-linking-exception
      LLGPL
      LLVM-exception
      LZMA-exception
      Libtool-exception
      Linux-syscall-note
      OCCT-exception-1.0
      OCaml-LGPL-linking-exception
      OpenJDK-assembly-exception-1.0
      PCRE2-exception
      PS-or-PDF-font-exception-20170817
      QPL-1.0-INRIA-2004-exception
      Qt-GPL-exception-1.0
      Qt-LGPL-exception-1.1
      Qwt-exception-1.0
      RRDtool-FLOSS-exception-2.0
      SANE-exception
      SHL-2.0
      SHL-2.1
      SWI-exception
      Swift-exception
      Texinfo-exception
      UBDL-exception
      Universal-FOSS-exception-1.0
      WxWindows-exception-3.1
      cryptsetup-OpenSSL-exception
      eCos-exception-2.0
      fmt-exception
      freertos-exception-2.0
      gnu-javamail-exception
      i2p-gpl-java-exception
      libpri-OpenH323-exception
      mif-exception
      openvpn-openssl-exception
      stunnel-exception
      u-boot-exception-2.0
      vsftpd-openssl-exception
      x11vnc-openssl-exception
    ].freeze
  • LICENSE_IDENTIFIERS =

    Software Package Data Exchange (SPDX) standard open-source software license identifiers

    # File 'lib/rubygems/util/licenses.rb', line 16
    %w[
      0BSD
      3D-Slicer-1.0
      AAL
      ADSL
      AFL-1.1
      AFL-1.2
      AFL-2.0
      AFL-2.1
      AFL-3.0
      AGPL-1.0-only
      AGPL-1.0-or-later
      AGPL-3.0-only
      AGPL-3.0-or-later
      AMD-newlib
      AMDPLPA
      AML
      AML-glslang
      AMPAS
      ANTLR-PD
      ANTLR-PD-fallback
      APAFML
      APL-1.0
      APSL-1.0
      APSL-1.1
      APSL-1.2
      APSL-2.0
      ASWF-Digital-Assets-1.0
      ASWF-Digital-Assets-1.1
      Abstyles
      AdaCore-doc
      Adobe-2006
      Adobe-Display-PostScript
      Adobe-Glyph
      Adobe-Utopia
      Afmparse
      Aladdin
      Apache-1.0
      Apache-1.1
      Apache-2.0
      App-s2p
      Arphic-1999
      Artistic-1.0
      Artistic-1.0-Perl
      Artistic-1.0-cl8
      Artistic-2.0
      BSD-1-Clause
      BSD-2-Clause
      BSD-2-Clause-Darwin
      BSD-2-Clause-Patent
      BSD-2-Clause-Views
      BSD-2-Clause-first-lines
      BSD-3-Clause
      BSD-3-Clause-Attribution
      BSD-3-Clause-Clear
      BSD-3-Clause-HP
      BSD-3-Clause-LBNL
      BSD-3-Clause-Modification
      BSD-3-Clause-No-Military-License
      BSD-3-Clause-No-Nuclear-License
      BSD-3-Clause-No-Nuclear-License-2014
      BSD-3-Clause-No-Nuclear-Warranty
      BSD-3-Clause-Open-MPI
      BSD-3-Clause-Sun
      BSD-3-Clause-acpica
      BSD-3-Clause-flex
      BSD-4-Clause
      BSD-4-Clause-Shortened
      BSD-4-Clause-UC
      BSD-4.3RENO
      BSD-4.3TAHOE
      BSD-Advertising-Acknowledgement
      BSD-Attribution-HPND-disclaimer
      BSD-Inferno-Nettverk
      BSD-Protection
      BSD-Source-Code
      BSD-Source-beginning-file
      BSD-Systemics
      BSD-Systemics-W3Works
      BSL-1.0
      BUSL-1.1
      Baekmuk
      Bahyph
      Barr
      Beerware
      BitTorrent-1.0
      BitTorrent-1.1
      Bitstream-Charter
      Bitstream-Vera
      BlueOak-1.0.0
      Boehm-GC
      Borceux
      Brian-Gladman-2-Clause
      Brian-Gladman-3-Clause
      C-UDA-1.0
      CAL-1.0
      CAL-1.0-Combined-Work-Exception
      CATOSL-1.1
      CC-BY-1.0
      CC-BY-2.0
      CC-BY-2.5
      CC-BY-2.5-AU
      CC-BY-3.0
      CC-BY-3.0-AT
      CC-BY-3.0-AU
      CC-BY-3.0-DE
      CC-BY-3.0-IGO
      CC-BY-3.0-NL
      CC-BY-3.0-US
      CC-BY-4.0
      CC-BY-NC-1.0
      CC-BY-NC-2.0
      CC-BY-NC-2.5
      CC-BY-NC-3.0
      CC-BY-NC-3.0-DE
      CC-BY-NC-4.0
      CC-BY-NC-ND-1.0
      CC-BY-NC-ND-2.0
      CC-BY-NC-ND-2.5
      CC-BY-NC-ND-3.0
      CC-BY-NC-ND-3.0-DE
      CC-BY-NC-ND-3.0-IGO
      CC-BY-NC-ND-4.0
      CC-BY-NC-SA-1.0
      CC-BY-NC-SA-2.0
      CC-BY-NC-SA-2.0-DE
      CC-BY-NC-SA-2.0-FR
      CC-BY-NC-SA-2.0-UK
      CC-BY-NC-SA-2.5
      CC-BY-NC-SA-3.0
      CC-BY-NC-SA-3.0-DE
      CC-BY-NC-SA-3.0-IGO
      CC-BY-NC-SA-4.0
      CC-BY-ND-1.0
      CC-BY-ND-2.0
      CC-BY-ND-2.5
      CC-BY-ND-3.0
      CC-BY-ND-3.0-DE
      CC-BY-ND-4.0
      CC-BY-SA-1.0
      CC-BY-SA-2.0
      CC-BY-SA-2.0-UK
      CC-BY-SA-2.1-JP
      CC-BY-SA-2.5
      CC-BY-SA-3.0
      CC-BY-SA-3.0-AT
      CC-BY-SA-3.0-DE
      CC-BY-SA-3.0-IGO
      CC-BY-SA-4.0
      CC-PDDC
      CC0-1.0
      CDDL-1.0
      CDDL-1.1
      CDL-1.0
      CDLA-Permissive-1.0
      CDLA-Permissive-2.0
      CDLA-Sharing-1.0
      CECILL-1.0
      CECILL-1.1
      CECILL-2.0
      CECILL-2.1
      CECILL-B
      CECILL-C
      CERN-OHL-1.1
      CERN-OHL-1.2
      CERN-OHL-P-2.0
      CERN-OHL-S-2.0
      CERN-OHL-W-2.0
      CFITSIO
      CMU-Mach
      CMU-Mach-nodoc
      CNRI-Jython
      CNRI-Python
      CNRI-Python-GPL-Compatible
      COIL-1.0
      CPAL-1.0
      CPL-1.0
      CPOL-1.02
      CUA-OPL-1.0
      Caldera
      Caldera-no-preamble
      Catharon
      ClArtistic
      Clips
      Community-Spec-1.0
      Condor-1.1
      Cornell-Lossless-JPEG
      Cronyx
      Crossword
      CrystalStacker
      Cube
      D-FSL-1.0
      DEC-3-Clause
      DL-DE-BY-2.0
      DL-DE-ZERO-2.0
      DOC
      DRL-1.0
      DRL-1.1
      DSDP
      Dotseqn
      ECL-1.0
      ECL-2.0
      EFL-1.0
      EFL-2.0
      EPICS
      EPL-1.0
      EPL-2.0
      EUDatagrid
      EUPL-1.0
      EUPL-1.1
      EUPL-1.2
      Elastic-2.0
      Entessa
      ErlPL-1.1
      Eurosym
      FBM
      FDK-AAC
      FSFAP
      FSFAP-no-warranty-disclaimer
      FSFUL
      FSFULLR
      FSFULLRWD
      FTL
      Fair
      Ferguson-Twofish
      Frameworx-1.0
      FreeBSD-DOC
      FreeImage
      Furuseth
      GCR-docs
      GD
      GFDL-1.1-invariants-only
      GFDL-1.1-invariants-or-later
      GFDL-1.1-no-invariants-only
      GFDL-1.1-no-invariants-or-later
      GFDL-1.1-only
      GFDL-1.1-or-later
      GFDL-1.2-invariants-only
      GFDL-1.2-invariants-or-later
      GFDL-1.2-no-invariants-only
      GFDL-1.2-no-invariants-or-later
      GFDL-1.2-only
      GFDL-1.2-or-later
      GFDL-1.3-invariants-only
      GFDL-1.3-invariants-or-later
      GFDL-1.3-no-invariants-only
      GFDL-1.3-no-invariants-or-later
      GFDL-1.3-only
      GFDL-1.3-or-later
      GL2PS
      GLWTPL
      GPL-1.0-only
      GPL-1.0-or-later
      GPL-2.0-only
      GPL-2.0-or-later
      GPL-3.0-only
      GPL-3.0-or-later
      Giftware
      Glide
      Glulxe
      Graphics-Gems
      Gutmann
      HP-1986
      HP-1989
      HPND
      HPND-DEC
      HPND-Fenneberg-Livingston
      HPND-INRIA-IMAG
      HPND-Intel
      HPND-Kevlin-Henney
      HPND-MIT-disclaimer
      HPND-Markus-Kuhn
      HPND-Pbmplus
      HPND-UC
      HPND-UC-export-US
      HPND-doc
      HPND-doc-sell
      HPND-export-US
      HPND-export-US-acknowledgement
      HPND-export-US-modify
      HPND-export2-US
      HPND-merchantability-variant
      HPND-sell-MIT-disclaimer-xserver
      HPND-sell-regexpr
      HPND-sell-variant
      HPND-sell-variant-MIT-disclaimer
      HPND-sell-variant-MIT-disclaimer-rev
      HTMLTIDY
      HaskellReport
      Hippocratic-2.1
      IBM-pibs
      ICU
      IEC-Code-Components-EULA
      IJG
      IJG-short
      IPA
      IPL-1.0
      ISC
      ISC-Veillard
      ImageMagick
      Imlib2
      Info-ZIP
      Inner-Net-2.0
      Intel
      Intel-ACPI
      Interbase-1.0
      JPL-image
      JPNIC
      JSON
      Jam
      JasPer-2.0
      Kastrup
      Kazlib
      Knuth-CTAN
      LAL-1.2
      LAL-1.3
      LGPL-2.0-only
      LGPL-2.0-or-later
      LGPL-2.1-only
      LGPL-2.1-or-later
      LGPL-3.0-only
      LGPL-3.0-or-later
      LGPLLR
      LOOP
      LPD-document
      LPL-1.0
      LPL-1.02
      LPPL-1.0
      LPPL-1.1
      LPPL-1.2
      LPPL-1.3a
      LPPL-1.3c
      LZMA-SDK-9.11-to-9.20
      LZMA-SDK-9.22
      Latex2e
      Latex2e-translated-notice
      Leptonica
      LiLiQ-P-1.1
      LiLiQ-R-1.1
      LiLiQ-Rplus-1.1
      Libpng
      Linux-OpenIB
      Linux-man-pages-1-para
      Linux-man-pages-copyleft
      Linux-man-pages-copyleft-2-para
      Linux-man-pages-copyleft-var
      Lucida-Bitmap-Fonts
      MIT
      MIT-0
      MIT-CMU
      MIT-Festival
      MIT-Khronos-old
      MIT-Modern-Variant
      MIT-Wu
      MIT-advertising
      MIT-enna
      MIT-feh
      MIT-open-group
      MIT-testregex
      MITNFA
      MMIXware
      MPEG-SSG
      MPL-1.0
      MPL-1.1
      MPL-2.0
      MPL-2.0-no-copyleft-exception
      MS-LPL
      MS-PL
      MS-RL
      MTLL
      Mackerras-3-Clause
      Mackerras-3-Clause-acknowledgment
      MakeIndex
      Martin-Birgmeier
      McPhee-slideshow
      Minpack
      MirOS
      Motosoto
      MulanPSL-1.0
      MulanPSL-2.0
      Multics
      Mup
      NAIST-2003
      NASA-1.3
      NBPL-1.0
      NCBI-PD
      NCGL-UK-2.0
      NCL
      NCSA
      NGPL
      NICTA-1.0
      NIST-PD
      NIST-PD-fallback
      NIST-Software
      NLOD-1.0
      NLOD-2.0
      NLPL
      NOSL
      NPL-1.0
      NPL-1.1
      NPOSL-3.0
      NRL
      NTP
      NTP-0
      Naumen
      Net-SNMP
      NetCDF
      Newsletr
      Nokia
      Noweb
      O-UDA-1.0
      OAR
      OCCT-PL
      OCLC-2.0
      ODC-By-1.0
      ODbL-1.0
      OFFIS
      OFL-1.0
      OFL-1.0-RFN
      OFL-1.0-no-RFN
      OFL-1.1
      OFL-1.1-RFN
      OFL-1.1-no-RFN
      OGC-1.0
      OGDL-Taiwan-1.0
      OGL-Canada-2.0
      OGL-UK-1.0
      OGL-UK-2.0
      OGL-UK-3.0
      OGTSL
      OLDAP-1.1
      OLDAP-1.2
      OLDAP-1.3
      OLDAP-1.4
      OLDAP-2.0
      OLDAP-2.0.1
      OLDAP-2.1
      OLDAP-2.2
      OLDAP-2.2.1
      OLDAP-2.2.2
      OLDAP-2.3
      OLDAP-2.4
      OLDAP-2.5
      OLDAP-2.6
      OLDAP-2.7
      OLDAP-2.8
      OLFL-1.3
      OML
      OPL-1.0
      OPL-UK-3.0
      OPUBL-1.0
      OSET-PL-2.1
      OSL-1.0
      OSL-1.1
      OSL-2.0
      OSL-2.1
      OSL-3.0
      OpenPBS-2.3
      OpenSSL
      OpenSSL-standalone
      OpenVision
      PADL
      PDDL-1.0
      PHP-3.0
      PHP-3.01
      PPL
      PSF-2.0
      Parity-6.0.0
      Parity-7.0.0
      Pixar
      Plexus
      PolyForm-Noncommercial-1.0.0
      PolyForm-Small-Business-1.0.0
      PostgreSQL
      Python-2.0
      Python-2.0.1
      QPL-1.0
      QPL-1.0-INRIA-2004
      Qhull
      RHeCos-1.1
      RPL-1.1
      RPL-1.5
      RPSL-1.0
      RSA-MD
      RSCPL
      Rdisc
      Ruby
      SAX-PD
      SAX-PD-2.0
      SCEA
      SGI-B-1.0
      SGI-B-1.1
      SGI-B-2.0
      SGI-OpenGL
      SGP4
      SHL-0.5
      SHL-0.51
      SISSL
      SISSL-1.2
      SL
      SMLNJ
      SMPPL
      SNIA
      SPL-1.0
      SSH-OpenSSH
      SSH-short
      SSLeay-standalone
      SSPL-1.0
      SWL
      Saxpath
      SchemeReport
      Sendmail
      Sendmail-8.23
      SimPL-2.0
      Sleepycat
      Soundex
      Spencer-86
      Spencer-94
      Spencer-99
      SugarCRM-1.1.3
      Sun-PPP
      Sun-PPP-2000
      SunPro
      Symlinks
      TAPR-OHL-1.0
      TCL
      TCP-wrappers
      TGPPL-1.0
      TMate
      TORQUE-1.1
      TOSL
      TPDL
      TPL-1.0
      TTWL
      TTYP0
      TU-Berlin-1.0
      TU-Berlin-2.0
      TermReadKey
      UCAR
      UCL-1.0
      UMich-Merit
      UPL-1.0
      URT-RLE
      Unicode-3.0
      Unicode-DFS-2015
      Unicode-DFS-2016
      Unicode-TOU
      UnixCrypt
      Unlicense
      VOSTROM
      VSL-1.0
      Vim
      W3C
      W3C-19980720
      W3C-20150513
      WTFPL
      Watcom-1.0
      Widget-Workshop
      Wsuipa
      X11
      X11-distribute-modifications-variant
      XFree86-1.1
      XSkat
      Xdebug-1.03
      Xerox
      Xfig
      Xnet
      YPL-1.0
      YPL-1.1
      ZPL-1.1
      ZPL-2.0
      ZPL-2.1
      Zed
      Zeeff
      Zend-2.0
      Zimbra-1.3
      Zimbra-1.4
      Zlib
      any-OSI
      bcrypt-Solar-Designer
      blessing
      bzip2-1.0.6
      check-cvs
      checkmk
      copyleft-next-0.3.0
      copyleft-next-0.3.1
      curl
      cve-tou
      diffmark
      dtoa
      dvipdfm
      eGenix
      etalab-2.0
      fwlw
      gSOAP-1.3b
      gnuplot
      gtkbook
      hdparm
      iMatix
      libpng-2.0
      libselinux-1.0
      libtiff
      libutil-David-Nugent
      lsof
      magaz
      mailprio
      metamail
      mpi-permissive
      mpich2
      mplus
      pkgconf
      pnmstitch
      psfrag
      psutils
      python-ldap
      radvd
      snprintf
      softSurfer
      ssh-keyscan
      swrule
      threeparttable
      ulem
      w3m
      xinetd
      xkeyboard-config-Zinoviev
      xlock
      xpp
      xzoom
      zlib-acknowledgement
    ].freeze
  • LICENSE_REF =
    # File 'lib/rubygems/util/licenses.rb', line 12
    "LicenseRef-.+"
  • NONSTANDARD =
    # File 'lib/rubygems/util/licenses.rb', line 11
    "Nonstandard"
  • VALID_REGEXP =
    # File 'lib/rubygems/util/licenses.rb', line 758
    /
      \A
      (?:
        #{Regexp.union(LICENSE_IDENTIFIERS)}
        \+?
        (?:\s WITH \s #{Regexp.union(EXCEPTION_IDENTIFIERS)})?
        | #{NONSTANDARD}
        | #{LICENSE_REF}
      )
      \Z
    /ox

Class Method Summary

Text - Extended

clean_text

Remove any non-printable characters and make the text suitable for printing.

format_text

Wraps text to wrap characters and optionally indents by indent characters.

levenshtein_distance

Returns a value representing the “cost” of transforming str1 into str2 Vendored version of DidYouMean::Levenshtein.distance from the ruby/did_you_mean gem @ 1.4.0 github.com/ruby/did_you_mean/blob/2ddf39b874808685965dbc47d344cf6c7651807c/lib/did_you_mean/levenshtein.rb#L7-L37.

truncate_text, min3

Class Method Details

.deprecated_exception_id?(license) ⇒ Boolean

[ GitHub ]

  
# File 'lib/rubygems/util/licenses.rb', line 794

def self.deprecated_exception_id?(license)
  DEPRECATED_EXCEPTION_REGEXP.match?(license)
end

.deprecated_license_id?(license) ⇒ Boolean

[ GitHub ]

  
# File 'lib/rubygems/util/licenses.rb', line 790

def self.deprecated_license_id?(license)
  DEPRECATED_LICENSE_REGEXP.match?(license)
end

.match?(license) ⇒ Boolean

[ GitHub ]

  
# File 'lib/rubygems/util/licenses.rb', line 786

def self.match?(license)
  VALID_REGEXP.match?(license)
end

.suggestions(license)

[ GitHub ]

  
# File 'lib/rubygems/util/licenses.rb', line 798

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