Class: RailsERD::Diagram::Mermaid
- Inherits:
-
RailsERD::Diagram
- Object
- RailsERD::Diagram
- RailsERD::Diagram::Mermaid
- Defined in:
- lib/rails_erd/diagram/mermaid.rb
Instance Attribute Summary collapse
-
#graph ⇒ Object
Returns the value of attribute graph.
Attributes inherited from RailsERD::Diagram
Instance Method Summary collapse
- #arrow_body(relationship) ⇒ Object
- #arrow_head(relationship) ⇒ Object
- #arrow_tail(relationship) ⇒ Object
- #attribute_key_marker(attr) ⇒ Object
- #diagram_type ⇒ Object
- #er_diagram? ⇒ Boolean
-
#er_relation_notation(relationship) ⇒ Object
erDiagram relationship notation using crow’s foot Format: left_cardinality–right_cardinality Cardinality markers: || = exactly one o| = zero or one }| = one or more }o = zero or more.
- #filename ⇒ Object
-
#quote_entity_name(name) ⇒ Object
- Quote entity names that contain special characters (like
-
for namespaces) Mermaid erDiagram requires double quotes for names with special characters.
-
#relation_arrow(relationship) ⇒ Object
classDiagram relationship arrows (legacy).
Methods inherited from RailsERD::Diagram
create, #create, #generate, #initialize, #recurse_into_relationships, #save
Constructor Details
This class inherits a constructor from RailsERD::Diagram
Instance Attribute Details
#graph ⇒ Object
Returns the value of attribute graph.
10 11 12 |
# File 'lib/rails_erd/diagram/mermaid.rb', line 10 def graph @graph end |
Instance Method Details
#arrow_body(relationship) ⇒ Object
150 151 152 |
# File 'lib/rails_erd/diagram/mermaid.rb', line 150 def arrow_body(relationship) relationship.indirect? ? ".." : "--" end |
#arrow_head(relationship) ⇒ Object
154 155 156 |
# File 'lib/rails_erd/diagram/mermaid.rb', line 154 def arrow_head(relationship) relationship.to_many? ? ">" : "" end |
#arrow_tail(relationship) ⇒ Object
158 159 160 |
# File 'lib/rails_erd/diagram/mermaid.rb', line 158 def arrow_tail(relationship) relationship.many_to? ? "<" : "" end |
#attribute_key_marker(attr) ⇒ Object
134 135 136 137 138 139 |
# File 'lib/rails_erd/diagram/mermaid.rb', line 134 def attribute_key_marker(attr) markers = [] markers << "PK" if attr.primary_key? markers << "FK" if attr.foreign_key? markers.empty? ? "" : " #{markers.join(',')}" end |
#diagram_type ⇒ Object
88 89 90 |
# File 'lib/rails_erd/diagram/mermaid.rb', line 88 def diagram_type er_diagram? ? "erDiagram" : "classDiagram" end |
#er_diagram? ⇒ Boolean
92 93 94 |
# File 'lib/rails_erd/diagram/mermaid.rb', line 92 def er_diagram? [:mermaid_style] == :erdiagram || [:mermaid_style] == :er end |
#er_relation_notation(relationship) ⇒ Object
erDiagram relationship notation using crow’s foot Format: left_cardinality–right_cardinality Cardinality markers:
|| = exactly one
o| = zero or one
}| = one or more
}o = zero or more
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/rails_erd/diagram/mermaid.rb', line 114 def er_relation_notation(relationship) line = relationship.indirect? ? ".." : "--" # Left side (source cardinality - how many source entities relate to one destination) left = if relationship.many_to? relationship.source_optional? ? "o{" : "|{" else relationship.source_optional? ? "o|" : "||" end # Right side (destination cardinality - how many destination entities relate to one source) right = if relationship.to_many? relationship.destination_optional? ? "}o" : "}|" else relationship.destination_optional? ? "|o" : "||" end "#{left}#{line}#{right}" end |
#filename ⇒ Object
84 85 86 |
# File 'lib/rails_erd/diagram/mermaid.rb', line 84 def filename "#{.filename}.mmd" end |
#quote_entity_name(name) ⇒ Object
- Quote entity names that contain special characters (like
-
for namespaces)
Mermaid erDiagram requires double quotes for names with special characters
98 99 100 101 102 103 104 105 |
# File 'lib/rails_erd/diagram/mermaid.rb', line 98 def quote_entity_name(name) name = name.to_s if name.include?("::") %("#{name}") else name end end |
#relation_arrow(relationship) ⇒ Object
classDiagram relationship arrows (legacy)
142 143 144 145 146 147 148 |
# File 'lib/rails_erd/diagram/mermaid.rb', line 142 def relation_arrow(relationship) arrow_body = arrow_body relationship arrow_head = arrow_head relationship arrow_tail = arrow_tail relationship "#{arrow_tail}#{arrow_body}#{arrow_head}" end |