UNPKG

botbuilder-core

Version:

Core components for Microsoft Bot Builder. Components in this library can run either in a browser or on the server.

66 lines (60 loc) 1.8 kB
/** * @module botbuilder */ /** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ /** * Helper class containing string utility methods. */ export class StringUtils { /** * Truncate string with ... * * @param text Text. * @param length Length to truncate text. * @returns Original string modified. */ static ellipsis(text: string, length: number): string { text = text || ''; if (text.length <= length) { return text; } return `${text.substr(0, length)}...`; } /** * UniqueHash - create a unique hash from a string. * * @remarks * The source for this function was derived from the following article: * * https://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/ * @param text Text to hash. * @returns A string which is an unique hash. */ static hash(text: string): string { const length = text.length; let hash = 0; for (let i = 0; i < length; i++) { const chr = text.charCodeAt(i); hash = (hash << 5) - hash + chr; hash |= 0; // Convert to 32 bit integer } return hash.toString(); } /** * EllipsisHash - create truncated string with unique hash for the truncated part. * * @param text Text to truncate. * @param length Length to truncate at. * @returns The truncated string with unique hash for the truncated part. */ static ellipsisHash(text: string, length: number): string { text = text || ''; if (text.length <= length) { return text; } return `${this.ellipsis(text, length)}${this.hash(text)}`; } }