index.js 669 B

1234567891011121314151617
  1. export default function buildMatchPatternFn(args) {
  2. return function (string) {
  3. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  4. var matchResult = string.match(args.matchPattern);
  5. if (!matchResult) return null;
  6. var matchedString = matchResult[0];
  7. var parseResult = string.match(args.parsePattern);
  8. if (!parseResult) return null;
  9. var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];
  10. value = options.valueCallback ? options.valueCallback(value) : value;
  11. var rest = string.slice(matchedString.length);
  12. return {
  13. value: value,
  14. rest: rest
  15. };
  16. };
  17. }