@visulima/string
Version:
Functions for manipulating strings.
17 lines (13 loc) • 1.42 kB
JavaScript
var o=Object.defineProperty;var c=(e,t)=>o(e,"name",{value:t,configurable:!0});import{stripVTControlCharacters as d,format as g}from"node:util";import{getStringWidth as l}from"../get-string-width.mjs";var u=Object.defineProperty,r=c((e,t)=>u(e,"name",{value:t,configurable:!0}),"r");const p=r(e=>{const t=d(e);return{ansi:e,json:JSON.stringify(e),lengthDifference:e.length-t.length,stripped:t,visible:e.replaceAll("\x1B",String.raw`\u001B`)}},"formatAnsiString"),S=r((e,t)=>{const s=p(e),i=p(t);return{message:r(()=>{if(e===t)return"ANSI strings are identical";const n=s.stripped===i.stripped;return g(`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
`,s.stripped,s.visible,s.json,l(s.ansi),i.stripped,i.visible,i.json,l(i.ansi),n?"✓ Visible content is identical, but escape codes differ":"✗ Visible content differs")},"message"),pass:e===t}},"expectAnsiStrings"),b=r((e,t)=>{const s=p(e),i=p(t),n=s.stripped===i.stripped,a=e===t;return{actual:s,ansiEqual:a,expected:i,strippedEqual:n,summary:{actualLength:e.length,actualStrippedLength:s.stripped.length,ansiEqual:a,expectedLength:t.length,expectedStrippedLength:i.stripped.length,strippedEqual:n}}},"compareAnsiStrings");export{b as compareAnsiStrings,S as expectAnsiStrings,p as formatAnsiString};