Sha256: 87af51fa5d47423e1871227738533113fbe89dfe4120e9ae6c761cb92783bc2f

Contents?: true

Size: 1 KB

Versions: 10

Compression:

Stored size: 1 KB

Contents

/**
 * The MIT License (MIT)
 * Copyright (c) 2017-present Dmitry Soshnikov <dmitry.soshnikov@gmail.com>
 */

'use strict';

var NodePath = require('../../traverse/node-path');

var _require = require('../../transform/utils'),
    disjunctionToList = _require.disjunctionToList,
    listToDisjunction = _require.listToDisjunction;

/**
 * Removes duplicates from a disjunction sequence:
 *
 * /(ab|bc|ab)+(xy|xy)+/ -> /(ab|bc)+(xy)+/
 */


module.exports = {
  Disjunction: function Disjunction(path) {
    var node = path.node;

    // Make unique nodes.

    var uniqueNodesMap = {};

    var parts = disjunctionToList(node).filter(function (part) {
      var encoded = part ? NodePath.getForNode(part).jsonEncode() : 'null';

      // Already recorded this part, filter out.
      if (uniqueNodesMap.hasOwnProperty(encoded)) {
        return false;
      }

      uniqueNodesMap[encoded] = part;
      return true;
    });

    // Replace with the optimized disjunction.
    path.replace(listToDisjunction(parts));
  }
};

Version data entries

10 entries across 10 versions & 3 rubygems

Version Path
condenser-0.0.8 lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js
jester-data-8.0.0 node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js
ezii-os-5.2.1 node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js
ezii-os-2.0.1 node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js
ezii-os-1.1.0 node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js
ezii-os-1.0.0 node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js
condenser-0.0.7 lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js
ezii-os-0.0.0.1.0 node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js
ezii-os-0.0.0.0.1 node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js
condenser-0.0.5 lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js