Class: Ea::Svg::EaEmitter::Element::TaggedValueRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/ea/svg/ea_emitter/element/tagged_value_renderer.rb

Overview

Emits the tagged-values compartment text <g>. EA renders tagged values as a sub-compartment below attributes with an italic "tags" header followed by key = value lines:

<text style="...font-style:italic;...">tags</text>
<text style="...font-style:normal;...">isCollection = false</text>
<text style="...font-style:normal;...">noPropertyType = false</text>

Constant Summary collapse

HEADER_TEXT =
"tags"
HEADER_X_OFFSET =
5
LINE_X_OFFSET =
5

Class Method Summary collapse

Class Method Details

.render(tagged_values, bounds:, first_y:, family:, size:, fill: "#000000") ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/ea/svg/ea_emitter/element/tagged_value_renderer.rb', line 19

def self.render(tagged_values, bounds:, first_y:, family:, size:, fill: "#000000")
  line_h = size + 4
  text_blocks = []
  text_blocks << build_text(bounds.x + centered_x_offset(bounds, size), first_y,
                             HEADER_TEXT, family, size, fill, style: "italic")
  tagged_values.each_with_index do |tv, idx|
    y = first_y + ((idx + 1) * line_h)
    text_blocks << build_text(bounds.x + LINE_X_OFFSET, y,
                                "#{tv.key} = #{tv.value}", family, size, fill)
  end
  %(<g style="#{Style::TEXT_GROUP}">\n#{text_blocks.join("\n")}\n</g>)
end