function rtrim(haystack, needle) {
    if (!haystack || !needle) {
        return haystack;
    }
    var needleLen = needle.length, haystackLen = haystack.length;
    if (needleLen === 0 || haystackLen === 0) {
        return haystack;
    }
    var offset = haystackLen, idx = -1;
    while (true) {
        idx = haystack.lastIndexOf(needle, offset - 1);
        if (idx === -1 || idx + needleLen !== offset) {
            break;
        }
        if (idx === 0) {
            return '';
        }
        offset = idx;
    }
    return haystack.substring(0, offset);
}
/**
 * Removes all occurrences of needle from the end of haystack.
 * @param haystack string to trim
 * @param needle the thing to trim
 */
Removes all occurrences of needle from the end of haystack.
@param haystack string to trim
@param needle the thing to trim
Removes all occurrences of needle from the end of haystack . @param haystack string to trim @param needle the thing to trim
function rtrim(haystack, needle) {
    if (!haystack || !needle) {
        return haystack;
    }
    var needleLen = needle.length, haystackLen = haystack.length;
    if (needleLen === 0 || haystackLen === 0) {
        return haystack;
    }
    var offset = haystackLen, idx = -1;
    while (true) {
        idx = haystack.lastIndexOf(needle, offset - 1);
        if (idx === -1 || idx + needleLen !== offset) {
            break;
        }
        if (idx === 0) {
            return '';
        }
        offset = idx;
    }
    return haystack.substring(0, offset);
}
function rtrim ( haystack , needle ) { if ( ! haystack || ! needle ) { return haystack ; } var needleLen = needle . length , haystackLen = haystack . length ; if ( needleLen === 0 || haystackLen === 0 ) { return haystack ; } var offset = haystackLen , idx = - 1 ; while ( true ) { idx = haystack . lastIndexOf ( needle , offset - 1 ) ; if ( idx === - 1 || idx + needleLen !== offset ) { break ; } if ( idx === 0 ) { return '' ; } offset = idx ; } return haystack . substring ( 0 , offset ) ; }
Removes all occurrences of needle from the end of haystack.
Removes all occurrences of needle from the end of haystack .