Module: Lutaml::Formatter::Graphviz::NodeFormatter
- Included in:
- Lutaml::Formatter::Graphviz
- Defined in:
- lib/lutaml/lml/formatter/graphviz/node_formatter.rb
Constant Summary collapse
- ACCESS_SYMBOLS =
{ 'public' => '+', 'protected' => '#', 'private' => '-' }.freeze
Instance Method Summary collapse
- #format_attribute(node) ⇒ Object
- #format_cardinality_bounds(cardinality) ⇒ Object
- #format_class(node, hide_members = nil) ⇒ Object
- #format_enum_literal(node) ⇒ Object
- #format_operation(node) ⇒ Object
- #format_operation_params(params) ⇒ Object
Instance Method Details
#format_attribute(node) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/lutaml/lml/formatter/graphviz/node_formatter.rb', line 13 def format_attribute(node) symbol = ACCESS_SYMBOLS[node.visibility] result = "#{symbol}#{node.name}" if node.type keyword = node.keyword ? "«#{node.keyword}»" : '' result += " : #{keyword}#{node.type}" end result += format_cardinality_bounds(node.cardinality) if node.cardinality result = escape_html_chars(result) result = "<U>#{result}</U>" if node.static result end |
#format_cardinality_bounds(cardinality) ⇒ Object
26 27 28 29 30 |
# File 'lib/lutaml/lml/formatter/graphviz/node_formatter.rb', line 26 def format_cardinality_bounds(cardinality) min = cardinality.min || '*' max = cardinality.max || '*' "[#{min}..#{max}]" end |
#format_class(node, hide_members = nil) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/lutaml/lml/formatter/graphviz/node_formatter.rb', line 51 def format_class(node, hide_members = nil) name = ["<B>#{escape_html_chars(node.name)}</B>"] name.unshift("«#{escape_html_chars(node.keyword)}»") if node.keyword name_html = build_name_table(name) member_formatter = node.is_a?(Lml::Enum) ? method(:format_enum_member) : nil field_table = format_member_rows(node.attributes, hide_members, &member_formatter) method_table = format_member_rows(node.operations, hide_members) if node.operations&.any? table_body = build_table_body(name_html, field_table, method_table) <<~HEREDOC.chomp <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="10"> #{table_body} </TABLE> HEREDOC end |
#format_enum_literal(node) ⇒ Object
68 69 70 |
# File 'lib/lutaml/lml/formatter/graphviz/node_formatter.rb', line 68 def format_enum_literal(node) "<I>#{escape_html_chars(node.name.to_s)}</I>" end |
#format_operation(node) ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/lutaml/lml/formatter/graphviz/node_formatter.rb', line 32 def format_operation(node) symbol = ACCESS_SYMBOLS[node.visibility] params = format_operation_params(node.owned_parameter) result = "#{symbol} #{node.name}(#{params})" result << " : #{node.return_type}" if node.return_type result = escape_html_chars(result) result = "<U>#{result}</U>" if node.is_static result = "<I>#{result}</I>" if node.is_abstract result end |
#format_operation_params(params) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/lutaml/lml/formatter/graphviz/node_formatter.rb', line 43 def format_operation_params(params) return '' unless params&.any? params.map do |param| param.type ? "#{param.name} : #{param.type}" : param.name.to_s end.join(', ') end |