This project is part of the @thi.ng/umbrella monorepo and anti-framework.
About
Various (~100) string formatting, word wrapping & utility functions, some higher-order, some memoized.
Partially based on Clojure version of thi.ng/strf.
General
-
defFormat
/format
-
interpolate
/interpolateKeys
-
escape
/unescape
-
join
/splice
/split
repeat
stringify
Numeric formatters
-
currency
/chf
/eur
/gpb
/usd
/yen
radix
-
int
/intLocale
-
float
/floatFixedWidth
-
maybeParseFloat
/maybeParseInt
percent
uuid
vector
-
B8
/B16
/B32
- fixed size binary formatters -
U8
/U16
/U24
/U32
/U64
- fixed size hex formatters -
Z2
/Z3
/Z4
- fixed sized zero padded number formatters
Casing
-
lower
/upper
/capitalize
-
camel
/kebab
/snake
/upperSnake
Slugify
-
slugify
/slugifyGH
ANSI
-
isAnsi
/isAnsiEnd
/isAnsiStart
stripAnsi
lengthAnsi
Word wrapping
-
wordWrap
/wordWrapLine
/wordWrapLines
-
SPLIT_PLAIN
/SPLIT_ANSI
Padding / wrapping
center
-
padLeft
/padRight
-
truncate
/truncateLeft
/truncateRight
trim
wrap
Indentation
-
spacesToTabs
/spacesToTabsLine
-
tabsToSpaces
/tabsToSpacesLine
Char range presets / lookup tables
charRange
-
ALPHA
/ALPHA_NUM
/DIGITS
/LOWER
/UPPER
/HEX
-
BOM
/ESCAPES
/ESCAPES_REV
-
WS
/PUNCTUATION
Units
units
-
bits
/bytes
grams
meters
seconds
-
ruler
/grid
Miscellaneous
-
hstr
- Hollerith strings computeCursorPos
Status
STABLE - used in production
Search or submit any issues for this package
Installation
yarn add @thi.ng/strings
ES module import:
<script type="module" src="https://cdn.skypack.dev/@thi.ng/strings"></script>
For Node.js REPL:
const strings = await import("@thi.ng/strings");
Package sizes (brotli'd, pre-treeshake): ESM: 4.86 KB
Dependencies
Usage examples
Several demos in this repo's /examples directory are using this package.
A selection:
Screenshot | Description | Live demo | Source |
---|---|---|---|
![]() |
ASCII art raymarching with thi.ng/shader-ast & thi.ng/text-canvas | Demo | Source |
![]() |
Large ASCII font text generator using @thi.ng/rdom | Demo | Source |
![]() |
Basic crypto-currency candle chart with multiple moving averages plots | Demo | Source |
Basic SPA example with atom-based UI router | Demo | Source | |
![]() |
Mastodon API feed reader with support for different media types, fullscreen media modal, HTML rewriting | Demo | Source |
![]() |
Generative audio synth offline renderer and WAV file export | Demo | Source |
![]() |
rstream based spreadsheet w/ S-expression formula DSL | Demo | Source |
![]() |
XML/HTML/SVG to hiccup/JS conversion | Demo | Source |
API
Basic usage examples
// create a custom string formatter
const fmt = defFormat([
"Price: ",
{ usd: "$", gbp: "£", eur: "€" },
float(2),
" (",
percent(2),
" off)"
]);
// use format
fmt("usd", 1.2345, 0.5);
// Price: $1.23 (50.00% off)
fmt("eur", 1.2345, 0.25)
// Price: €1.23 (25.00% off)
Authors
If this project contributes to an academic publication, please cite it as:
@misc{thing-strings,
title = "@thi.ng/strings",
author = "Karsten Schmidt",
note = "https://thi.ng/strings",
year = 2015
}
License
© 2015 - 2023 Karsten Schmidt // Apache License 2.0