|  | 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 | 
|  | }) |