JBZoo / Composer-Graph

Dependency graph visualization for composer.json (PHP + Composer) based on mermaid-js

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

When a requirement contains "-class" in name, it breaks the mermaid graph.

erdemuncuoglu opened this issue · comments

When a requirement contains "-class" in name, it breaks the mermaid graph and in output html it shows

Syntax error in graph
mermaid version 8.6.0

This happens after version 1.4.0. In version 1.3.2 it works.

Below is a sample composer.json to reproduce this issue.

{
  "name": "test/issue",
  "description": "Composer Graph Issue",
  "require": {
    "php": ">=8.1",
    "php-curl-class/php-curl-class": "9.14.3"
  }
}

Generated mermaid code snipped from output html.

graph LR;
test__issue == ">=8.1" ==> PHP;
php_curl_class__php_curl_class-->ext_curl;
php_curl_class__php_curl_class-->|">=7.0"|PHP;
test__issue == "9.14.3" ==> php_curl_class__php_curl_class;

subgraph "Your Package"
    test__issue("test/issue");
end
subgraph "Required"
    php_curl_class__php_curl_class("php-curl-class/php-curl-class@9.14.3");
end
subgraph "PHP Platform"
    PHP("PHP@8.1.18");
    ext_curl("ext-curl");
end

Error response from Mermaid Live Editor.

Error: Parse error on line 3:
...url_class__php_curl_class-->ext_curl;
-----------------------^
Expecting 'SEMI', 'NEWLINE', 'SPACE', 'EOF', 'SQS', 'AMP', 'STYLE_SEPARATOR', 'DOUBLECIRCLESTART', 'PS', '(-', 'STADIUMSTART', 'SUBROUTINESTART', 'VERTEX_WITH_PROPS_START', 'ALPHA', 'COLON', 'CYLINDERSTART', 'DIAMOND_START', 'TAGEND', 'TRAPSTART', 'INVTRAPSTART', 'START_LINK', 'LINK', 'DOWN', 'DEFAULT', 'NUM', 'COMMA', 'MINUS', 'BRKT', 'DOT', 'PUNCTUATION', 'UNICODE_TEXT', 'PLUS', 'EQUALS', 'MULT', 'UNDERSCORE', got 'CLASS'

I don't know the internals of mermaid so I don't have any clue why ..._class is tried to be parsed as a symbol class but just for the curiosity changing all occurrences to something like ..._classs successfully shows the diagram (Mermaid Live Editor)

Thank you for finding the issue.
I think I know how to fix it.

Just these days I'm going to do a release of the new major version.
I will add this fix to the release.