format.js provides two usage;
- Python f-string like format
- date command like format
Both usage have default formatter and user customization.
Pseudo Syntax: {index[:[[align]width][.precision]type]}
import { format } from "https://cdn.jsdelivr.net/gh/ymd-h/format-js@v1/format.js"; format("{0} + {1} = {2}", 1, 2, 1+2); // "1 + 2 = 3" format("Precision: {0:.2f}", 1.78); // "Precision: 1.78" format("Width: {0:4d}", 1); // "Width: 1" format("Hex: {0:x}", 15); // "Hex: f" format("Align: {0:<4d}", 1); // "Align: 1 "import { patch_default_format } from "https://cdn.jsdelivr.net/gh/ymd-h/format-js@v1/format.js"; const f = patch_default_format( { // key: (value: *, precision: number) => formatted_string "w": (value, precision) => value.toFixed(precision) + ` (${precision})`, }, // Patch for Format Handlers (optional) { // key: (value: string, width: number) => aligned_string "*": (value, width) => value.padStart(width, "*"), }, // Patch for Align (optional) ); f.format("{0:.2w}", 1); // "1.00 (2)" f.format("{0:.6w}", 1.25); // "1.000000 (6)" f.format("{0:*6.2f}", 1); // "**1.00"import { FStringLikeFormatter } from "https://cdn.jsdelivr.net/gh/ymd-h/format-js@v1/format.js"; const f = new FStringLikeFormatter( { ... }, // handlers { ... }, // align { defaultPrecision: 2 }, // options (optional) ); f.format("My name is {0}.", "ymd-h");import { format_date } from "https://cdn.jsdelivr.net/gh/ymd-h/format-js@v1/format.js"; format_date("%Y-%m-%d %H:%M:%S", new Date(2024, 2, 24, 18, 44, 52)); // "2024-03-24 18:44:52" format_date("%T", new Date(2024, 2, 24, 18, 44, 52)); // "18:44:52"import { patch_default_formatformat_date } from "https://cdn.jsdelivr.net/gh/ymd-h/format-js@v1/format.js"; const f = patch_default_formatformat_date({ "p": d => (d.getHours() < 12) ? "a.m." : "p.m.", }); f.format("%p", new Date(2024, 2, 24, 18, 44, 52)); // "p.m."import { DateLikeFormatter } from "https://cdn.jsdelivr.net/gh/ymd-h/format-js@v1/format.js"; const f = new DateLikeFormatter({ "p": d => (d.getHours() < 12) ? "a.m." : "p.m.", }); f.format("%p", new Date(2024, 2, 24, 18, 44, 52)); // "p.m."| format | description |
|---|---|
s | string (.toString()) |
b | binary number |
c | unicode character (String.fromCodePoint()) |
d | integer |
o | octal number |
x | hexadecimal number. Use a-f for 10 to 15 |
X | hexadecimal number. Use A-F for 10 to 15 |
e | scientific notation. Use e for exponent |
E | scientific notation. Use E for exponent |
f | fixed point notation. Use nan / infinity |
F | fixed point notation. Use NAN / INFINITY |
% | percentage. multuply 100, fixed notation follewed by % |
| align | description |
|---|---|
< | align left |
^ | align middle |
> / (empty) | align right (default) |
| format | description |
|---|---|
%y | year without century (2 digit) |
%Y | year with century (4 digit) |
%m | 2 digit month (01 - 12) |
%d | 2 digit date (01 - 31) |
%H | 24 hour 2 digit hour (00 - 23) |
%I | 12 hour 2 digit hour (01 - 12) |
%p | AM or PM |
%M | 2 digit minute (00 - 59) |
%S | 2 digit second (00 - 59) |
%f | 3 digit microsecond (000 - 999) |
%s | Unix Time. Elapsed seconds from 1970-01-01 00:00:00 UTC |
%T | Same as %H:%M:%S |
%w | day of the week as number. Sunday is 0. (0 - 6) |
%% | % (escaped) |