class Macrocosm::Links
Constants
- CurvenessRange
- MaxCurveness
Public Class Methods
new()
click to toggle source
# 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
Public Instance Methods
add_link(source, target, relation_in_list: nil, relation_in_graph: nil, line_style: {})
click to toggle source
# 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)
click to toggle source
# 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()
click to toggle source
# File lib/macrocosm.rb, line 35 def links @links.map do |link| link[:lineStyle][:curveness] = calc_curveness(link) link.delete(:ends) link end end