ForgeTotal.js 5
nl

Total.js 5

De ingebouwde helpers voor string, number, date en array gebruiken

Total.js 5 · total5@0.0.19 utilitieshelpersstringarraydate Uitgevoerd met Total.js 5

Total.js voegt een reeks methoden toe aan de ingebouwde typen van JavaScript. Ze zijn overal in de applicatie beschikbaar, het loont dus om ze te kennen voordat je een eigen helper schrijft. De onderstaande worden door het voorbeeld uitgeoefend.

String: slug([max]) maakt een URL-veilige tekst (kleine letters, zonder accenten of symbolen); format(a, b) vervangt {0}, {1}; encode() / decode() escapen en herstellen HTML; padLeft(length, char) / padRight(); parseInt2() en parseFloat2() lezen een getal uit een tekst en geven 0 terug als er geen is; isEmail(), isURL() en isJSON() valideren; parseJSON() parset JSON en geeft bij een fout null terug; md5(), sha1() en sha256() geven hex-hashes terug; capitalize() zet de eerste letter van elk woord in hoofdletters.

Number: format(decimals, thousands, decimal), bijvoorbeeld (1234567.891).format(2) geeft 1 234 567.89.

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

Array: take(n) en skip(n), first() en last(), trim() (trimt de teksten en verwijdert de lege), findItem(field, value) en findIndex(field, value), remove(value) (verwijdert elke overeenkomst en geeft de array terug), group(field) (geeft [{ name, items }] terug) en quicksort(field).

Objecten: U.extend(target, source) voegt source samen met target en geeft het terug; U.clone(object) maakt een diepe kopie.

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]
	});
}