Class: Enf::Elephant

Inherits:
Object
  • Object
show all
Defined in:
lib/enf/elephant.rb

Overview

Represent a node of the graph

Defined Under Namespace

Classes: CannotRegister, Nope

Instance Method Summary collapse

Constructor Details

#initialize(default_leave_value = false) ⇒ Elephant

Returns a new instance of Elephant.



9
10
11
12
13
# File 'lib/enf/elephant.rb', line 9

def initialize(default_leave_value = false)
  @default_leave_value = default_leave_value
  @leave = default_leave_value
  @children = Hash.new { |hash, key| hash[key] = Elephant.new }
end

Instance Method Details

#include?(element) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
38
# File 'lib/enf/elephant.rb', line 35

def include?(element)
  return @default_leave_value if Input.invalid?(element)
  include_impl element
end

#include_impl(element) ⇒ Object



40
41
42
43
# File 'lib/enf/elephant.rb', line 40

def include_impl(element)
  return @leave if element.empty?
  @children.fetch(element[0]) { Nope.instance }.include_impl(element[1..-1])
end

#register!(element, payload = true) ⇒ Object



15
16
17
18
19
# File 'lib/enf/elephant.rb', line 15

def register!(element, payload = true)
  fail CannotRegister if frozen? || Input.invalid?(element)
  return (@leave = payload) if element.empty?
  @children[element[0]].register!(element[1..-1])
end