1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 'use strict';
- var compatTransforms = require('./transforms');
- var _transform = require('../transform');
- module.exports = {
-
- 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;
-
- 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();
-
- if (typeof handler.getExtra === 'function') {
- extra[transformName] = handler.getExtra();
- }
- });
-
- result.setExtra(extra);
- return result;
- }
- };
|