UNPKG

vike

Version:

The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.

41 lines (40 loc) 1.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.trimWithAnsi = trimWithAnsi; exports.trimWithAnsiTrailOnly = trimWithAnsiTrailOnly; const assert_js_1 = require("./assert.js"); const stripAnsi_js_1 = require("./stripAnsi.js"); const whitespaceRegex = /(\s+)/; // Capturing parathesis so that split preserves separator /* Same as trim() but works with ANSI escape codes */ function trimWithAnsi(str) { str = trimWithAnsiHead(str); str = trimWithAnsiTrailOnly(str); return str; } function trimWithAnsiHead(str) { return trim(str, false); } function trimWithAnsiTrailOnly(str) { return trim(str, true); } function trim(str, trail) { let parts = str.split(whitespaceRegex); if (trail) parts.reverse(); let visible = false; parts = parts.map((line) => { if (visible) return line; const lineTrimmed = line.trim(); const lineTrimmedAndStripped = (0, stripAnsi_js_1.stripAnsi)(lineTrimmed); (0, assert_js_1.assert)(lineTrimmedAndStripped.trim() === lineTrimmedAndStripped); if (lineTrimmedAndStripped !== '') visible = true; return lineTrimmed; }); if (trail) parts.reverse(); (0, assert_js_1.assert)(str.split(whitespaceRegex).join('') === str); const strTrimmed = parts.join(''); return strTrimmed; }