| /*--------------------------------------------------------------------------------------------- |
| * Copyright (c) Microsoft Corporation. All rights reserved. |
| * Licensed under the MIT License. See License.txt in the project root for license information. |
| *--------------------------------------------------------------------------------------------*/ |
| export function startsWith(haystack, needle) { |
| if (haystack.length < needle.length) { |
| return false; |
| } |
| for (var i = 0; i < needle.length; i++) { |
| if (haystack[i] !== needle[i]) { |
| return false; |
| } |
| } |
| return true; |
| } |
| /** |
| * Determines if haystack ends with needle. |
| */ |
| export function endsWith(haystack, needle) { |
| var diff = haystack.length - needle.length; |
| if (diff > 0) { |
| return haystack.lastIndexOf(needle) === diff; |
| } |
| else if (diff === 0) { |
| return haystack === needle; |
| } |
| else { |
| return false; |
| } |
| } |
| /** |
| * @returns the length of the common prefix of the two strings. |
| */ |
| export function commonPrefixLength(a, b) { |
| var i; |
| var len = Math.min(a.length, b.length); |
| for (i = 0; i < len; i++) { |
| if (a.charCodeAt(i) !== b.charCodeAt(i)) { |
| return i; |
| } |
| } |
| return len; |
| } |
| export function repeat(value, count) { |
| var s = ''; |
| while (count > 0) { |
| if ((count & 1) === 1) { |
| s += value; |
| } |
| value += value; |
| count = count >>> 1; |
| } |
| return s; |
| } |
| var _a = 'a'.charCodeAt(0); |
| var _z = 'z'.charCodeAt(0); |
| var _A = 'A'.charCodeAt(0); |
| var _Z = 'Z'.charCodeAt(0); |
| var _0 = '0'.charCodeAt(0); |
| var _9 = '9'.charCodeAt(0); |
| export function isLetterOrDigit(text, index) { |
| var c = text.charCodeAt(index); |
| return (_a <= c && c <= _z) || (_A <= c && c <= _Z) || (_0 <= c && c <= _9); |
| } |