UNPKG

react-carousel-query

Version:

A infinite carousel component made with react that handles the pagination for you.

62 lines (45 loc) 1.71 kB
"use strict"; require("core-js/modules/es.array.concat"); require("core-js/modules/es.regexp.exec"); require("core-js/modules/es.string.match"); var SemVer = require('../classes/semver'); var parse = require('./parse'); var _require = require('../internal/re'), re = _require.re, t = _require.t; var coerce = function coerce(version, options) { if (version instanceof SemVer) { return version; } if (typeof version === 'number') { version = String(version); } if (typeof version !== 'string') { return null; } options = options || {}; var match = null; if (!options.rtl) { match = version.match(re[t.COERCE]); } else { // Find the right-most coercible string that does not share // a terminus with a more left-ward coercible string. // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' // // Walk through the string checking with a /g regexp // Manually set the index so as to pick up overlapping matches. // Stop when we get a match that ends at the string end, since no // coercible string can be more right-ward without the same terminus. var next; while ((next = re[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) { if (!match || next.index + next[0].length !== match.index + match[0].length) { match = next; } re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length; } // leave it in a clean state re[t.COERCERTL].lastIndex = -1; } if (match === null) return null; return parse("".concat(match[2], ".").concat(match[3] || '0', ".").concat(match[4] || '0'), options); }; module.exports = coerce;