UNPKG

spdx-compare

Version:
61 lines (54 loc) 1.66 kB
var arrayFindIndex = require('array-find-index') var parse = require('spdx-expression-parse') var ranges = require('spdx-ranges') var notALicenseIdentifier = ' is not a simple license identifier' var rangeComparison = function (comparison) { return function (first, second) { var firstAST = parse(first) if (!firstAST.hasOwnProperty('license')) { throw new Error('"' + first + '"' + notALicenseIdentifier) } var secondAST = parse(second) if (!secondAST.hasOwnProperty('license')) { throw new Error('"' + second + '"' + notALicenseIdentifier) } return ranges.some(function (range) { var firstLicense = firstAST.license var indexOfFirst = arrayFindIndex(range, function (element) { return ( element === firstLicense || ( Array.isArray(element) && element.indexOf(firstLicense) !== -1 ) ) }) if (indexOfFirst < 0) { return false } var secondLicense = secondAST.license var indexOfSecond = arrayFindIndex(range, function (element) { return ( element === secondLicense || ( Array.isArray(element) && element.indexOf(secondLicense) !== -1 ) ) }) if (indexOfSecond < 0) { return false } return comparison(indexOfFirst, indexOfSecond) }) } } exports.gt = rangeComparison(function (first, second) { return first > second }) exports.lt = rangeComparison(function (first, second) { return first < second }) exports.eq = rangeComparison(function (first, second) { return first === second })