function concatNodes(pos, node, parent, options) {
  node.orig = node.val;
  var prev = this.prev();
  var last = utils.last(prev.nodes);
  var isEscaped = false;

  if (node.val.length > 1) {
    var a = node.val.charAt(0);
    var b = node.val.slice(-1);

    isEscaped = (a === '"' && b === '"')
      || (a === "'" && b === "'")
      || (a === '`' && b === '`');
  }

  if (isEscaped && options.unescape !== false) {
    node.val = node.val.slice(1, node.val.length - 1);
    node.escaped = true;
  }

  if (node.match) {
    var match = node.match[1];
    if (!match || match.indexOf('}') === -1) {
      match = node.match[0];
    }

    // replace each set with a single ","
    var val = match.replace(/\{/g, ',').replace(/\}/g, '');
    node.multiplier *= val.length;
    node.val = '';
  }

  var simpleText = last.type === 'text'
    && last.multiplier === 1
    && node.multiplier === 1
    && node.val;

  if (simpleText) {
    last.val += node.val;
    return;
  }

  prev.push(node);
}
function concatNodes(pos, node, parent, options) {
  node.orig = node.val;
  var prev = this.prev();
  var last = utils.last(prev.nodes);
  var isEscaped = false;

  if (node.val.length > 1) {
    var a = node.val.charAt(0);
    var b = node.val.slice(-1);

    isEscaped = (a === '"' && b === '"')
      || (a === "'" && b === "'")
      || (a === '`' && b === '`');
  }

  if (isEscaped && options.unescape !== false) {
    node.val = node.val.slice(1, node.val.length - 1);
    node.escaped = true;
  }

  if (node.match) {
    var match = node.match[1];
    if (!match || match.indexOf('}') === -1) {
      match = node.match[0];
    }

    
    var val = match.replace(/\{/g, ',').replace(/\}/g, '');
    node.multiplier *= val.length;
    node.val = '';
  }

  var simpleText = last.type === 'text'
    && last.multiplier === 1
    && node.multiplier === 1
    && node.val;

  if (simpleText) {
    last.val += node.val;
    return;
  }

  prev.push(node);
}
function concatNodes ( pos , node , parent , options ) { node . orig = node . val ; var prev = this . prev ( ) ; var last = utils . last ( prev . nodes ) ; var isEscaped = false ; if ( node . val . length > 1 ) { var a = node . val . charAt ( 0 ) ; var b = node . val . slice ( - 1 ) ; isEscaped = ( a === '"' && b === '"' ) || ( a === "'" && b === "'" ) || ( a === '`' && b === '`' ) ; } if ( isEscaped && options . unescape !== false ) { node . val = node . val . slice ( 1 , node . val . length - 1 ) ; node . escaped = true ; } if ( node . match ) { var match = node . match [ 1 ] ; if ( ! match || match . indexOf ( '}' ) === - 1 ) { match = node . match [ 0 ] ; } // replace each set with a single "," var val = match . replace ( / \{ / g , ',' ) . replace ( / \} / g , '' ) ; node . multiplier *= val . length ; node . val = '' ; } var simpleText = last . type === 'text' && last . multiplier === 1 && node . multiplier === 1 && node . val ; if ( simpleText ) { last . val += node . val ; return ; } prev . push ( node ) ; }
Combine text nodes, and calculate empty sets (`{,,}`)
@param {Function} `pos` Function to calculate node position
@param {Object} `node` AST node
@return {Object}
Combine text nodes and calculate empty sets ( { } )