strings.ts ×12

Frontier kind: Code frontier

unlabeled · c_c09c566bb64b

2 tests · 5273 LOC · 27 files · introduces 0 tests · 42 LOC · 2 files

Introduces — evidence that enters the hierarchy at this concept

Code
14 ranges42 lines · 2 files
Tests
0 tests

Contains — complete concept membership

All code (extent)
790 ranges5273 lines · 27 files · Browse complete extent
All tests (intent)
2 testsBrowse complete intent

Neighbourhood graph

The orange circle is the focus. Violet and green circles are every ancestor and descendant, broader and narrower, at any distance; blue squares and pink diamonds are the introduced files and exact introduced tests of every visible concept, not only the focus's. Arrows point from broader to narrower concepts and bridge only concepts omitted from this view. Undirected links show source or test introduction. Concept and file size follows LOC; exact test nodes use test-count units.

Introduced files, introduced tests, and structurally relevant concept specialization

In the embedded map, ordinary wheel input scrolls the page; use the visible controls to zoom and drag to pan. Open the full-screen map for canvas navigation: wheel pans, Ctrl/Command plus wheel zooms, and arrow keys pan when this region is focused. On touch screens, open the full-screen map to pan or pinch. If JavaScript or WebGL is unavailable, use the native relationship evidence on this page.

