diff --git a/src/vs/base/common/strings.ts b/src/vs/base/common/strings.ts
index ec727797b87877881af10f503da3d770a1a6b53f..2d971940fbcfd27fa619438737e49178a63ada3f 100644
--- a/src/vs/base/common/strings.ts
+++ b/src/vs/base/common/strings.ts
@@ -144,27 +144,6 @@ export function stripWildcards(pattern: string): string {
return pattern.replace(/\*/g, '');
}
-/**
- * @deprecated ES6: use `String.startsWith`
- */
-export function startsWith(haystack: string, needle: string): boolean {
- if (haystack.length < needle.length) {
- return false;
- }
-
- if (haystack === needle) {
- return true;
- }
-
- for (let i = 0; i < needle.length; i++) {
- if (haystack[i] !== needle[i]) {
- return false;
- }
- }
-
- return true;
-}
-
/**
* @deprecated ES6: use `String.endsWith`
*/
diff --git a/src/vs/base/test/common/resources.test.ts b/src/vs/base/test/common/resources.test.ts
index 3bacb9e8155f2bc1594c628b2e7938ffbcbab248..8026e240bba4e3afefe841936d1370bdff6a4a9b 100644
--- a/src/vs/base/test/common/resources.test.ts
+++ b/src/vs/base/test/common/resources.test.ts
@@ -7,7 +7,6 @@ import { dirname, basename, distinctParents, joinPath, normalizePath, isAbsolute
import { URI } from 'vs/base/common/uri';
import { isWindows } from 'vs/base/common/platform';
import { toSlashes } from 'vs/base/common/extpath';
-import { startsWith } from 'vs/base/common/strings';
import { win32, posix } from 'vs/base/common/path';
@@ -304,7 +303,7 @@ suite('Resources', () => {
const p = path.indexOf('/') !== -1 ? posix : win32;
if (!p.isAbsolute(path)) {
let expectedPath = isWindows ? toSlashes(path) : path;
- expectedPath = startsWith(expectedPath, './') ? expectedPath.substr(2) : expectedPath;
+ expectedPath = expectedPath.startsWith('./') ? expectedPath.substr(2) : expectedPath;
assert.equal(relativePath(u1, actual), expectedPath, `relativePath (${u1.toString()}) on actual (${actual.toString()}) should be to path (${expectedPath})`);
}
}
diff --git a/src/vs/base/test/common/strings.test.ts b/src/vs/base/test/common/strings.test.ts
index bce692cd6c9a511b0578a1caf5df83f7894d2e10..c68a77c8f86e984ab61e693308d94f315c506f25 100644
--- a/src/vs/base/test/common/strings.test.ts
+++ b/src/vs/base/test/common/strings.test.ts
@@ -140,16 +140,6 @@ suite('Strings', () => {
assert.strictEqual(strings.escape('Hello'), '<foo>Hello</foo>');
});
- test('startsWith', () => {
- assert(strings.startsWith('foo', 'f'));
- assert(strings.startsWith('foo', 'fo'));
- assert(strings.startsWith('foo', 'foo'));
- assert(!strings.startsWith('foo', 'o'));
- assert(!strings.startsWith('', 'f'));
- assert(strings.startsWith('foo', ''));
- assert(strings.startsWith('', ''));
- });
-
test('endsWith', () => {
assert(strings.endsWith('foo', 'o'));
assert(strings.endsWith('foo', 'oo'));
diff --git a/src/vs/editor/contrib/codeAction/types.ts b/src/vs/editor/contrib/codeAction/types.ts
index b8f8c5e741e8450975dd5b318740275650552586..8f558329017017ea74f3e19ae21eda05d8e7efc5 100644
--- a/src/vs/editor/contrib/codeAction/types.ts
+++ b/src/vs/editor/contrib/codeAction/types.ts
@@ -3,7 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-import { startsWith } from 'vs/base/common/strings';
import { CodeAction, CodeActionTriggerType } from 'vs/editor/common/modes';
import { Position } from 'vs/editor/common/core/position';
@@ -27,7 +26,7 @@ export class CodeActionKind {
}
public contains(other: CodeActionKind): boolean {
- return this.equals(other) || this.value === '' || startsWith(other.value, this.value + CodeActionKind.sep);
+ return this.equals(other) || this.value === '' || other.value.startsWith(this.value + CodeActionKind.sep);
}
public intersects(other: CodeActionKind): boolean {
diff --git a/src/vs/workbench/api/common/extHostTypes.ts b/src/vs/workbench/api/common/extHostTypes.ts
index 43dd6f160577b61cbee63b6a3bf936618109793f..ff1e6930dcc324441fd514385f432b83c8882794 100644
--- a/src/vs/workbench/api/common/extHostTypes.ts
+++ b/src/vs/workbench/api/common/extHostTypes.ts
@@ -9,7 +9,6 @@ import { illegalArgument } from 'vs/base/common/errors';
import { IRelativePattern } from 'vs/base/common/glob';
import { isMarkdownString } from 'vs/base/common/htmlContent';
import { ResourceMap } from 'vs/base/common/map';
-import { startsWith } from 'vs/base/common/strings';
import { isStringArray } from 'vs/base/common/types';
import { URI } from 'vs/base/common/uri';
import { generateUuid } from 'vs/base/common/uuid';
@@ -1171,7 +1170,7 @@ export class CodeActionKind {
}
public contains(other: CodeActionKind): boolean {
- return this.value === other.value || startsWith(other.value, this.value + CodeActionKind.sep);
+ return this.value === other.value || other.value.startsWith(this.value + CodeActionKind.sep);
}
}
CodeActionKind.Empty = new CodeActionKind('');
diff --git a/src/vs/workbench/api/common/jsonValidationExtensionPoint.ts b/src/vs/workbench/api/common/jsonValidationExtensionPoint.ts
index dd2ad38b4679a0b028149b123aac1e3943f1d11f..e768c889fb99d82a9473aa2a763d27747ccb56de 100644
--- a/src/vs/workbench/api/common/jsonValidationExtensionPoint.ts
+++ b/src/vs/workbench/api/common/jsonValidationExtensionPoint.ts
@@ -5,7 +5,6 @@
import * as nls from 'vs/nls';
import { ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry';
-import * as strings from 'vs/base/common/strings';
import * as resources from 'vs/base/common/resources';
import { isString } from 'vs/base/common/types';
@@ -64,7 +63,7 @@ export class JSONValidationExtensionPoint {
collector.error(nls.localize('invalid.url', "'configuration.jsonValidation.url' must be a URL or relative path"));
return;
}
- if (strings.startsWith(uri, './')) {
+ if (uri.startsWith('./')) {
try {
const colorThemeLocation = resources.joinPath(extensionLocation, uri);
if (!resources.isEqualOrParent(colorThemeLocation, extensionLocation)) {
diff --git a/src/vs/workbench/contrib/tasks/node/processRunnerDetector.ts b/src/vs/workbench/contrib/tasks/node/processRunnerDetector.ts
index a90fce79a5f54b0d2e8b360ee306d44a7334c41c..ca397c18bc3b7f5eb516aca1fc00712fe21e1aa0 100644
--- a/src/vs/workbench/contrib/tasks/node/processRunnerDetector.ts
+++ b/src/vs/workbench/contrib/tasks/node/processRunnerDetector.ts
@@ -379,7 +379,7 @@ export class ProcessRunnerDetector {
if (taskName === test) {
taskInfo.index = index;
taskInfo.exact = 3;
- } else if ((Strings.startsWith(taskName, test) || Strings.endsWith(taskName, test)) && taskInfo.exact < 3) {
+ } else if ((taskName.startsWith(test) || taskName.endsWith(test)) && taskInfo.exact < 3) {
taskInfo.index = index;
taskInfo.exact = 2;
} else if (taskName.indexOf(test) !== -1 && taskInfo.exact < 2) {
diff --git a/src/vs/workbench/contrib/welcome/page/browser/welcomePage.ts b/src/vs/workbench/contrib/welcome/page/browser/welcomePage.ts
index 8d93275942af62d4ddbf58046809f7921f76b437..1783cf20c748f5bf74e1fb6bd32ae8c010cfba4e 100644
--- a/src/vs/workbench/contrib/welcome/page/browser/welcomePage.ts
+++ b/src/vs/workbench/contrib/welcome/page/browser/welcomePage.ts
@@ -6,7 +6,6 @@
import 'vs/css!./welcomePage';
import 'vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page';
import { URI } from 'vs/base/common/uri';
-import * as strings from 'vs/base/common/strings';
import { CommandsRegistry, ICommandService } from 'vs/platform/commands/common/commands';
import * as arrays from 'vs/base/common/arrays';
import { WalkThroughInput } from 'vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput';
@@ -78,7 +77,7 @@ export class WelcomePageContribution implements IWorkbenchContribution {
.then(folder => {
const files = folder.children ? folder.children.map(child => child.name) : [];
- const file = files.sort().find(file => strings.startsWith(file.toLowerCase(), 'readme'));
+ const file = files.sort().find(file => file.toLowerCase().startsWith('readme'));
if (file) {
return joinPath(folderUri, file);
}
@@ -88,7 +87,7 @@ export class WelcomePageContribution implements IWorkbenchContribution {
.then(readmes => {
if (!editorService.activeEditor) {
if (readmes.length) {
- const isMarkDown = (readme: URI) => strings.endsWith(readme.path.toLowerCase(), '.md');
+ const isMarkDown = (readme: URI) => readme.path.toLowerCase().endsWith('.md');
return Promise.all([
this.commandService.executeCommand('markdown.showPreview', null, readmes.filter(isMarkDown), { locked: true }),
editorService.openEditors(readmes.filter(readme => !isMarkDown(readme))
diff --git a/src/vs/workbench/services/themes/common/colorThemeData.ts b/src/vs/workbench/services/themes/common/colorThemeData.ts
index 932b34cefbbbbb767e5673f6c45c57e1f4ba65f8..6b9fa724b740e75b30a137fec37ff0f5b1e168ad 100644
--- a/src/vs/workbench/services/themes/common/colorThemeData.ts
+++ b/src/vs/workbench/services/themes/common/colorThemeData.ts
@@ -19,7 +19,6 @@ import { Registry } from 'vs/platform/registry/common/platform';
import { getParseErrorMessage } from 'vs/base/common/jsonErrorMessages';
import { URI } from 'vs/base/common/uri';
import { parse as parsePList } from 'vs/workbench/services/themes/common/plistParser';
-import { startsWith } from 'vs/base/common/strings';
import { TokenStyle, SemanticTokenRule, ProbeScope, getTokenClassificationRegistry, TokenStyleValue, TokenStyleData, parseClassifierString } from 'vs/platform/theme/common/tokenClassificationRegistry';
import { MatcherWithPriority, Matcher, createMatchers } from 'vs/workbench/services/themes/common/textMateScopeMatcher';
import { IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader';
@@ -641,7 +640,7 @@ export class ColorThemeData implements IWorkbenchColorTheme {
}
function toCSSSelector(extensionId: string, path: string) {
- if (startsWith(path, './')) {
+ if (path.startsWith('./')) {
path = path.substr(2);
}
let str = `${extensionId}-${path}`;