mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-08-15 14:29:25 +02:00
fix(er): allow underscore as leading char
This commit is contained in:
@@ -125,6 +125,21 @@
|
|||||||
</pre>
|
</pre>
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
|
<pre class="mermaid">
|
||||||
|
erDiagram
|
||||||
|
_customer_order {
|
||||||
|
bigint id PK
|
||||||
|
bigint customer_id FK
|
||||||
|
text shipping_address
|
||||||
|
text delivery_method
|
||||||
|
timestamp_with_time_zone ordered_at
|
||||||
|
numeric total_tax_amount
|
||||||
|
numeric total_price
|
||||||
|
text payment_method
|
||||||
|
}
|
||||||
|
</pre>
|
||||||
|
<hr />
|
||||||
|
|
||||||
<script type="module">
|
<script type="module">
|
||||||
import mermaid from './mermaid.esm.mjs';
|
import mermaid from './mermaid.esm.mjs';
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
|
@@ -90,7 +90,7 @@ Mermaid syntax for ER diagrams is compatible with PlantUML, with an extension to
|
|||||||
|
|
||||||
Where:
|
Where:
|
||||||
|
|
||||||
- `first-entity` is the name of an entity. Names must begin with an alphabetic character and may also contain digits, hyphens, and underscores.
|
- `first-entity` is the name of an entity. Names must begin with an alphabetic character or an underscore (from v\<MERMAID_RELEASE_VERSION>+), and may also contain digits and hyphens.
|
||||||
- `relationship` describes the way that both entities inter-relate. See below.
|
- `relationship` describes the way that both entities inter-relate. See below.
|
||||||
- `second-entity` is the name of the other entity.
|
- `second-entity` is the name of the other entity.
|
||||||
- `relationship-label` describes the relationship from the perspective of the first entity.
|
- `relationship-label` describes the relationship from the perspective of the first entity.
|
||||||
|
@@ -66,7 +66,7 @@ o\{ return 'ZERO_OR_MORE';
|
|||||||
"optionally to" return 'NON_IDENTIFYING';
|
"optionally to" return 'NON_IDENTIFYING';
|
||||||
\.\- return 'NON_IDENTIFYING';
|
\.\- return 'NON_IDENTIFYING';
|
||||||
\-\. return 'NON_IDENTIFYING';
|
\-\. return 'NON_IDENTIFYING';
|
||||||
[A-Za-z][A-Za-z0-9\-_]* return 'ALPHANUM';
|
[A-Za-z_][A-Za-z0-9\-_]* return 'ALPHANUM';
|
||||||
. return yytext[0];
|
. return yytext[0];
|
||||||
<<EOF>> return 'EOF';
|
<<EOF>> return 'EOF';
|
||||||
|
|
||||||
|
@@ -33,7 +33,7 @@ describe('when parsing ER diagram it...', function () {
|
|||||||
describe('has non A-Za-z0-9_- chars', function () {
|
describe('has non A-Za-z0-9_- chars', function () {
|
||||||
// these were entered using the Mac keyboard utility.
|
// these were entered using the Mac keyboard utility.
|
||||||
const chars =
|
const chars =
|
||||||
"~ ` ! @ # $ ^ & * ( ) - _ = + [ ] { } | / ; : ' . ? ¡ ⁄ ™ € £ ‹ ¢ › ∞ fi § ‡ • ° ª · º ‚ ≠ ± œ Œ ∑ „ ® † ˇ ¥ Á ¨ ˆ ˆ Ø π ∏ “ « » å Å ß Í ∂ Î ƒ Ï © ˙ Ó ∆ Ô ˚ ¬ Ò … Ú æ Æ Ω ¸ ≈ π ˛ ç Ç √ ◊ ∫ ı ˜ µ  ≤ ¯ ≥ ˘ ÷ ¿";
|
"~ ` ! @ # $ ^ & * ( ) - = + [ ] { } | / ; : ' . ? ¡ ⁄ ™ € £ ‹ ¢ › ∞ fi § ‡ • ° ª · º ‚ ≠ ± œ Œ ∑ „ ® † ˇ ¥ Á ¨ ˆ ˆ Ø π ∏ “ « » å Å ß Í ∂ Î ƒ Ï © ˙ Ó ∆ Ô ˚ ¬ Ò … Ú æ Æ Ω ¸ ≈ π ˛ ç Ç √ ◊ ∫ ı ˜ µ  ≤ ¯ ≥ ˘ ÷ ¿";
|
||||||
const allowed = chars.split(' ');
|
const allowed = chars.split(' ');
|
||||||
|
|
||||||
allowed.forEach((allowedChar) => {
|
allowed.forEach((allowedChar) => {
|
||||||
@@ -170,6 +170,13 @@ describe('when parsing ER diagram it...', function () {
|
|||||||
expect(entities[firstEntity].alias).toBe(alias);
|
expect(entities[firstEntity].alias).toBe(alias);
|
||||||
expect(entities[secondEntity].alias).toBeUndefined();
|
expect(entities[secondEntity].alias).toBeUndefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('can start with an underscore', function () {
|
||||||
|
const entity = '_foo';
|
||||||
|
erDiagram.parser.parse(`erDiagram\n${entity}\n`);
|
||||||
|
const entities = erDb.getEntities();
|
||||||
|
expect(entities.hasOwnProperty(entity)).toBe(true);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('attribute name', () => {
|
describe('attribute name', () => {
|
||||||
|
@@ -56,7 +56,7 @@ Mermaid syntax for ER diagrams is compatible with PlantUML, with an extension to
|
|||||||
|
|
||||||
Where:
|
Where:
|
||||||
|
|
||||||
- `first-entity` is the name of an entity. Names must begin with an alphabetic character and may also contain digits, hyphens, and underscores.
|
- `first-entity` is the name of an entity. Names must begin with an alphabetic character or an underscore (from v<MERMAID_RELEASE_VERSION>+), and may also contain digits and hyphens.
|
||||||
- `relationship` describes the way that both entities inter-relate. See below.
|
- `relationship` describes the way that both entities inter-relate. See below.
|
||||||
- `second-entity` is the name of the other entity.
|
- `second-entity` is the name of the other entity.
|
||||||
- `relationship-label` describes the relationship from the perspective of the first entity.
|
- `relationship-label` describes the relationship from the perspective of the first entity.
|
||||||
|
Reference in New Issue
Block a user