Introduced files, introduced tests, and structurally relevant concept specializationstrings.ts ×1 · 2 introduced LOCstrings.ts ×1cursorColumns.ts ×1 · 33 introduced LOCcursorColumns.ts ×1strings.ts ×16 · 46 introduced LOCstrings.ts ×16strings.ts ×3 · 10 introduced LOCstrings.ts ×3strings.ts ×2 · 7 introduced LOCstrings.ts ×2cursorColumns.ts ×1 · 2 introduced LOCcursorColumns.ts ×1cursorColumns.ts ×9 · 70 introduced LOCcursorColumns.ts ×9strings.ts ×1 · 16 introduced LOCstrings.ts ×1strings.ts ×6 · 16 introduced LOCstrings.ts ×6strings.test|title=Strings issue #115221: isEmojiImprecise misses ⭐|occurrence=1 · 0 introduced LOCstrings.test|title=Strin…strings.ts ×1 · 1 introduced LOCstrings.ts ×1strings.ts ×2 · 4 introduced LOCstrings.ts ×2strings.ts ×1 · 2 introduced LOCstrings.ts ×1strings.ts ×2 · 7 introduced LOCstrings.ts ×2strings.ts ×1 · 2 introduced LOCstrings.ts ×1strings.ts ×1 · 46 introduced LOCstrings.ts ×1strings.test|title=Strings trimWhitespace|occurrence=1 · 0 introduced LOCstrings.test|title=Strin…strings.ts ×101 · 542 introduced LOCstrings.ts ×101cancellation.test|title=CancellationToken None|occurrence=1 · 0 introduced LOCcancellation.test|title=…cancellation.ts ×18 · 90 introduced LOCcancellation.ts ×18event.ts ×93 · 864 introduced LOCevent.ts ×93uri.test|title=URI URI#file, win-speciale|occurrence=1, charCode.test|title=CharCode has good values|occurrence=1, +2 · 0 introduced LOCuri.test|title=URI URI#f…utils.ts ×3 · 9 introduced LOCutils.ts ×3linkedList.ts ×13 · 44 introduced LOClinkedList.ts ×13lifecycle.ts ×2 · 4 introduced LOClifecycle.ts ×2lifecycle.ts ×1 · 2 introduced LOClifecycle.ts ×1lifecycle.ts ×4 · 8 introduced LOClifecycle.ts ×4lifecycle.ts ×6 · 16 introduced LOClifecycle.ts ×6lazy.ts ×1 · 2 introduced LOClazy.ts ×1lazy.ts ×3 · 37 introduced LOClazy.ts ×3lifecycle.ts ×1 · 2 introduced LOClifecycle.ts ×1lifecycle.ts ×1 · 2 introduced LOClifecycle.ts ×1uint.ts ×2 · 43 introduced LOCuint.ts ×2lifecycle.ts ×1 · 3 introduced LOClifecycle.ts ×1map.ts ×97 · 3334 introduced LOCmap.ts ×97src/vs/base/common/arrays.ts · 949 LOCcommon/arrays.tssrc/vs/base/common/arraysFind.ts · 226 LOCcommon/arraysFind.tssrc/vs/base/common/assert.ts · 91 LOCcommon/assert.tssrc/vs/base/common/cache.ts · 153 LOCcommon/cache.tssrc/vs/base/common/cancellation.ts · 206 LOCcommon/cancellation.tssrc/vs/base/common/charCode.ts · 450 LOCcommon/charCode.tssrc/vs/base/common/collections.ts · 176 LOCcommon/collections.tssrc/vs/base/common/errors.ts · 357 LOCcommon/errors.tssrc/vs/base/common/event.ts · 1964 LOCcommon/event.tssrc/vs/base/common/functional.ts · 32 LOCcommon/functional.tssrc/vs/base/common/iterator.ts · 194 LOCcommon/iterator.tssrc/vs/base/common/lazy.ts · 57 LOCcommon/lazy.tssrc/vs/base/common/lifecycle.ts · 974 LOCcommon/lifecycle.tssrc/vs/base/common/linkedList.ts · 151 LOCcommon/linkedList.tssrc/vs/base/common/map.ts · 1016 LOCcommon/map.tssrc/vs/base/common/marshallingIds.ts · 33 LOCcommon/marshallingIds.tssrc/vs/base/common/path.ts · 1589 LOCcommon/path.tssrc/vs/base/common/platform.ts · 281 LOCcommon/platform.tssrc/vs/base/common/process.ts · 76 LOCcommon/process.tssrc/vs/base/common/stopwatch.ts · 41 LOCcommon/stopwatch.tssrc/vs/base/common/strings.ts · 1413 LOCcommon/strings.tssrc/vs/base/common/types.ts · 410 LOCcommon/types.tssrc/vs/base/common/uint.ts · 59 LOCcommon/uint.tssrc/vs/base/common/uri.ts · 754 LOCcommon/uri.tssrc/vs/base/test/common/utils.ts · 107 LOCcommon/utils.tssrc/vs/editor/common/core/cursorColumns.ts · 149 LOCcore/cursorColumns.tssrc/vs/nls.ts · 244 LOCvs/nls.tscancellation.test|title=CancellationToken None|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/cancellation.test|title=CancellationToken None|occurrence=1cancellation.test|title=…charCode.test|title=CharCode has good values|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/charCode.test|title=CharCode has good values|occurrence=1charCode.test|title=Char…path.test|title=Paths (Node Implementation) path|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/path.test|title=Paths (Node Implementation) path|occurrence=1path.test|title=Paths (N…strings.test|title=Strings isFullWidthCharacter|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/strings.test|title=Strings isFullWidthCharacter|occurrence=1strings.test|title=Strin…strings.test|title=Strings issue #115221: isEmojiImprecise misses ⭐|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/strings.test|title=Strings issue #115221: isEmojiImprecise misses ⭐|occurrence=1strings.test|title=Strin…strings.test|title=Strings trimWhitespace|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/strings.test|title=Strings trimWhitespace|occurrence=1strings.test|title=Strin…uri.test|title=URI File paths containing apostrophes break URI parsing and cannot be opened #276075|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uri.test|title=URI File paths containing apostrophes break URI parsing and cannot be opened #276075|occurrence=1uri.test|title=URI File …uri.test|title=URI URI#file, win-speciale|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uri.test|title=URI URI#file, win-speciale|occurrence=1uri.test|title=URI URI#f…cursorColumns.test|title=CursorColumns columnFromVisibleColumn|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/editor/test/common/core/cursorColumns.test|title=CursorColumns columnFromVisibleColumn|occurrence=1cursorColumns.test|title…cursorColumns.test|title=CursorColumns nextRenderTabStop|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/editor/test/common/core/cursorColumns.test|title=CursorColumns nextRenderTabStop|occurrence=1cursorColumns.test|title…cursorColumns.test|title=CursorColumns visibleColumnFromColumn|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/editor/test/common/core/cursorColumns.test|title=CursorColumns visibleColumnFromColumn|occurrence=1cursorColumns.test|title…Focused concept · strings.ts ×12 · 42 introduced LOCstrings.ts ×12

Graph controls are ready.

Interactive rendering requires JavaScript and WebGL. Use the native relationship evidence on this page while the interactive map is unavailable.

Native relationship evidence

Every exact file and test below is linked only from the concept that introduces it.

Introduced tests

Every collected test enters the hierarchy at exactly one concept.

No tests are introduced at this concept. Its intent tests are introduced by other concepts.

Introduced code

Every collected source range enters the hierarchy at exactly one concept.

2 files ranked by introduced lines: 42 introduced LOC across 14 ranges. Expand a file to inspect source; the > gutter marks introduced lines.

src/vs/base/common/strings.ts 38 introduced LOC · 12 ranges

Open complete file

