var recast = require('recast'); var rewritePattern = require('./rewrite-pattern.js'); var types = recast.types;

var visitor = types.PathVisitor.fromMethodsObject({

// This method is called for any AST node whose `type` is `Literal`.
'visitLiteral': function(path) {
        var node = path.value;

        if (!node.regex) {
                return false;
        }

        var flags = node.regex.flags;
        if (flags.indexOf('u') == -1) {
                return false;
        }

        var newPattern = rewritePattern(node.regex.pattern, flags);
        var newFlags = flags.replace('u', '');
        var result = '/' + newPattern + '/' + newFlags;
        node.regex = {
                'pattern': newPattern,
                'flags': newFlags
        }
        node.raw = result;
        node.value = {
                'toString': function() {
                        return result;
                }
        };

        // Return `false` to indicate that the traversal need not continue any
        // further down this subtree. (`Literal`s don’t have descendants anyway.)
        return false;
}

});

module.exports = function(node) {

return types.visit(node, visitor);

};