@@ -359,21 +359,7 @@ function refFinder (ref, schema, externalSchema) {
359
359
return ( new Function ( 'schema' , code ) ) ( schema )
360
360
}
361
361
362
- function buildObject ( schema , code , name , externalSchema , fullSchema ) {
363
- code += `
364
- function ${ name } (obj) {
365
- var json = '{'
366
- var addComma = false
367
- `
368
-
369
- if ( schema . patternProperties ) {
370
- code += addPatternProperties ( schema , externalSchema , fullSchema )
371
- } else if ( schema . additionalProperties && ! schema . patternProperties ) {
372
- code += addAdditionalProperties ( schema , externalSchema , fullSchema )
373
- }
374
-
375
- var laterCode = ''
376
-
362
+ function buildCode ( schema , code , laterCode , name , externalSchema , fullSchema ) {
377
363
Object . keys ( schema . properties || { } ) . forEach ( ( key , i , a ) => {
378
364
// Using obj['key'] !== undefined instead of obj.hasOwnProperty(prop) for perf reasons,
379
365
// see https://github.com/mcollina/fast-json-stringify/pull/3 for discussion.
@@ -404,6 +390,38 @@ function buildObject (schema, code, name, externalSchema, fullSchema) {
404
390
`
405
391
} )
406
392
393
+ return { code : code , laterCode : laterCode }
394
+ }
395
+
396
+ function buildObject ( schema , code , name , externalSchema , fullSchema ) {
397
+ code += `
398
+ function ${ name } (obj) {
399
+ var json = '{'
400
+ var addComma = false
401
+ `
402
+
403
+ if ( schema . patternProperties ) {
404
+ code += addPatternProperties ( schema , externalSchema , fullSchema )
405
+ } else if ( schema . additionalProperties && ! schema . patternProperties ) {
406
+ code += addAdditionalProperties ( schema , externalSchema , fullSchema )
407
+ }
408
+
409
+ var laterCode = ''
410
+
411
+ if ( schema . allOf ) {
412
+ schema . allOf . forEach ( ( ss ) => {
413
+ var builtCode = buildCode ( ss , code , laterCode , name , externalSchema , fullSchema )
414
+
415
+ code = builtCode . code
416
+ laterCode = builtCode . laterCode
417
+ } )
418
+ } else {
419
+ var builtCode = buildCode ( schema , code , laterCode , name , externalSchema , fullSchema )
420
+
421
+ code = builtCode . code
422
+ laterCode = builtCode . laterCode
423
+ }
424
+
407
425
// Removes the comma if is the last element of the string (in case there are not properties)
408
426
code += `
409
427
json += '}'
0 commit comments