@visulima/string
Version:
Functions for manipulating strings.
17 lines (13 loc) • 1.54 kB
JavaScript
;var d=Object.defineProperty;var c=(e,t)=>d(e,"name",{value:t,configurable:!0});Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("node:util"),g=require("../get-string-width.cjs");var o=Object.defineProperty,a=c((e,t)=>o(e,"name",{value:t,configurable:!0}),"r");const n=a(e=>{const t=l.stripVTControlCharacters(e);return{ansi:e,json:JSON.stringify(e),lengthDifference:e.length-t.length,stripped:t,visible:e.replaceAll("\x1B",String.raw`\u001B`)}},"formatAnsiString"),u=a((e,t)=>{const i=n(e),s=n(t);return{message:a(()=>{if(e===t)return"ANSI strings are identical";const r=i.stripped===s.stripped;return l.format(`ANSI string comparison failed:
Actual:
- Visible content: %s
- With escape codes: %s
- JSON: %s
- Length: %d
Expected:
- Visible content: %s
- With escape codes: %s
- JSON: %s
- Length: %d
%s
`,i.stripped,i.visible,i.json,g.getStringWidth(i.ansi),s.stripped,s.visible,s.json,g.getStringWidth(s.ansi),r?"✓ Visible content is identical, but escape codes differ":"✗ Visible content differs")},"message"),pass:e===t}},"expectAnsiStrings"),S=a((e,t)=>{const i=n(e),s=n(t),r=i.stripped===s.stripped,p=e===t;return{actual:i,ansiEqual:p,expected:s,strippedEqual:r,summary:{actualLength:e.length,actualStrippedLength:i.stripped.length,ansiEqual:p,expectedLength:t.length,expectedStrippedLength:s.stripped.length,strippedEqual:r}}},"compareAnsiStrings");exports.compareAnsiStrings=S;exports.expectAnsiStrings=u;exports.formatAnsiString=n;