Class: Aspen::Renderers::GexfRenderer

Inherits:
AbstractRenderer show all
Defined in:
lib/aspen/renderers/gexf_renderer.rb

Instance Attribute Summary

Attributes inherited from AbstractRenderer

#environment, #statements

Instance Method Summary collapse

Methods inherited from AbstractRenderer

#initialize

Constructor Details

This class inherits a constructor from AbstractRenderer

Instance Method Details

#nodesObject



21
22
23
24
25
26
27
28
29
30
# File 'lib/aspen/renderers/gexf_renderer.rb', line 21

def nodes
  statements.flat_map(&:nodes).map do |node|
    attrs = node.attributes.map do |k, v|
      "#{k}=\"#{v}\""
    end.join(" ")
    "      <node id=\"\#{node.nickname}\" label=\"\#{node.label}\" \#{attrs}>\n    GEXF\n  end\nend\n"

#relationshipsObject



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/aspen/renderers/gexf_renderer.rb', line 32

def relationships
  # @todo: Add in Custom Statements
  statements.map.with_index do |st, id|
    if st.is_a? Aspen::CustomStatement
      next # NO OP
    else
      "        <edge id=\"\#{id}\" source=\"\#{st.origin.nickname}\" target=\"\#{st.target.nickname}\" label=\"\#{st.edge.label}\">\n      GEXF\n    end\n  end.compact\nend\n"

#renderObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/aspen/renderers/gexf_renderer.rb', line 5

def render
  joiner = "\n            "
  "    <gexf xmlns=\"http://www.gexf.net/1.2draft\" version=\"1.2\">\n        <graph mode=\"static\" defaultedgetype=\"directed\">\n            <nodes>\n                \#{nodes.map(&:strip).join(joiner)}\n            </nodes>\n            <edges>\n                \#{relationships.map(&:strip).join(joiner)}\n            </edges>\n        </graph>\n    </gexf>\n  GEXF\nend\n"