General.Web/wwwroot/lib/codemirror-5.31.0/src/util/bidi.js
(开头部分) 8KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
import { lst } from "./misc"
// BIDI HELPERS
export function iterateBidiSections(order, from, to, f) {
if (!order) return f(from, to, "ltr", 0)
let found = false
for (let i = 0; i < order.length; ++i) {
let part = order[i]
if (part.from < to && part.to > from || from == to && part.to == from) {
f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr", i)
found = true
}
}
if (!found) f(from, to, "ltr")
}
export let bidiOther = null
export function getBidiPartAt(order, ch, sticky) {
let found
bidiOther = null
for (let i = 0; i < order.length; ++i) {
let cur = order[i]
if (cur.from < ch && cur.to > ch) return i
if (cur.to == ch) {
if (cur.from != cur.to && sticky == "before") found = i
else bidiOther = i
}
if (cur.from == ch) {
if (cur.from != cur.to && sticky != "before") found = i
else bidiOther = i
}
}
return found != null ? found : bidiOther
}
// Bidirectional ordering algorithm
// See http://unicode.org/reports/tr9/tr9-13.html for the algorithm
// that this (partially) implements.
// One-char codes used for character types:
// L (L): Left-to-Right
// R (R): Right-to-Left
// r (AL): Right-to-Left Arabic
// 1 (EN): European Number
// + (ES): European Number Separator
// % (ET): European Number Terminator
// n (AN): Arabic Number
// , (CS): Common Number Separator
// m (NSM): Non-Spacing Mark
// b (BN): Boundary Neutral
// s (B): Paragraph Separator
// t (S): Segment Separator
// w (WS): Whitespace
// N (ON): Other Neutrals
// Returns null if characters are ordered as they appear
// (left-to-right), or an array of sections ({from, to, level}
// objects) in the order in which they occur visually.
let bidiOrdering = (function() {
后面还有 154 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
