1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = buildMatchFn;
- function buildMatchFn(args) {
- return function (dirtyString, dirtyOptions) {
- var string = String(dirtyString);
- var options = dirtyOptions || {};
- var width = options.width;
- var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];
- var matchResult = string.match(matchPattern);
- if (!matchResult) {
- return null;
- }
- var matchedString = matchResult[0];
- var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];
- var value;
- if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {
- value = findIndex(parsePatterns, function (pattern) {
- return pattern.test(matchedString);
- });
- } else {
- value = findKey(parsePatterns, function (pattern) {
- return pattern.test(matchedString);
- });
- }
- value = args.valueCallback ? args.valueCallback(value) : value;
- value = options.valueCallback ? options.valueCallback(value) : value;
- return {
- value: value,
- rest: string.slice(matchedString.length)
- };
- };
- }
- function findKey(object, predicate) {
- for (var key in object) {
- if (object.hasOwnProperty(key) && predicate(object[key])) {
- return key;
- }
- }
- }
- function findIndex(array, predicate) {
- for (var key = 0; key < array.length; key++) {
- if (predicate(array[key])) {
- return key;
- }
- }
- }
- module.exports = exports.default;
|