Class: Rake::LinkedList (Ruby 2.7.5)
Description: Class : Rake::LinkedList - Ruby 2.7.5

### Home Classes Methods

### In Files

- rake-13.0.1/lib/rake/linked_list.rb

### Parent

Object

### Namespace

- CLASS Rake::LinkedList::EmptyLinkedList

### Methods

- ::cons
- ::empty
- ::make
- ::new
- #==
- #conj
- #each
- #empty?
- #inspect
- #to_s

### Included Modules

- Enumerable

### Files

- CONTRIBUTING.rdoc
- History.rdoc
- README.rdoc
- command_line_usage.rdoc
- glossary.rdoc
- proto_rake.rdoc
- rakefile.rdoc
- rational.rdoc

### Class/Module Index

Quicksearch

- FileUtils
- Module
- Object
- RDoc
- RDoc::Page
- Rake::Application
- Rake::DSL
- Rake::DefaultLoader
- Rake::EarlyTime
- Rake::FileCreationTask
- Rake::FileList
- Rake::FileTask
- Rake::FileUtilsExt
- Rake::InvocationChain
- Rake::InvocationChain::EmptyInvocationChain
- Rake::InvocationExceptionMixin
- Rake::LateTime
- Rake::LinkedList
- Rake::LinkedList::EmptyLinkedList
- Rake::MakefileLoader
- Rake::MultiTask
- Rake::NameSpace
- Rake::PackageTask
- Rake::PrivateReader
- Rake::RakeFileUtils
- Rake::RuleRecursionOverflowError
- Rake::Scope
- Rake::Task
- Rake::TaskArgumentError
- Rake::TaskArguments
- Rake::TaskLib
- Rake::TaskManager
- Rake::TestTask
- Rake::Win32
- String

No matching classes.

# Rake::LinkedList

Polylithic linked list structure used to implement several data structures in Rake.

### Constants

EMPTY

### Attributes

head[R]
tail[R]

### Public Class Methods

cons(head, tail) click to toggle source

Cons a new head onto the tail list.

                   # File rake-13.0.1/lib/rake/linked_list.rb, line 73
    def self.cons(head, tail)
      new(head, tail)
    end

empty() click to toggle source

The standard empty list class for the given `LinkedList` class.

                   # File rake-13.0.1/lib/rake/linked_list.rb, line 78
    def self.empty
      self::EMPTY
    end

make(*args) click to toggle source

Make a list out of the given arguments. This method is polymorphic

                   # File rake-13.0.1/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

new(head, tail=EMPTY) click to toggle source

                   # File rake-13.0.1/lib/rake/linked_list.rb, line 84
    def initialize(head, tail=EMPTY)
      @head = head
      @tail = tail
    end

### Public Instance Methods

==(other) click to toggle source

Lists are structurally equivalent.

                   # File rake-13.0.1/lib/rake/linked_list.rb, line 25
    def ==(other)
      current = self
      while !current.empty? && !other.empty?
        return false if current.head != other.head
        current = current.tail
        other = other.tail
      end
      current.empty? && other.empty?
    end

conj(item) click to toggle source

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 rake-13.0.1/lib/rake/linked_list.rb, line 12
    def conj(item)
      self.class.cons(item, self)
    end

each() click to toggle source

For each item in the list.

                   # File rake-13.0.1/lib/rake/linked_list.rb, line 48
    def each
      current = self
      while !current.empty?
        yield(current.head)
        current = current.tail
      end
      self
    end

empty?() click to toggle source

Is the list empty? .make guards against a list being empty making any instantiated `LinkedList` object not empty by default You should consider overriding this method if you implement your own .make method

                   # File rake-13.0.1/lib/rake/linked_list.rb, line 20
    def empty?
      false
    end

inspect() click to toggle source

Same as `to_s`, but with inspected items.

                   # File rake-13.0.1/lib/rake/linked_list.rb, line 42
    def inspect
      items = map(&:inspect).join(", ")
      "LL(#{items})"
    end

to_s() click to toggle source

Convert to string: LL(item, item…)

                   # File rake-13.0.1/lib/rake/linked_list.rb, line 36
    def to_s
      items = map(&:to_s).join(", ")
      "LL(#{items})"
    end