Class: Ea::Diagram::SvgRenderer
- Inherits:
-
Object
- Object
- Ea::Diagram::SvgRenderer
- Includes:
- Util
- Defined in:
- lib/ea/diagram/svg_renderer.rb
Overview
Main SVG renderer for EA diagrams
Constant Summary collapse
- DEFAULT_OPTIONS =
{ padding: 20, background_color: "#ffffff", grid_visible: false, interactive: false, css_classes: [], }.freeze
Instance Attribute Summary collapse
-
#bounds ⇒ Object
readonly
Returns the value of attribute bounds.
-
#diagram_renderer ⇒ Object
readonly
Returns the value of attribute diagram_renderer.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#style_resolver ⇒ Object
readonly
Returns the value of attribute style_resolver.
Instance Method Summary collapse
-
#determine_marker_type(connector_type) ⇒ Object
rubocop:disable Metrics/CyclomaticComplexity,Metrics/MethodLength.
-
#initialize(diagram_renderer, options = {}) ⇒ SvgRenderer
constructor
A new instance of SvgRenderer.
-
#render ⇒ String
Render the complete SVG diagram.
Methods included from Util
#parse_ea_geometry, #parse_geometry_offsets, #style_to_css
Constructor Details
#initialize(diagram_renderer, options = {}) ⇒ SvgRenderer
Returns a new instance of SvgRenderer.
19 20 21 22 23 24 |
# File 'lib/ea/diagram/svg_renderer.rb', line 19 def initialize(diagram_renderer, = {}) @diagram_renderer = diagram_renderer @options = DEFAULT_OPTIONS.merge() @bounds = diagram_renderer.bounds @style_resolver = StyleResolver.new([:config_path]) end |
Instance Attribute Details
#bounds ⇒ Object (readonly)
Returns the value of attribute bounds.
9 10 11 |
# File 'lib/ea/diagram/svg_renderer.rb', line 9 def bounds @bounds end |
#diagram_renderer ⇒ Object (readonly)
Returns the value of attribute diagram_renderer.
9 10 11 |
# File 'lib/ea/diagram/svg_renderer.rb', line 9 def diagram_renderer @diagram_renderer end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
9 10 11 |
# File 'lib/ea/diagram/svg_renderer.rb', line 9 def @options end |
#style_resolver ⇒ Object (readonly)
Returns the value of attribute style_resolver.
9 10 11 |
# File 'lib/ea/diagram/svg_renderer.rb', line 9 def style_resolver @style_resolver end |
Instance Method Details
#determine_marker_type(connector_type) ⇒ Object
rubocop:disable Metrics/CyclomaticComplexity,Metrics/MethodLength
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/ea/diagram/svg_renderer.rb', line 41 def determine_marker_type(connector_type) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/MethodLength normalized_type = connector_type.to_s.downcase case normalized_type when "generalization", "inheritance" { end: "url(#generalization-arrow)" } when "aggregation" { start: "url(#aggregation-arrow)" } when "composition" { start: "url(#composition-arrow)" } when "dependency" { end: "url(#dependency-arrow)" } when "realization", "implementation" { end: "url(#realization-arrow)" } else { end: "url(#association-arrow)" } end end |
#render ⇒ String
Render the complete SVG diagram
28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/ea/diagram/svg_renderer.rb', line 28 def render # rubocop:disable Metrics/AbcSize svg_content = +"" svg_content << svg_header svg_content << defs_section svg_content << background_layer svg_content << grid_layer if [:grid_visible] svg_content << connectors_layer svg_content << elements_layer svg_content << interactive_layer if [:interactive] svg_content << svg_content end |