plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.js
function(nodeOptions) {
      var ranges = this.getOwnRanges(),
          node, nodes = [];
      if (ranges.length == 0) {
        return nodes;
      }

      for (var i = ranges.length; i--;) {
        node = this.doc.createElement(nodeOptions.nodeName);
        nodes.push(node);
        if (nodeOptions.className) {
          node.className = nodeOptions.className;
        }
        if (nodeOptions.cssStyle) {
          node.setAttribute('style', nodeOptions.cssStyle);
        }
        try {
          // This only works when the range boundaries are not overlapping other elements
          ranges[i].surroundContents(node);
          this.selectNode(node);
        } catch(e) {
          // fallback
          node.appendChild(ranges[i].extractContents());
          ranges[i].insertNode(node);
        }
      }
      return nodes;
    }
function(nodeOptions) {
      var ranges = this.getOwnRanges(),
          node, nodes = [];
      if (ranges.length == 0) {
        return nodes;
      }

      for (var i = ranges.length; i--;) {
        node = this.doc.createElement(nodeOptions.nodeName);
        nodes.push(node);
        if (nodeOptions.className) {
          node.className = nodeOptions.className;
        }
        if (nodeOptions.cssStyle) {
          node.setAttribute('style', nodeOptions.cssStyle);
        }
        try {
          // This only works when the range boundaries are not overlapping other elements
          ranges[i].surroundContents(node);
          this.selectNode(node);
        } catch(e) {
          // fallback
          node.appendChild(ranges[i].extractContents());
          ranges[i].insertNode(node);
        }
      }
      return nodes;
    }
function ( nodeOptions ) { var ranges = this . getOwnRanges ( ) , node , nodes = [ ] ; if ( ranges . length == 0 ) { return nodes ; } for ( var i = ranges . length ; i -- ; ) { node = this . doc . createElement ( nodeOptions . nodeName ) ; nodes . push ( node ) ; if ( nodeOptions . className ) { node . className = nodeOptions . className ; } if ( nodeOptions . cssStyle ) { node . setAttribute ( 'style' , nodeOptions . cssStyle ) ; } try { // This only works when the range boundaries are not overlapping other elements ranges [ i ] . surroundContents ( node ) ; this . selectNode ( node ) ; } catch ( e ) { // fallback node . appendChild ( ranges [ i ] . extractContents ( ) ) ; ranges [ i ] . insertNode ( node ) ; } } return nodes ; }
Wraps current selection with the given node

@param {Object} node The node to surround the selected elements with
Wraps current selection with the given node