class Admission::Index

Attributes

children[R]
items[R]

Public Class Methods

new() click to toggle source
# File lib/admission/index.rb, line 5
def initialize
  @items = []
  @children = {}
end

Public Instance Methods

==(other) click to toggle source
Calls superclass method
# File lib/admission/index.rb, line 35
def == other
  case other
    when Array
      to_list.eql? other
    else
      super
  end
end
Also aliased as: eql?
add(*add_items, **add_children) click to toggle source
# File lib/admission/index.rb, line 10
def add *add_items, **add_children
  @items |= add_items.flatten.map(&:to_sym)

  add_children.each do |key, list|
    child = @children[key] || Admission::Index.new
    child.add *list
    children[key] = child
  end

  self
end
eql?(other)
Alias for: ==
include?(*path) click to toggle source
# File lib/admission/index.rb, line 22
def include? *path
  item, *path = path
  item = item.to_sym

  if path.empty?
    items.include? item

  else
    child = children[item]
    child ? child.include?(*path) : false
  end
end
to_list() click to toggle source
# File lib/admission/index.rb, line 45
def to_list
  result_list = items.dup

  unless children.empty?
    result_children = children.inject Hash.new do |h, (key, index)|
      h[key] = index.to_list
      h
    end
    result_list.push result_children
  end

  result_list
end