From d6c9499e06c65780d5f4c95664c2cb851ff6f2de Mon Sep 17 00:00:00 2001 From: Benjamin Auder <benjamin.auder@somewhere> Date: Wed, 31 Jan 2018 00:08:00 +0100 Subject: [PATCH] Fix accents issues. Now allowing any non-space characters in names --- parser.js | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/parser.js b/parser.js index 57cf81c..8a4c524 100644 --- a/parser.js +++ b/parser.js @@ -16,7 +16,7 @@ class ErDiags static get TYPES() { - // SQLite types without null (TODO: be more general) + // SQLite storage classes without null return ["integer","real","text","blob"]; } @@ -67,7 +67,7 @@ class ErDiags { case '[': // Entity = { name: { attributes, [weak] } } - let name = lines[start].match(/\w+/)[0]; + let name = lines[start].match(/[^\[\]\s]+/)[0]; let entity = { attributes: this.parseAttributes(lines, start+1, end) }; if (lines[start].charAt(1) == '[') entity.weak = true; @@ -79,7 +79,7 @@ class ErDiags case '{': //association // Association = { [name], [attributes], [weak], entities: ArrayOf entity indices } let relationship = { }; - let nameRes = lines[start].match(/\w+/); + let nameRes = lines[start].match(/[^{}\s]+/); if (nameRes !== null) relationship.name = nameRes[0]; if (lines[start].charAt(1) == '{') @@ -95,15 +95,20 @@ class ErDiags let attributes = []; for (let i=start; i<end; i++) { - let field = { name: lines[i].match(/\w+/)[0] }; - if (lines[i].charAt(0) == '#') + let field = { }; + let line = lines[i]; + if (line.charAt(0) == '#') + { field.isKey = true; - let parenthesis = lines[i].match(/\((.+)\)/); + line = line.slice(1); + } + field.name = line.match(/[^()\s]+/)[0]; + let parenthesis = line.match(/\((.+)\)/); if (parenthesis !== null) { let sqlClues = parenthesis[1]; let qualifiers = sqlClues; - let firstWord = sqlClues.match(/\w+/)[0]; + let firstWord = sqlClues.match(/[^\s]+/)[0]; if (ErDiags.TYPES.includes(firstWord)) { field.type = firstWord; @@ -257,7 +262,7 @@ class ErDiags ErDiags.AjaxGet(mcdDot, graphSvg => { this.mcdGraph = graphSvg; element.innerHTML = graphSvg; - }) + }); } // "Modèle logique des données" @@ -288,6 +293,11 @@ class ErDiags }); }); // this.graphMld = ... + //console.log(mldDot); + ErDiags.AjaxGet(mldDot, graphSvg => { + this.mldGraph = graphSvg; + element.innerHTML = graphSvg; + }); } fillSql(id) -- 2.44.0