aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/bidi-js/src/reordering.js
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-14 14:46:37 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-14 14:46:37 -0800
commitafa87af01c79a9baa539f2992d32154d2a4739bd (patch)
tree92c7416db734270a2fee1d72ee9cc119379ff8e1 /vanilla/node_modules/bidi-js/src/reordering.js
parent3b927e84d200402281f68181cd4253bc77e5528d (diff)
downloadneko-afa87af01c79a9baa539f2992d32154d2a4739bd.tar.gz
neko-afa87af01c79a9baa539f2992d32154d2a4739bd.tar.bz2
neko-afa87af01c79a9baa539f2992d32154d2a4739bd.zip
task: delete vanilla js prototype\n\n- Removed vanilla/ directory and web/dist/vanilla directory\n- Updated Makefile, Dockerfile, and CI workflow to remove vanilla references\n- Cleaned up web/web.go to remove vanilla embed and routes\n- Verified build and tests pass\n\nCloses NK-2tcnmq
Diffstat (limited to 'vanilla/node_modules/bidi-js/src/reordering.js')
-rw-r--r--vanilla/node_modules/bidi-js/src/reordering.js99
1 files changed, 0 insertions, 99 deletions
diff --git a/vanilla/node_modules/bidi-js/src/reordering.js b/vanilla/node_modules/bidi-js/src/reordering.js
deleted file mode 100644
index 94a42ed..0000000
--- a/vanilla/node_modules/bidi-js/src/reordering.js
+++ /dev/null
@@ -1,99 +0,0 @@
-import { getBidiCharType, TRAILING_TYPES } from './charTypes.js'
-import { getMirroredCharacter } from './mirroring.js'
-
-/**
- * Given a start and end denoting a single line within a string, and a set of precalculated
- * bidi embedding levels, produce a list of segments whose ordering should be flipped, in sequence.
- * @param {string} string - the full input string
- * @param {GetEmbeddingLevelsResult} embeddingLevelsResult - the result object from getEmbeddingLevels
- * @param {number} [start] - first character in a subset of the full string
- * @param {number} [end] - last character in a subset of the full string
- * @return {number[][]} - the list of start/end segments that should be flipped, in order.
- */
-export function getReorderSegments(string, embeddingLevelsResult, start, end) {
- let strLen = string.length
- start = Math.max(0, start == null ? 0 : +start)
- end = Math.min(strLen - 1, end == null ? strLen - 1 : +end)
-
- const segments = []
- embeddingLevelsResult.paragraphs.forEach(paragraph => {
- const lineStart = Math.max(start, paragraph.start)
- const lineEnd = Math.min(end, paragraph.end)
- if (lineStart < lineEnd) {
- // Local slice for mutation
- const lineLevels = embeddingLevelsResult.levels.slice(lineStart, lineEnd + 1)
-
- // 3.4 L1.4: Reset any sequence of whitespace characters and/or isolate formatting characters at the
- // end of the line to the paragraph level.
- for (let i = lineEnd; i >= lineStart && (getBidiCharType(string[i]) & TRAILING_TYPES); i--) {
- lineLevels[i] = paragraph.level
- }
-
- // L2. From the highest level found in the text to the lowest odd level on each line, including intermediate levels
- // not actually present in the text, reverse any contiguous sequence of characters that are at that level or higher.
- let maxLevel = paragraph.level
- let minOddLevel = Infinity
- for (let i = 0; i < lineLevels.length; i++) {
- const level = lineLevels[i]
- if (level > maxLevel) maxLevel = level
- if (level < minOddLevel) minOddLevel = level | 1
- }
- for (let lvl = maxLevel; lvl >= minOddLevel; lvl--) {
- for (let i = 0; i < lineLevels.length; i++) {
- if (lineLevels[i] >= lvl) {
- const segStart = i
- while (i + 1 < lineLevels.length && lineLevels[i + 1] >= lvl) {
- i++
- }
- if (i > segStart) {
- segments.push([segStart + lineStart, i + lineStart])
- }
- }
- }
- }
- }
- })
- return segments
-}
-
-/**
- * @param {string} string
- * @param {GetEmbeddingLevelsResult} embedLevelsResult
- * @param {number} [start]
- * @param {number} [end]
- * @return {string} the new string with bidi segments reordered
- */
-export function getReorderedString(string, embedLevelsResult, start, end) {
- const indices = getReorderedIndices(string, embedLevelsResult, start, end)
- const chars = [...string]
- indices.forEach((charIndex, i) => {
- chars[i] = (
- (embedLevelsResult.levels[charIndex] & 1) ? getMirroredCharacter(string[charIndex]) : null
- ) || string[charIndex]
- })
- return chars.join('')
-}
-
-/**
- * @param {string} string
- * @param {GetEmbeddingLevelsResult} embedLevelsResult
- * @param {number} [start]
- * @param {number} [end]
- * @return {number[]} an array with character indices in their new bidi order
- */
-export function getReorderedIndices(string, embedLevelsResult, start, end) {
- const segments = getReorderSegments(string, embedLevelsResult, start, end)
- // Fill an array with indices
- const indices = []
- for (let i = 0; i < string.length; i++) {
- indices[i] = i
- }
- // Reverse each segment in order
- segments.forEach(([start, end]) => {
- const slice = indices.slice(start, end + 1)
- for (let i = slice.length; i--;) {
- indices[end - i] = slice[i]
- }
- })
- return indices
-}