class Courgette::NodeGrouper

Attributes

namespaces[R]
nodes[R]

Public Class Methods

new(nodes, max_groups) click to toggle source
# File lib/courgette/node_grouper.rb, line 3
def initialize nodes, max_groups
  @nodes = nodes
  @max_groups = max_groups

  calculate
end

Public Instance Methods

group(node) click to toggle source
# File lib/courgette/node_grouper.rb, line 10
def group node
  idx   = namespaces.index node[0...-1][0...1]
  idx ||= -1
  idx   = [2 + idx, @max_groups].min
end
groups() click to toggle source
# File lib/courgette/node_grouper.rb, line 16
def groups
  @namespaces
end

Private Instance Methods

calculate() click to toggle source
# File lib/courgette/node_grouper.rb, line 23
def calculate
  @namespaces = nodes.
    group_by { |n| n[0...-1][0...1] }.
    reject { |k, v| k.empty? || v.length < 4 }.
    map(&:first).
    uniq
end