@e22m4u/format
Расширенная версия format
из Node.js модуля util
- стандартные спецификаторы
%s
, %d
и %j
- добавлен
%v
для вывода простых значений или имени конструктора - добавлен
%l
для вывода списка через запятую 1, 2, 3
- поддержка работы в браузере
дополнительно:
- встроенный класс
Errorf
с интерполяцией сообщения об ошибке
Установка
npm install @e22m4u/format
Примеры
Es-импорт
import {format} from '@e22m4u/format';
CommonJS
const {format} = require('@e22m4u/format');
Спецификатор %v
Строки оборачиваются в кавычки, остальные примитивы приводятся
к строке, а для более сложных типов выводится имя конструктора.
format('> %v', 'foo');
format('> %v', '');
format('> %v', 10);
format('> %v', 0);
format('> %v', NaN);
format('> %v', Infinity);
format('> %v', true);
format('> %v', false);
format('> %v', {foo: 'bar'});
format('> %v', new Date());
format('> %v', new Map());
format('> %v', () => 10);
format('> %v', undefined);
format('> %v', null);
Спецификатор %v
проектировался для вывода значений в сообщениях
об ошибке, когда важно иметь представление об их типах. При этом,
вывод содержимого объекта может быть избыточен для такой задачи.
По этой причине, объекты приводятся к имени конструктора, что
позволяет относительно точно определить тип выводимого значения.
class MyClass {}
format('> %v', new MyClass());
format('> %v', 'MyClass');
format('> %v', MyClass);
Спецификатор %l
Вывод элементов массива через запятую.
format('> %l', ['foo', 10, true]);
Элементы массива приводятся к строке по логике спецификатора %v
format('> %l', ['foo']);
format('> %l', ['']);
format('> %l', [10]);
format('> %l', [0]);
format('> %l', [NaN]);
format('> %l', [Infinity]);
format('> %l', [true]);
format('> %l', [false]);
format('> %l', [{foo: 'bar'}]);
format('> %l', [new Date()]);
format('> %l', [new Map()]);
format('> %l', [() => 10]);
format('> %l', [undefined]);
format('> %l', [null]);
Errorf
Конструктор класса Errorf
передает аргументы функции format
для формирования сообщения об ошибке.
Пример:
import {Errorf} from '@e22m4u/format';
throw new Errorf(
'It requires one of %l, but %v given.',
[true, false, 'y', 'n'],
new Map(),
);
Тесты
npm run test
Лицензия
MIT