Class: Enf::Elephant
- Inherits:
-
Object
- Object
- Enf::Elephant
- Defined in:
- lib/enf/elephant.rb
Overview
Represent a node of the graph
Defined Under Namespace
Classes: CannotRegister, Nope
Instance Method Summary collapse
- #include?(element) ⇒ Boolean
- #include_impl(element) ⇒ Object
-
#initialize(default_leave_value = false) ⇒ Elephant
constructor
A new instance of Elephant.
- #register!(element, payload = true) ⇒ Object
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
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 |