Kako vam se dopada?
Vidite li svrhu?
BASIC types:
string - string
int - integer
float - float
numeric_int - numeric int //što znači da je ok ako je broj u string formatu
numeric_float - numeric float //što znači da je ok ako je broj u string formatu
numeric - numeric //broj može biti u string formatu
array - array
object - object
aobject - array ili object
bool - boolean koji uključuje i 1 i 0 ..ili zadano stringom: "true" / "false"
booleaen - boolean koji se odnosi samo na true i false
null - null
* - wildcard - any type
MORE spec types:
email - string koji je email
url - string koji je url
username - string koji je username
password - string koji je password
password1 - string koji je password minimalno težine 1
password2 - string koji je password minimalno težine 2
password5 - string koji je password minimalno težine 5
//..typeovi su extendabilni, ali nativno bi funkcija trebala podržavati velik spektar specijalnih typeova
OR statements:
array|object - array ili object
string|int|array - string ili integer ili array //ILI statement se može kaskadno nizati koliko god treba
NESTED statement:
array<int> - array koji sadrži isključivo integere
array<string> - array koji sadrži isključivo stringove
array<url> - array koji sadrži isključivo url-ove
array<url|int> - array koji sadrži isključivo url-ove ili integere
array<array<int>> - array koji sadrži isključivo arraye-ove koji sadrže integere
LENGTH statements:
array(4) - array koji sadrži isključivo 4 elementa
array(>4) - array koji sadrži više od 4 elementa
array(<4) - array koji sadrži manje od 4 elementa
array(>=4) - array koji sadrži 4 ili više elementa
array(<=4) - array koji sadrži 4 ili manje elemenata
array(>=4<10) - array koji sadrži 4 ili više elemenata i manje od 10 elemenata
array(4-10) - array koji sadrži od 4-10 elemenata. Uključujući 4 i 10.
object(>4) - objekt koji ima više od 4 ključa
string(>4) - string duži od 4 karaktera
int(>4) - integer veći od 4
numric(>4) - bilo koji numeric veći od 4
//za object i aobject vrijede isti LENGTH statementi, samo se odnose na količinu ključeva koje objekt posjeduje
//za string tipove također vrijede LENGTH statementi, tako je moguće zadati npr: password(>7)
//za numeric tipove, length provjerava dali iznos broja spada u zadani range
COMBINE NESTED and LENGTH
array(4)<int> -> array koji sadrži isključivo integere, i točno 4 elementa
array?(4)<int> -> array koji sadrži isključivo integere, i točno 4 elementa ..ili je null //validno je pisati i na način sa upitnikom na kraju: "array(4)<int>?""
EXACT TYPES statements:
array[string,int,string|int,*] - array koji sadrži 4 elementa, redom: 1:string, 2:integer, 3:string ili integer, 4: any type
object[key1:*, key2, key3:string, -key4, -key5:int] - object koji mora sadržavati key1 bilo kojeg tipa i key2 također bilo kojeg tipa, zatim ne smije imati ključ key4 i ne smije imati ključ key5 koji je integer
object[key1.key2:int] - object koji mora sadržavati int type na svojoj putanji: object.key1.key2
COMBINE EXACT WITH LENGTH:
object[key1:string](1) - objekt koji mora sadržavati ključ key1 koji je string i koji ukupno mora sadržavati 1 ključ.
EXACT VALUES statements:
int[1] - integer koji je 1
int[2] - integer koji je 2
int[2|3] - integer koji je 2 ili 3
string[ivo] - string koji je ivo
string[ivo|ana] - string koji je ivo ili ana. Za string se ne smiju pisati specijalni znakovi, tipa: "()[]<>|""
NULL is accepted statement:
string? - string koji može biti i null, ekvivalent tipu: string|null
int? - ekvivalent tipu int|null
int[1]? - ekvivalent tipu int[1]|null ili int?[1]
...itd.
CONTROL RESPONSE
a:int|b:string -> Za slučaj da je provjeravani objekt integer, fukcija vraća: {a:true}
this_is_integer:int|this_is_string:string -> Za slučaj da je provjeravani objekt integer, fukcija vraća: {this_is_integer:true}
a:array<b:int|c:string>|d:array<e:bool|f:float> -> Za objekt [1,1] funkcija vraća: {a:true, b:true}
-> Za objekt [1,"string"] funkcija vraća: {a:true, b:true} //iako array sadržava i string, ali provjera se kod ili statementa prekida nakon prvog ispunjenog uvjeta
-> Za objekt [4.2] funkcija vraća: {d:true, f:true} //iako array sadržava i string, ali provjera se kod ili statementa prekida nakon prvog ispunjenog uvjeta
-> Za ulaz "string" vraća {a:false}
array<a:int|b:string> -> Za ulaz "string" vraća -> false
//forsiranje control reponse-a
:array<a:int|b:string> -> Za objekt koji je string bi inače vratilo false. (Jer provjera nebi niti stigla unutar arraya koji ne postoji)
tako da u ovom slučaju da bi forsirali control response, moramo zakačiti bilo koji key: na početak izraza ...ili je dovoljno dodati i samo dvotočku.
//ključevi za kontroliranje responsa moraju spadati u skup karaktera: \w
ADDING CUSTOM TYPES
addCustomControlType("strlen4", function(x){return isString(x) && x.length==4});
array<strlen4> -> za ulaz ["abcd", "efgh"] -> vraća true