63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | {{# def.definitions }} | ||
|  | {{# def.errors }} | ||
|  | {{# def.setupKeyword }} | ||
|  | {{# def.$data }} | ||
|  | 
 | ||
|  | 
 | ||
|  | {{? ($schema || $isData) && it.opts.uniqueItems !== false }} | ||
|  |   {{? $isData }} | ||
|  |     var {{=$valid}}; | ||
|  |     if ({{=$schemaValue}} === false || {{=$schemaValue}} === undefined) | ||
|  |       {{=$valid}} = true; | ||
|  |     else if (typeof {{=$schemaValue}} != 'boolean') | ||
|  |       {{=$valid}} = false; | ||
|  |     else { | ||
|  |   {{?}} | ||
|  | 
 | ||
|  |   var i = {{=$data}}.length | ||
|  |     , {{=$valid}} = true | ||
|  |     , j; | ||
|  |   if (i > 1) { | ||
|  |     {{ | ||
|  |       var $itemType = it.schema.items && it.schema.items.type | ||
|  |         , $typeIsArray = Array.isArray($itemType); | ||
|  |     }} | ||
|  |     {{? !$itemType || $itemType == 'object' || $itemType == 'array' || | ||
|  |         ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0)) }} | ||
|  |       outer: | ||
|  |       for (;i--;) { | ||
|  |         for (j = i; j--;) { | ||
|  |           if (equal({{=$data}}[i], {{=$data}}[j])) { | ||
|  |             {{=$valid}} = false; | ||
|  |             break outer; | ||
|  |           } | ||
|  |         } | ||
|  |       } | ||
|  |     {{??}} | ||
|  |       var itemIndices = {}, item; | ||
|  |       for (;i--;) { | ||
|  |         var item = {{=$data}}[i]; | ||
|  |         {{ var $method = 'checkDataType' + ($typeIsArray ? 's' : ''); }} | ||
|  |         if ({{= it.util[$method]($itemType, 'item', true) }}) continue; | ||
|  |         {{? $typeIsArray}} | ||
|  |           if (typeof item == 'string') item = '"' + item; | ||
|  |         {{?}} | ||
|  |         if (typeof itemIndices[item] == 'number') { | ||
|  |           {{=$valid}} = false; | ||
|  |           j = itemIndices[item]; | ||
|  |           break; | ||
|  |         } | ||
|  |         itemIndices[item] = i; | ||
|  |       } | ||
|  |     {{?}} | ||
|  |   } | ||
|  | 
 | ||
|  |   {{? $isData }}  }  {{?}} | ||
|  | 
 | ||
|  |   if (!{{=$valid}}) { | ||
|  |     {{# def.error:'uniqueItems' }} | ||
|  |   } {{? $breakOnError }} else { {{?}} | ||
|  | {{??}} | ||
|  |   {{? $breakOnError }} if (true) { {{?}} | ||
|  | {{?}} |