truncateToNLines
truncateToNLines
(n: number) => (aString: string) => string
Truncate a string to
n
lines, appending an ellipses if more lines exist.Note: both
\n
and\r\n
are supportedconst truncateTo3Lines = truncateToNLines(3) const lf = '\n' const crlf = '\r\n' const notTruncated = truncateTo3Lines(` a${crlf} b${lf} c`) console.log(notTruncated) // is // a // b // c const isTruncated = truncateTo3Lines(` a${crlf} b${lf} c${crlf} d`) console.log('\n', isTruncated) // is // a // b // c // ...
const truncateTo3Lines = truncateToNLines(3) const lf = '\n' const crlf = '\r\n' const notTruncated = truncateTo3Lines(` a${crlf} b${lf} c`) console.log(notTruncated) // is // a // b // c const isTruncated = truncateTo3Lines(` a${crlf} b${lf} c${crlf} d`) console.log('\n', isTruncated) // is // a // b // c // ...
const truncateTo3Lines = truncateToNLines(3) const lf = '\n' const crlf = '\r\n' const notTruncated = truncateTo3Lines( ` a${crlf} b${lf} c` ) console.log(notTruncated) // is // a // b // c const isTruncated = truncateTo3Lines( ` a${crlf} b${lf} c${crlf} d` ) console.log('\n', isTruncated) // is // a // b // c // ...
const truncateTo3Lines = truncateToNLines(3) const lf = '\n' const crlf = '\r\n' const notTruncated = truncateTo3Lines( ` a${crlf} b${lf} c` ) console.log(notTruncated) // is // a // b // c const isTruncated = truncateTo3Lines( ` a${crlf} b${lf} c${crlf} d` ) console.log('\n', isTruncated) // is // a // b // c // ...
Sometimes we want to limit the number of lines while indicating there's more. Below, we notice our car API is logging unnecessarily long stack traces. Let's truncate them to 5 lines.
const longStackTrace = `Error: unable to connect to database at connectToDb (file:///app/db/connect.mjs:25:9) at queryDatabase (file:///app/db/query.mjs:21:3) at getCarsByModel (file:///app/api/cars.mjs:15:10) at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) at next (/app/node_modules/express/lib/router/route.js:131:13) at Route.dispatch (/app/node_modules/express/lib/router/route.js:112:3) at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) at /app/node_modules/express/lib/router/index.js:277:22` const truncateTo5Lines = truncateToNLines(5) const trace = truncateTo5Lines(longStackTrace) console.log(trace) // is // Error: unable to connect to database // at connectToDb (file:///app/db/connect.mjs:25:9) // at queryDatabase (file:///app/db/query.mjs:21:3) // at getCarsByModel (file:///app/api/cars.mjs:15:10) // at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) // ...
const longStackTrace = `Error: unable to connect to database at connectToDb (file:///app/db/connect.mjs:25:9) at queryDatabase (file:///app/db/query.mjs:21:3) at getCarsByModel (file:///app/api/cars.mjs:15:10) at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) at next (/app/node_modules/express/lib/router/route.js:131:13) at Route.dispatch (/app/node_modules/express/lib/router/route.js:112:3) at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) at /app/node_modules/express/lib/router/index.js:277:22` const truncateTo5Lines = truncateToNLines(5) const trace = truncateTo5Lines(longStackTrace) console.log(trace) // is // Error: unable to connect to database // at connectToDb (file:///app/db/connect.mjs:25:9) // at queryDatabase (file:///app/db/query.mjs:21:3) // at getCarsByModel (file:///app/api/cars.mjs:15:10) // at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) // ...
const longStackTrace = `Error: unable to connect to database at connectToDb (file:///app/db/connect.mjs:25:9) at queryDatabase (file:///app/db/query.mjs:21:3) at getCarsByModel (file:///app/api/cars.mjs:15:10) at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) at next (/app/node_modules/express/lib/router/route.js:131:13) at Route.dispatch (/app/node_modules/express/lib/router/route.js:112:3) at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) at /app/node_modules/express/lib/router/index.js:277:22` const truncateTo5Lines = truncateToNLines(5) const trace = truncateTo5Lines(longStackTrace) console.log(trace) // is // Error: unable to connect to database // at connectToDb (file:///app/db/connect.mjs:25:9) // at queryDatabase (file:///app/db/query.mjs:21:3) // at getCarsByModel (file:///app/api/cars.mjs:15:10) // at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) // ...
const longStackTrace = `Error: unable to connect to database at connectToDb (file:///app/db/connect.mjs:25:9) at queryDatabase (file:///app/db/query.mjs:21:3) at getCarsByModel (file:///app/api/cars.mjs:15:10) at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) at next (/app/node_modules/express/lib/router/route.js:131:13) at Route.dispatch (/app/node_modules/express/lib/router/route.js:112:3) at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) at /app/node_modules/express/lib/router/index.js:277:22` const truncateTo5Lines = truncateToNLines(5) const trace = truncateTo5Lines(longStackTrace) console.log(trace) // is // Error: unable to connect to database // at connectToDb (file:///app/db/connect.mjs:25:9) // at queryDatabase (file:///app/db/query.mjs:21:3) // at getCarsByModel (file:///app/api/cars.mjs:15:10) // at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) // ...