diagrams:
  t00050_class:
    type: class
    glob:
      - t00050.cc
    comment_parser: clang
    include:
      namespaces:
        - clanguml::t00050
    using_namespace: clanguml::t00050
    user_data:
      c_comment:
        position: top
        comment: >
          Jinja templates can use properties from 'user_data' directly
    plantuml:
      after:
        - >
          note left of {{ alias("NoSuchClass") }}
             {{ comment("NoSuchClass").formatted }}
          end note
        - >
          note left of {{ alias("A") }}
             {{ comment("clanguml::t00050::A").formatted }}
          end note
        - >
          note {{ user_data.c_comment.position }} of {{ alias("A") }}
             {{ trim(user_data.c_comment.comment) }}
          end note
        - >
          note right of {{ element("clanguml::t00050::A").alias }}
             {% set e=element("clanguml::t00050::A") %} {{ e.comment.formatted }}
          end note
        - >
          note left of {{ alias("C") }} #AABBCC
             {{ trim(comment("clanguml::t00050::C").text) }}
          end note
        - >
          {% set cmt=comment("clanguml::t00050::G").paragraph %}
          note top of {{ alias("G") }}
             {{ trim(cmt.0) }}
          end note

          note right of {{ alias("G") }}
             {{ trim(cmt.1) }}
          end note

          note bottom of {{ alias("G") }}
             {{ trim(cmt.2) }}
          end note
        - >
          {# Render brief comments and todos, if any were written for an element #}
          {% for e in diagram.elements %}
          {% if existsIn(e, "comment") and existsIn(e.comment, "brief") %}
  
          note top of {{ e.alias }} {% if e.type == "class" %} #22AA22 {% else %} #2222AA {% endif %}
             {% set c=e.comment %} {{ c.brief.0 }}
          end note
          
          {% endif %}
          {% if existsIn(e, "comment") and existsIn(e.comment, "todo") %}
          {% set c=e.comment %} 
          {% for t in c.todo %}
          note top of {{ e.alias }} #882222
             **TODO**
             {{ t }}
          end note
          
          {% endfor %}

          {% endif %}
          {# Render template parameters if any #}
          {% if existsIn(e, "comment") and existsIn(e.comment, "tparam") %}
          {% set c=e.comment %} 

          note top of {{ e.alias }} #AAAAFF           
             **Template parameters**
             {% for tp in c.tparam %}
             //{{ tp.name }}// {{ trim(tp.description) }}        
             {% endfor %}
          end note

          {% endif %}
          {% endfor %}
    mermaid:
      after:
        - |
          note for {{ alias("NoSuchClass") }} "{{ comment("NoSuchClass").formatted }}"
        - |
          note for {{ alias("A") }} "{{ comment("clanguml::t00050::A").formatted }}"
        - |
          note for {{ alias("A") }} "{{ trim(user_data.c_comment.comment) }}"
        - |
          note for {{ element("clanguml::t00050::A").alias }} {% set e=element("clanguml::t00050::A") %} "{{ e.comment.formatted }}"
          note for {{ alias("C") }} "{{ trim(comment("clanguml::t00050::C").text) }}"
          {% set cmt=comment("clanguml::t00050::G").paragraph %}
          note for {{ alias("G") }} "{{ trim(cmt.0) }}"
          note for {{ alias("G") }} "{{ trim(cmt.1) }}"
          note for {{ alias("G") }} "{{ trim(cmt.2) }}"
        - |
          {# Render brief comments and todos, if any were written for an element #}
          {% for e in diagram.elements %}
          {% if existsIn(e, "comment") and existsIn(e.comment, "brief") %}
          note for {{ e.alias }} {% set c=e.comment %} "{{ c.brief.0 }}"
          {% endif %}
          {% if existsIn(e, "comment") and existsIn(e.comment, "todo") %}
          {% set c=e.comment %}
          {% for t in c.todo %}
          note for {{ e.alias }} "**TODO** {{ t }}"
          {% endfor %}
          {% endif %}
          {% endfor %}
