38 lines
742 B
JavaScript
38 lines
742 B
JavaScript
const constants = require('./constants')
|
|
|
|
const symbols = {
|
|
[constants.EQ]: '=',
|
|
[constants.LT]: '<',
|
|
[constants.LTE]: '<=',
|
|
[constants.GT]: '>',
|
|
[constants.GTE]: '>='
|
|
}
|
|
|
|
module.exports = class Comparator {
|
|
constructor(operator, version) {
|
|
this.operator = operator
|
|
this.version = version
|
|
}
|
|
|
|
test(version) {
|
|
const result = version.compare(this.version)
|
|
|
|
switch (this.operator) {
|
|
case constants.LT:
|
|
return result < 0
|
|
case constants.LTE:
|
|
return result <= 0
|
|
case constants.GT:
|
|
return result > 0
|
|
case constants.GTE:
|
|
return result >= 0
|
|
default:
|
|
return result === 0
|
|
}
|
|
}
|
|
|
|
toString() {
|
|
return symbols[this.operator] + this.version
|
|
}
|
|
}
|