UNPKG

@visulima/string

Version:

Functions for manipulating strings.

17 lines (13 loc) 1.42 kB
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};