ForgeTotal.js 5
el

Total.js 5

Ενόματα και όρια επικύρωσης μορφής στυλ

Total.js 5 · total5@0.0.19 total5reference Εκτελέστηκε με το Total.js 5

Τα συμπαγή enums χρησιμοποιούν status:{draft|published} (και η άνω τελεία διαχωρίζει τις επιλογές). Το αλφαριθμητικό περικόπτεται πριν από τον ακριβή έλεγχο συμμετοχής με διάκριση πεζών-κεφαλαίων. Ένα υποχρεωτικό enum απορρίπτει μια παραλειπόμενη ή κενή τιμή. Τα εμφωλευμένα αντικείμενα χρησιμοποιούν {name:Type}· δεν είναι δηλώσεις enum.

Στο total5@0.0.19, το Color δέχεται δεκαεξαδικά #RGB, #RRGGBB και #RRGGBBAA· δεν δέχεται ονόματα χρωμάτων CSS. Το Icon επικυρώνει ένα μοτίβο ονόματος κλάσης, όχι την ύπαρξη του πόρου του εικονιδίου. Τα Base64 και Zip χρησιμοποιούν τους validators του framework: η αποδοχή μιας μορφής δεν είναι επαλήθευση περιεχομένου. Στον parser συμπαγούς σχήματος αυτής της έκδοσης, τα JSON και IP δεν είναι αναγνωρισμένοι υποτύποι και επιστρέφουν σε απλά αλφαριθμητικά. Μη έγκυρο JSON και μη έγκυρο κείμενο IP γίνονται δεκτά. Το ρητό σχήμα JSON παρακάτω ορίζει εγγενείς τιμές subtype για να ενεργοποιήσει αυτούς τους ελέγχους· δεν αναλύει ένα αλφαριθμητικό JSON σε αντικείμενο. Μη χρησιμοποιείτε το SafeString αντί για δεσμευμένες παραμέτρους SQL ή escaping της εξόδου.

controllers/formats.js
var schema = NEWSCHEMA('FormatBoundaries', '*status:{draft|published},*color:Color,*blob:Base64,*zip:Zip,*icon:Icon,*document:JSON,*address:IP');
var explicit = Total.newjsonschema('ExplicitFormats', { $id: 'ExplicitFormats', type: 'object', required: ['document','address'], properties: { document: { type: 'string', subtype: 'json' }, address: { type: 'string', subtype: 'ip' } } });
exports.install = function() {
	ROUTE('POST /explicit/ @json', function($) {
		var result = explicit.transform($.body);
		if (result.error) { $.response.status = 400; $.json({ error: 'invalid format' }); }
		else $.json(result.response);
	});
	ROUTE('POST /formats/ @json', formats);
};
function formats($) {
	var result = schema.transform($.body);
	if (result.error) {
		$.response.status = 400;
		$.json({ error: 'invalid format' });
	} else
		$.json(result.response);
}