ForgeTotal.js 5
fr

Total.js 5

Utiliser les helpers intégrés pour string, number, date et array

Total.js 5 · total5@0.0.19 utilitieshelpersstringarraydate Exécutée avec Total.js 5

Total.js ajoute un ensemble de méthodes aux types intégrés de JavaScript. Elles sont disponibles partout dans l'application, il vaut donc la peine de les connaître avant d'écrire votre propre helper. Celles ci-dessous sont exercées par l'exemple.

String : slug([max]) crée un texte adapté aux URL (minuscules, sans accents ni symboles) ; format(a, b) remplace {0}, {1} ; encode() / decode() échappent et restaurent le HTML ; padLeft(length, char) / padRight() ; parseInt2() et parseFloat2() lisent un nombre dans un texte et renvoient 0 s'il n'y en a pas ; isEmail(), isURL() et isJSON() valident ; parseJSON() analyse le JSON et renvoie null en cas d'erreur ; md5(), sha1() et sha256() renvoient des hachages hexadécimaux ; capitalize() met en majuscule la première lettre de chaque mot.

Number : format(decimals, thousands, decimal), par exemple (1234567.891).format(2) donne 1 234 567.89.

Date : format('yyyy-MM-dd HH:mm'), add('1 day') et diff(date, 'days').

Array : take(n) et skip(n), first() et last(), trim() (nettoie les textes et supprime les vides), findItem(field, value) et findIndex(field, value), remove(value) (supprime chaque occurrence et renvoie le tableau), group(field) (renvoie [{ name, items }]) et quicksort(field).

Objets : U.extend(target, source) fusionne source dans target et le renvoie ; U.clone(object) fait une copie profonde.

controllers/utilities.js
exports.install = function() {
	ROUTE('GET /utils/', utils);
};

function utils($) {

	var items = [{ type: 'a', n: 1 }, { type: 'b', n: 2 }, { type: 'a', n: 3 }];
	var original = { a: { b: 1 } };
	var copy = U.clone(original);
	copy.a.b = 2;

	$.json({
		slug: 'Hello Wörld & Co!'.slug(),
		slugmax: 'Hello brave new world'.slug(11),
		format: '{0} has {1} items'.format('Ann', 3),
		encode: '<a href="x">&</a>'.encode(),
		decode: '&lt;b&gt;'.decode(),
		pad: ['7'.padLeft(3, '0'), '7'.padRight(3, '0')],
		numbers: ['abc12x'.parseInt2(), '3,5kg'.parseFloat2(), 'none'.parseInt2()],
		is: ['a@b.cz'.isEmail(), 'nope'.isEmail(), 'https://totaljs.com'.isURL(), '{"a":1}'.isJSON(), 'abc'.isJSON()],
		json: ['{"a":1}'.parseJSON(), 'not json'.parseJSON()],
		md5: 'abc'.md5(),
		sha1: 'abc'.sha1(),
		capitalize: 'hello big world'.capitalize(),
		number: [(1234567.891).format(2), (1234567.891).format(2, ' ', ',')],
		date: [new Date(2026, 0, 5, 9, 7).format('yyyy-MM-dd HH:mm'), new Date(2026, 0, 31).add('1 day').format('yyyy-MM-dd'), new Date(2026, 0, 5).diff(new Date(2026, 0, 1), 'days')],
		take: [[1, 2, 3, 4, 5].take(2), [1, 2, 3, 4, 5].skip(3), [1, 2, 3].first(), [1, 2, 3].last()],
		trim: ['a', '', ' b '].trim(),
		find: [[{ id: 1 }, { id: 2 }].findItem('id', 2), [{ id: 1 }, { id: 2 }].findIndex('id', 2)],
		remove: [1, 2, 3, 2].remove(2),
		group: items.group('type'),
		sort: [{ n: 'b' }, { n: 'a' }].quicksort('n'),
		extend: U.extend({ a: 1 }, { b: 2 }),
		clone: [original.a.b, copy.a.b]
	});
}