Class: Rake::LinkedList
| Relationships & Source Files | |
| Namespace Children | |
| Classes: | |
| Extension / Inclusion / Inheritance Descendants | |
| Subclasses: | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Instance Chain: 
          self,
          Enumerable
         | |
| Inherits: | Object | 
| Defined in: | lib/rake/linked_list.rb | 
Overview
Polylithic linked list structure used to implement several data structures in ::Rake.
Constant Summary
Class Method Summary
- 
    
      .cons(head, tail)  
    
    Cons a new head onto the tail list. 
- 
    
      .empty  
    
    The standard empty list class for the given LinkedListclass.
- 
    
      .make(*args)  
    
    Make a list out of the given arguments. 
- .new(head, tail = EMPTY) ⇒ LinkedList constructor protected
Instance Attribute Summary
- #empty? ⇒ Boolean readonly
- #head readonly
- #tail readonly
Instance Method Summary
- 
    
      #==(other)  
    
    Lists are structurally equivalent. 
- 
    
      #conj(item)  
    
    Polymorphically add a new element to the head of a list. 
- 
    
      #each  
    
    For each item in the list. 
- 
    
      #inspect  
    
    Same as #to_s, but with inspected items. 
- 
    
      #to_s  
    
    Convert to string: LL(item, item…). 
Constructor Details
    .new(head, tail = EMPTY)  ⇒ LinkedList  (protected)
  
Class Method Details
.cons(head, tail)
Cons a new head onto the tail list.
.empty
The standard empty list class for the given LinkedList class.
# File 'lib/rake/linked_list.rb', line 78
def self.empty self::EMPTY end
.make(*args)
Make a list out of the given arguments. This method is polymorphic
# File 'lib/rake/linked_list.rb', line 59
def self.make(*args) # return an EmptyLinkedList if there are no arguments return empty if !args || args.empty? # build a LinkedList by starting at the tail and iterating # through each argument # inject takes an EmptyLinkedList to start args.reverse.inject(empty) do |list, item| list = cons(item, list) list # return the newly created list for each item in the block end end
Instance Attribute Details
    #empty?  ⇒ Boolean  (readonly)
  
# File 'lib/rake/linked_list.rb', line 20
def empty? false end
#head (readonly)
[ GitHub ]# File 'lib/rake/linked_list.rb', line 8
attr_reader :head, :tail
#tail (readonly)
[ GitHub ]# File 'lib/rake/linked_list.rb', line 8
attr_reader :head, :tail
Instance Method Details
#==(other)
Lists are structurally equivalent.
#conj(item)
Polymorphically add a new element to the head of a list. The type of head node will be the same list type as the tail.
# File 'lib/rake/linked_list.rb', line 12
def conj(item) self.class.cons(item, self) end
#each
For each item in the list.
#inspect
Same as #to_s, but with inspected items.
# File 'lib/rake/linked_list.rb', line 42
def inspect items = map(&:inspect).join(", ") "LL(#{items})" end
#to_s
Convert to string: LL(item, item…)
# File 'lib/rake/linked_list.rb', line 36
def to_s items = map(&:to_s).join(", ") "LL(#{items})" end