Class: Macrocosm::Links
- Inherits:
-
Object
- Object
- Macrocosm::Links
- Defined in:
- lib/macrocosm.rb
Constant Summary collapse
- MaxCurveness =
0.7
- CurvenessRange =
MaxCurveness - 0.1
Instance Method Summary collapse
- #add_link(source, target, relation_in_list: nil, relation_in_graph: nil, line_style: {}) ⇒ Object
- #calc_curveness(link) ⇒ Object
-
#initialize ⇒ Links
constructor
A new instance of Links.
- #links ⇒ Object
Constructor Details
#initialize ⇒ Links
Returns a new instance of Links.
13 14 15 16 17 |
# File 'lib/macrocosm.rb', line 13 def initialize @links = [] @links_on_same_ends = Hash.new{ |h, k| h[k] = 0 } @last_curveness = Hash.new{ |h, k| h[k] = MaxCurveness.dup } end |
Instance Method Details
#add_link(source, target, relation_in_list: nil, relation_in_graph: nil, line_style: {}) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/macrocosm.rb', line 19 def add_link(source, target, relation_in_list: nil, relation_in_graph: nil, line_style: {}) ends = [source, target].sort!.join link = { ends: ends, lineStyle: line_style, source: source, target: target } link[:relation_in_list] = relation_in_list if relation_in_list link[:relation_in_graph] = relation_in_graph if relation_in_graph @links << link @links_on_same_ends[ends] += 1 end |
#calc_curveness(link) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/macrocosm.rb', line 43 def calc_curveness(link) ends = link[:ends] count = @links_on_same_ends[ends] return 0 if count == 0 step = (CurvenessRange / count).round(2) @last_curveness[ends] -= step end |
#links ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/macrocosm.rb', line 35 def links @links.map do |link| link[:lineStyle][:curveness] = calc_curveness(link) link.delete(:ends) link end end |