@alcalzone/ansi-tokenize
Advanced tools
+21
| MIT License | ||
| Copyright (c) 2020-2025 AlCalzone | ||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| of this software and associated documentation files (the "Software"), to deal | ||
| in the Software without restriction, including without limitation the rights | ||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| copies of the Software, and to permit persons to whom the Software is | ||
| furnished to do so, subject to the following conditions: | ||
| The above copyright notice and this permission notice shall be included in all | ||
| copies or substantial portions of the Software. | ||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
| SOFTWARE. |
+14
-3
@@ -20,5 +20,16 @@ import ansiStyles from "ansi-styles"; | ||
| else { | ||
| // This is a start code. Disable all styles this "overrides", then enable it | ||
| ret = ret.filter((retCode) => retCode.endCode !== code.endCode); | ||
| ret.push(code); | ||
| // 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); | ||
| } | ||
| } | ||
@@ -25,0 +36,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"reduce.js","sourceRoot":"","sources":["../src/reduce.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,mGAAmG;AACnG,MAAM,UAAU,eAAe,CAAC,KAAiB;IAChD,OAAO,0BAA0B,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,+IAA+I;AAC/I,MAAM,UAAU,0BAA0B,CAAC,KAAiB,EAAE,QAAoB;IACjF,IAAI,GAAG,GAAe,CAAC,GAAG,KAAK,CAAC,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE;YACxC,gCAAgC;YAChC,GAAG,GAAG,EAAE,CAAC;SACT;aAAM,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACtC,wDAAwD;YACxD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7D;aAAM;YACN,4EAA4E;YAC5E,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACf;KACD;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"} | ||
| {"version":3,"file":"reduce.js","sourceRoot":"","sources":["../src/reduce.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,mGAAmG;AACnG,MAAM,UAAU,eAAe,CAAC,KAAiB;IAChD,OAAO,0BAA0B,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,+IAA+I;AAC/I,MAAM,UAAU,0BAA0B,CAAC,KAAiB,EAAE,QAAoB;IACjF,IAAI,GAAG,GAAe,CAAC,GAAG,KAAK,CAAC,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE;YACxC,gCAAgC;YAChC,GAAG,GAAG,EAAE,CAAC;SACT;aAAM,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACtC,wDAAwD;YACxD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7D;aAAM;YACN,kEAAkE;YAClE,oEAAoE;YACpE,0EAA0E;YAC1E,MAAM,eAAe,GACpB,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAEzE,kDAAkD;YAClD,IAAI,eAAe,EAAE;gBACpB,IACC,CAAC,GAAG,CAAC,IAAI,CACR,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAC3E,EACA;oBACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACf;aACD;iBAAM;gBACN,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACf;SACD;KACD;IACD,OAAO,GAAG,CAAC;AACZ,CAAC"} |
+7
-7
| { | ||
| "name": "@alcalzone/ansi-tokenize", | ||
| "version": "0.2.0", | ||
| "version": "0.2.1", | ||
| "description": "Efficiently modify strings containing ANSI escape codes", | ||
@@ -30,6 +30,6 @@ "publishConfig": { | ||
| "devDependencies": { | ||
| "@alcalzone/release-script": "~3.5.9", | ||
| "@alcalzone/release-script-plugin-license": "~3.5.9", | ||
| "@tsconfig/node14": "^14.1.0", | ||
| "@types/node": "^14.18.54", | ||
| "@alcalzone/release-script": "~4.0.0", | ||
| "@alcalzone/release-script-plugin-license": "~4.0.0", | ||
| "@tsconfig/node18": "^18.2.4", | ||
| "@types/node": "^18.19.130", | ||
| "@typescript-eslint/eslint-plugin": "^5.55.0", | ||
@@ -63,3 +63,3 @@ "@typescript-eslint/parser": "^5.55.0", | ||
| }, | ||
| "packageManager": "yarn@3.5.0" | ||
| } | ||
| "packageManager": "yarn@4.10.3" | ||
| } |
+4
-0
@@ -234,2 +234,6 @@ # @alcalzone/ansi-tokenize | ||
| --> | ||
| ### 0.2.1 (2025-10-20) | ||
| - Fix: Prevent `dim` and `bold` modifiers from canceling each other (#37) | ||
| ### 0.2.0 (2025-04-24) | ||
@@ -236,0 +240,0 @@ |
26615
8.79%24
4.35%264
4.35%258
1.57%