Module: Mermaid::ElementRenderers::ERDRelationshipRenderer
- Defined in:
- lib/mermaid/element_renderers/erd_relationship_renderer.rb
Overview
Module containing Mermaid rendering logic for Diagrams::ElementRenderers::ERDRelationship
Constant Summary collapse
- CARDINALITY_MAP =
Maps cardinality symbols from Diagrams::ElementRenderers::ERDRelationship::CARDINALITY to Mermaid syntax (using right-side convention).
{ ZERO_OR_ONE: 'o|', ONE_ONLY: '||', ZERO_OR_MORE: 'o{', # Corrected based on Mermaid docs ONE_OR_MORE: '|{' # Corrected based on Mermaid docs }.freeze
Instance Method Summary collapse
-
#to_mermaid_fragment ⇒ String
Generates the Mermaid fragment for this relationship.
Instance Method Details
#to_mermaid_fragment ⇒ String
Generates the Mermaid fragment for this relationship.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/mermaid/element_renderers/erd_relationship_renderer.rb', line 18 def to_mermaid_fragment # Fetch symbols, raise error if invalid key (shouldn't happen if Diagrams gem validates) left_symbol_raw = CARDINALITY_MAP.fetch(cardinality1) right_symbol = CARDINALITY_MAP.fetch(cardinality2) # Generate the left symbol by mirroring the right-side convention left_symbol = case left_symbol_raw when 'o{' then '}o' # Mirror zero or more when '|{' then '}|' # Mirror one or more else left_symbol_raw.reverse # Simple reverse for |o and || end # Always use '--' based on user feedback for compatibility id_symbol = '--' fragment = "\"#{entity1}\" " fragment << left_symbol # e.g., |o fragment << id_symbol # e.g., -- fragment << right_symbol # e.g., }| fragment << " \"#{entity2}\"" fragment << " : \"#{label}\"" if label && !label.strip.empty? fragment << "\n" fragment end |