1005 return (breakTypeB !== GraphemeBreakType.Extend && breakTypeB !== GraphemeBreakType.SpacingMark);
1006 }
1007 > strings.ts
1008 > // Do not break between a CR and LF. Otherwise, break before and after controls.
1009 > // GB3 CR × LF
1010 > // GB4 (Control | CR | LF) ÷
1011 > // GB5 ÷ (Control | CR | LF)
1012 > if (breakTypeA === GraphemeBreakType.CR) {
1013 if (breakTypeB === GraphemeBreakType.LF) {
1014 return false; // GB3
1016 }
1017 if (breakTypeA === GraphemeBreakType.Control || breakTypeA === GraphemeBreakType.CR || breakTypeA === GraphemeBreakType.LF) {
1018 > return true; // GB4 strings.ts
1019 > }
1020 if (breakTypeB === GraphemeBreakType.Control || breakTypeB === GraphemeBreakType.CR || breakTypeB === GraphemeBreakType.LF) {
1021 return true; // GB5
1022 }
1023 > strings.ts
1024 > // Do not break Hangul syllable sequences.
1025 > // GB6 L × (L | V | LV | LVT)
1026 > // GB7 (LV | V) × (V | T)
1027 > // GB8 (LVT | T) × T
1028 > if (breakTypeA === GraphemeBreakType.L) {
1029 if (breakTypeB === GraphemeBreakType.L || breakTypeB === GraphemeBreakType.V || breakTypeB === GraphemeBreakType.LV || breakTypeB === GraphemeBreakType.LVT) {
1030 return false; // GB6
1041 }
1042 }
1043 > strings.ts
1044 > // Do not break before extending characters or ZWJ.
1045 > // GB9 × (Extend | ZWJ)
1046 if (breakTypeB === GraphemeBreakType.Extend || breakTypeB === GraphemeBreakType.ZWJ) {
1047 return false; // GB9
1048 }
1049 > strings.ts
1050 > // The GB9a and GB9b rules only apply to extended grapheme clusters:
1051 > // Do not break before SpacingMarks, or after Prepend characters.
1052 > // GB9a × SpacingMark
1053 > // GB9b Prepend ×
1054 > if (breakTypeB === GraphemeBreakType.SpacingMark) {
1055 return false; // GB9a
1056 }
1057 > if (breakTypeA === GraphemeBreakType.Prepend) { strings.ts
1058 return false; // GB9b
1059 }
1060 > strings.ts
1061 > // Do not break within emoji modifier sequences or emoji zwj sequences.
1062 > // GB11 \p{Extended_Pictographic} Extend* ZWJ × \p{Extended_Pictographic}
1063 if (breakTypeA === GraphemeBreakType.ZWJ && breakTypeB === GraphemeBreakType.Extended_Pictographic) {
1064 // Note: we are not implementing the rule entirely here to avoid introducing states
1065 return false; // GB11
1066 }
1067 > strings.ts
1068 > // GB12 sot (RI RI)* RI × RI
1069 > // GB13 [^RI] (RI RI)* RI × RI
1070 if (breakTypeA === GraphemeBreakType.Regional_Indicator && breakTypeB === GraphemeBreakType.Regional_Indicator) {
1071 // Note: we are not implementing the rule entirely here to avoid introducing states
1072 return false; // GB12 & GB13
1073 }
1074 > strings.ts
1075 > // GB999 Any ÷ Any
1076 > return true;
1077 > }
1078
1079 export const enum GraphemeBreakType {
1114 // !!! Let's make 7bit ASCII a bit faster: 0..31
1115 if (codePoint < 32) {
1116 > if (codePoint === CharCode.LineFeed) { strings.ts
1117 return GraphemeBreakType.LF;
1118 }
1119 > if (codePoint === CharCode.CarriageReturn) { strings.ts
1120 return GraphemeBreakType.CR;
1121 }
1122 > return GraphemeBreakType.Control; strings.ts
1123 > }
1124 // !!! Let's make 7bit ASCII a bit faster: 32..126
1125 if (codePoint < 127) {
src/vs/editor/common/core/cursorColumns.ts 4 introduced LOC · 2 ranges

Open complete file

27 private static _nextVisibleColumn(codePoint: number, visibleColumn: number, tabSize: number): number {
28 if (codePoint === CharCode.Tab) {
29 > return CursorColumns.nextRenderTabStop(visibleColumn, tabSize); cursorColumns.ts
30 > }
31 if (strings.isFullWidthCharacter(codePoint) || strings.isEmojiImprecise(codePoint)) {
32 > return visibleColumn + 2; cursorColumns.ts
33 > }
34 return visibleColumn + 1;
35 }