48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Modula-2
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Modula-2
		
	
	
	
	
	
{{## def.assignDefault:
 | 
						|
  {{? it.compositeRule }}
 | 
						|
    {{
 | 
						|
      if (it.opts.strictDefaults) {
 | 
						|
        var $defaultMsg = 'default is ignored for: ' + $passData;
 | 
						|
        if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);
 | 
						|
        else throw new Error($defaultMsg);
 | 
						|
      }
 | 
						|
    }}
 | 
						|
  {{??}}
 | 
						|
    if ({{=$passData}} === undefined
 | 
						|
      {{? it.opts.useDefaults == 'empty' }}
 | 
						|
        || {{=$passData}} === null
 | 
						|
        || {{=$passData}} === ''
 | 
						|
      {{?}}
 | 
						|
    )
 | 
						|
      {{=$passData}} = {{? it.opts.useDefaults == 'shared' }}
 | 
						|
                         {{= it.useDefault($sch.default) }}
 | 
						|
                       {{??}}
 | 
						|
                         {{= JSON.stringify($sch.default) }}
 | 
						|
                       {{?}};
 | 
						|
  {{?}}
 | 
						|
#}}
 | 
						|
 | 
						|
 | 
						|
{{## def.defaultProperties:
 | 
						|
  {{
 | 
						|
    var $schema = it.schema.properties
 | 
						|
      , $schemaKeys = Object.keys($schema); }}
 | 
						|
  {{~ $schemaKeys:$propertyKey }}
 | 
						|
    {{ var $sch = $schema[$propertyKey]; }}
 | 
						|
    {{? $sch.default !== undefined }}
 | 
						|
      {{ var $passData = $data + it.util.getProperty($propertyKey); }}
 | 
						|
      {{# def.assignDefault }}
 | 
						|
    {{?}}
 | 
						|
  {{~}}
 | 
						|
#}}
 | 
						|
 | 
						|
 | 
						|
{{## def.defaultItems:
 | 
						|
  {{~ it.schema.items:$sch:$i }}
 | 
						|
    {{? $sch.default !== undefined }}
 | 
						|
      {{ var $passData = $data + '[' + $i + ']'; }}
 | 
						|
      {{# def.assignDefault }}
 | 
						|
    {{?}}
 | 
						|
  {{~}}
 | 
						|
#}}
 |