Enteee / plantuml-parser

Parse PlantUML with JavaScript or TypeScript
https://duckpond.ch/category/plantuml-parser
Apache License 2.0
136 stars 33 forks source link

Angle brackets in generics and stereotypes not properly parsed #59

Open Enteee opened 4 years ago

Enteee commented 4 years ago

Describe the bug To some degree, angle brackets are allowed in generics and stereotypes. For example, the following diagram:

' Angle brackets in generics
class TestGenericsWithAngleBrackets < <G1> >
class TestGenericsWithDoubleAngleBrackets < <<G1>> >

' Angle brackets in stereotypes
class TestStereotypeWithAngleBrackets << <S1> >>
class TestStereotypeWithDoubleAngleBrackets << <<S1>> >>

produces the following diagram: angle-brackets

Currently we do not support this in the parser. Therefore the parsed result is:

[
  {
    "name": "anglebrackets",
    "diagrams": [
      {
        "elements": [
          {
            "comment": "Angle brackets in generics"
          },
          {
            "name": "TestGenericsWithAngleBrackets",
            "title": "TestGenericsWithAngleBrackets",
            "isAbstract": false,
            "members": [],
            "extends_": [],
            "implements_": [],
            "generics": "<G1",
            "stereotype": ""
          },
          {
            "name": "TestGenericsWithDoubleAngleBrackets",
            "title": "TestGenericsWithDoubleAngleBrackets",
            "isAbstract": false,
            "members": [],
            "extends_": [],
            "implements_": [],
            "generics": "<<G1",
            "stereotype": ""
          },
          {
            "comment": "Angle brackets in stereotypes"
          },
          {
            "name": "TestStereotypeWithAngleBrackets",
            "title": "TestStereotypeWithAngleBrackets",
            "isAbstract": false,
            "members": [],
            "extends_": [],
            "implements_": [],
            "generics": "",
            "stereotype": "<S1>"
          },
          {
            "name": "TestStereotypeWithDoubleAngleBrackets",
            "title": "TestStereotypeWithDoubleAngleBrackets",
            "isAbstract": false,
            "members": [],
            "extends_": [],
            "implements_": [],
            "generics": "",
            "stereotype": "<<S1"
          }
        ]
      }
    ]
  }
]

To Reproduce Steps to reproduce the behavior:

  1. Write diagram to file anglebrackets
  2. node dist/bin/cli.js -i anglebrackets

Expected behavior Angle brackets should be parsed properly and added to the generics and/or stereotype property.

Additional context

Double angle brackets:

class TestStereotypeWithDoubleAngleBrackets << <<S1>> >>

Is not properly handled by the original plantuml implementation.