helper.format.longstring.js 1.38 KB
/*
 * ADOBE CONFIDENTIAL
 *
 * Copyright 2015 Adobe Systems Incorporated
 * All Rights Reserved.
 *
 * NOTICE:  All information contained herein is, and remains
 * the property of Adobe Systems Incorporated and its suppliers,
 * if any.  The intellectual and technical concepts contained
 * herein are proprietary to Adobe Systems Incorporated and its
 * suppliers and may be covered by U.S. and Foreign Patents,
 * patents in process, and are protected by trade secret or copyright law.
 * Dissemination of this information or reproduction of this material
 * is strictly forbidden unless prior written permission is obtained
 * from Adobe Systems Incorporated.
 */
/* globals use */
use(function() {
    'use strict';

    var string = this.value || '';
    var remove = this.remove || '';
    var threshold = this.threshold || 16;
    var keep = this.keep || 5;
    var delimiter = this.delimiter || '…';

    return {
        shortenedString: function() {
            var str = string;
            if (remove) {
                str = str.replace(remove, '');
            }
            var elements = str.match(new RegExp('\\w{' + threshold + ',}', 'g'));
            if (elements) {
                elements.forEach(function(el) {
                    str = str.replace(el, el.substring(0, keep) + delimiter + el.slice(-keep));
                });
            }
            return str;
        }
    };

});