mirror of
https://github.com/tvytlx/ai-agent-deep-dive.git
synced 2026-04-05 08:34:47 +08:00
Add extracted source directory and README navigation
This commit is contained in:
38
extracted-source/node_modules/@alcalzone/ansi-tokenize/build/reduce.js
generated
vendored
Normal file
38
extracted-source/node_modules/@alcalzone/ansi-tokenize/build/reduce.js
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
import ansiStyles from "ansi-styles";
|
||||
import { endCodesSet } from "./ansiCodes.js";
|
||||
/** Reduces the given array of ANSI codes to the minimum necessary to render with the same style */
|
||||
export function reduceAnsiCodes(codes) {
|
||||
return reduceAnsiCodesIncremental([], codes);
|
||||
}
|
||||
/** Like {@link reduceAnsiCodes}, but assumes that `codes` is already reduced. Further reductions are only done for the items in `newCodes`. */
|
||||
export function reduceAnsiCodesIncremental(codes, newCodes) {
|
||||
let ret = [...codes];
|
||||
for (const code of newCodes) {
|
||||
if (code.code === ansiStyles.reset.open) {
|
||||
// Reset code, disable all codes
|
||||
ret = [];
|
||||
}
|
||||
else if (endCodesSet.has(code.code)) {
|
||||
// This is an end code, disable all matching start codes
|
||||
ret = ret.filter((retCode) => retCode.endCode !== code.code);
|
||||
}
|
||||
else {
|
||||
// This is a start code. Remove codes it "overrides", then add it.
|
||||
// If a new code has the same endCode, it "overrides" existing ones.
|
||||
// Special case: Intensity codes (1m, 2m) can coexist (both end with 22m).
|
||||
const isIntensityCode = code.code === ansiStyles.bold.open || code.code === ansiStyles.dim.open;
|
||||
// Add intensity codes only if not already present
|
||||
if (isIntensityCode) {
|
||||
if (!ret.find((retCode) => retCode.code === code.code && retCode.endCode === code.endCode)) {
|
||||
ret.push(code);
|
||||
}
|
||||
}
|
||||
else {
|
||||
ret = ret.filter((retCode) => retCode.endCode !== code.endCode);
|
||||
ret.push(code);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
//# sourceMappingURL=reduce.js.map
|
||||
Reference in New Issue
Block a user