X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=parser.js;h=6d028fd05e07e5f812a4a0238f13dbce54aa30ef;hb=0133e929ace3b602f7e280b5a8ed119836dc8172;hp=41eff934592d31c99143611465a7e1f001ae4f63;hpb=3ca1e50c87c462e39ba19b5c7720715353315080;p=erdiag.git diff --git a/parser.js b/parser.js index 41eff93..6d028fd 100644 --- a/parser.js +++ b/parser.js @@ -89,12 +89,12 @@ class ErDiags // attributes: ArrayOf {name, [isKey], [type], [qualifiers]} parseAttributes(lines, start, end) { - let attributes = []; + let attributes = [ ]; for (let i=start; i { let newTableAttrs = [ ]; + let hasZeroOne = false; a.entities.forEach( e => { if (['?','1'].includes(e.card[0])) { + hasZeroOne = true; // Foreign key apparition (for each entity in association minus current one, for each identifying attribute) a.entities.forEach( e2 => { if (e2.name == e.name) return; - e2.attributes.forEach( attr => { + this.entities[e2.name].attributes.forEach( attr => { if (attr.isKey) { this.tables[e.name].push({ @@ -223,7 +225,7 @@ class ErDiags }); } }); - if (newTableAttrs.length > 1) + if (!hasZeroOne && newTableAttrs.length > 1) { // Ok, really create a new table let newTable = { @@ -242,7 +244,7 @@ class ErDiags }); }); // Add relationship potential own attributes - a.attributes.forEach( attr => { + (a.attributes || [ ]).forEach( attr => { newTable.fields.push({ name: attr.name, isKey: false,