Class: Ea::Diagram::ElementRenderers::BaseRenderer
- Inherits:
-
Object
- Object
- Ea::Diagram::ElementRenderers::BaseRenderer
- Includes:
- Util
- Defined in:
- lib/ea/diagram/element_renderers/base_renderer.rb
Overview
Base renderer for diagram elements
Direct Known Subclasses
Instance Attribute Summary collapse
-
#element ⇒ Object
readonly
Returns the value of attribute element.
-
#style_resolver ⇒ Object
readonly
Returns the value of attribute style_resolver.
Instance Method Summary collapse
- #escape_text(text) ⇒ Object
-
#initialize(element, style_resolver) ⇒ BaseRenderer
constructor
A new instance of BaseRenderer.
-
#render ⇒ String
Render the element as SVG.
-
#render_label(style) ⇒ Object
rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity.
- #render_shape(_style) ⇒ Object
Methods included from Util
#parse_ea_geometry, #parse_geometry_offsets, #style_to_css
Constructor Details
#initialize(element, style_resolver) ⇒ BaseRenderer
Returns a new instance of BaseRenderer.
12 13 14 15 |
# File 'lib/ea/diagram/element_renderers/base_renderer.rb', line 12 def initialize(element, style_resolver) @element = element @style_resolver = style_resolver end |
Instance Attribute Details
#element ⇒ Object (readonly)
Returns the value of attribute element.
10 11 12 |
# File 'lib/ea/diagram/element_renderers/base_renderer.rb', line 10 def element @element end |
#style_resolver ⇒ Object (readonly)
Returns the value of attribute style_resolver.
10 11 12 |
# File 'lib/ea/diagram/element_renderers/base_renderer.rb', line 10 def style_resolver @style_resolver end |
Instance Method Details
#escape_text(text) ⇒ Object
64 65 66 67 68 69 70 71 72 73 |
# File 'lib/ea/diagram/element_renderers/base_renderer.rb', line 64 def escape_text(text) return "" unless text text.to_s .gsub("&", "&") .gsub("<", "<") .gsub(">", ">") .gsub('"', """) .gsub("'", "'") end |
#render ⇒ String
Render the element as SVG
19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/ea/diagram/element_renderers/base_renderer.rb', line 19 def render style = style_resolver.resolve_element_style(element) <<~SVG <g class="lutaml-diagram-element lutaml-diagram-#{element[:type]}" data-element-id="#{element[:id]}" data-element-type="#{element[:type]}"> #{render_shape(style)} #{render_label(style)} </g> SVG end |
#render_label(style) ⇒ Object
rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/ea/diagram/element_renderers/base_renderer.rb', line 36 def render_label(style) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity return "" unless element[:name] x = element[:x] || 0 y = element[:y] || 0 width = element[:width] || 120 height = element[:height] || 80 # Center the label text_x = x + (width / 2) # Slight vertical offset for better centering text_y = y + (height / 2) + 5 <<~SVG <text x="#{text_x}" y="#{text_y}" text-anchor="middle" dominant-baseline="middle" font-family="#{style[:font_family]}" font-size="#{style[:font_size]}" font-weight="#{style[:font_weight] || 'normal'}" fill="#{style[:text_color] || '#000000'}" class="lutaml-diagram-label"> #{escape_text(element[:name])} </text> SVG end |
#render_shape(_style) ⇒ Object
32 33 34 |
# File 'lib/ea/diagram/element_renderers/base_renderer.rb', line 32 def render_shape(_style) "" end |