1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- /**
- * The MIT License (MIT)
- * Copyright (c) 2017-present Dmitry Soshnikov <dmitry.soshnikov@gmail.com>
- */
- 'use strict';
- var compatTransforms = require('./transforms');
- var _transform = require('../transform');
- module.exports = {
- /**
- * Translates a regexp in new syntax to equivalent regexp in old syntax.
- *
- * @param string|RegExp|AST - regexp
- * @param Array transformsWhitelist - names of the transforms to apply
- */
- transform: function transform(regexp) {
- var transformsWhitelist = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
- var transformToApply = transformsWhitelist.length > 0 ? transformsWhitelist : Object.keys(compatTransforms);
- var result = void 0;
- // Collect extra data per transform.
- var extra = {};
- transformToApply.forEach(function (transformName) {
- if (!compatTransforms.hasOwnProperty(transformName)) {
- throw new Error('Unknown compat-transform: ' + transformName + '. ' + 'Available transforms are: ' + Object.keys(compatTransforms).join(', '));
- }
- var handler = compatTransforms[transformName];
- result = _transform.transform(regexp, handler);
- regexp = result.getAST();
- // Collect `extra` transform result.
- if (typeof handler.getExtra === 'function') {
- extra[transformName] = handler.getExtra();
- }
- });
- // Set the final extras for all transforms.
- result.setExtra(extra);
- return result;
- }
- };
|