You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.4 KiB
52 lines
1.4 KiB
"use strict"; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
exports.getLimit = exports.isFilter = exports.filterNames = void 0; |
|
exports.filterNames = new Set([ |
|
"first", |
|
"last", |
|
"eq", |
|
"gt", |
|
"nth", |
|
"lt", |
|
"even", |
|
"odd", |
|
]); |
|
function isFilter(s) { |
|
if (s.type !== "pseudo") |
|
return false; |
|
if (exports.filterNames.has(s.name)) |
|
return true; |
|
if (s.name === "not" && Array.isArray(s.data)) { |
|
// Only consider `:not` with embedded filters |
|
return s.data.some(function (s) { return s.some(isFilter); }); |
|
} |
|
return false; |
|
} |
|
exports.isFilter = isFilter; |
|
function getLimit(filter, data, partLimit) { |
|
var num = data != null ? parseInt(data, 10) : NaN; |
|
switch (filter) { |
|
case "first": |
|
return 1; |
|
case "nth": |
|
case "eq": |
|
return isFinite(num) ? (num >= 0 ? num + 1 : Infinity) : 0; |
|
case "lt": |
|
return isFinite(num) |
|
? num >= 0 |
|
? Math.min(num, partLimit) |
|
: Infinity |
|
: 0; |
|
case "gt": |
|
return isFinite(num) ? Infinity : 0; |
|
case "odd": |
|
return 2 * partLimit; |
|
case "even": |
|
return 2 * partLimit - 1; |
|
case "last": |
|
case "not": |
|
return Infinity; |
|
} |
|
} |
|
exports.getLimit = getLimit; |
|
//# sourceMappingURL=positionals.js.map
|