Die eingebauten Helfer für String, Number, Date und Array nutzen
Total.js fügt den eingebauten Typen von JavaScript eine Reihe von Methoden hinzu. Sie sind überall in der Anwendung verfügbar, es lohnt sich also, sie zu kennen, bevor du einen eigenen Helfer schreibst. Die unten genannten werden vom Beispiel ausgeführt.
String: slug([max]) erzeugt einen URL-tauglichen Text (Kleinbuchstaben, keine Akzente oder Symbole); format(a, b) ersetzt {0}, {1}; encode() / decode() maskieren und stellen HTML wieder her; padLeft(length, char) / padRight(); parseInt2() und parseFloat2() lesen eine Zahl aus einem Text und geben 0 zurück, wenn keine vorhanden ist; isEmail(), isURL() und isJSON() validieren; parseJSON() parst JSON und gibt bei einem Fehler null zurück; md5(), sha1() und sha256() geben Hex-Hashes zurück; capitalize() schreibt den ersten Buchstaben jedes Wortes groß.
Number: format(decimals, thousands, decimal), zum Beispiel ergibt (1234567.891).format(2) den Wert 1 234 567.89.
Date: format('yyyy-MM-dd HH:mm'), add('1 day') und diff(date, 'days').
Array: take(n) und skip(n), first() und last(), trim() (kürzt die Texte und entfernt die leeren), findItem(field, value) und findIndex(field, value), remove(value) (entfernt jeden Treffer und gibt das Array zurück), group(field) (gibt [{ name, items }] zurück) und quicksort(field).
Objekte: U.extend(target, source) führt source in target zusammen und gibt es zurück; U.clone(object) erstellt eine tiefe Kopie.
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: '<b>'.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]
});
}