src/js/base/core/range.js
function (sc, so, ec, eo) {
                if (arguments.length === 4) {
                    return new WrappedRange(sc, so, ec, eo);
                } else if (arguments.length === 2) { //collapsed
                    ec = sc;
                    eo = so;
                    return new WrappedRange(sc, so, ec, eo);
                } else {
                    var wrappedRange = this.createFromSelection();
                    if (!wrappedRange && arguments.length === 1) {
                        wrappedRange = this.createFromNode(arguments[0]);
                        return wrappedRange.collapse(dom.emptyPara === arguments[0].innerHTML);
                    }
                    return wrappedRange;
                }
            }
function (sc, so, ec, eo) {
                if (arguments.length === 4) {
                    return new WrappedRange(sc, so, ec, eo);
                } else if (arguments.length === 2) { //collapsed
                    ec = sc;
                    eo = so;
                    return new WrappedRange(sc, so, ec, eo);
                } else {
                    var wrappedRange = this.createFromSelection();
                    if (!wrappedRange && arguments.length === 1) {
                        wrappedRange = this.createFromNode(arguments[0]);
                        return wrappedRange.collapse(dom.emptyPara === arguments[0].innerHTML);
                    }
                    return wrappedRange;
                }
            }
function ( sc , so , ec , eo ) { if ( arguments . length === 4 ) { return new WrappedRange ( sc , so , ec , eo ) ; } else if ( arguments . length === 2 ) { //collapsed ec = sc ; eo = so ; return new WrappedRange ( sc , so , ec , eo ) ; } else { var wrappedRange = this . createFromSelection ( ) ; if ( ! wrappedRange && arguments . length === 1 ) { wrappedRange = this . createFromNode ( arguments [ 0 ] ) ; return wrappedRange . collapse ( dom . emptyPara === arguments [ 0 ] . innerHTML ) ; } return wrappedRange ; } }
create Range Object From arguments or Browser Selection

@param {Node} sc - start container
@param {Number} so - start offset
@param {Node} ec - end container
@param {Number} eo - end offset
@return {WrappedRange}
create Range Object From arguments or Browser Selection