Class: Wildling::Client

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

Overview

Main enumerator. Prefer Wildling.create(...) from callers.

Instance Method Summary collapse

Constructor Details

#initialize(patterns, dictionaries = nil) ⇒ Client

Returns a new instance of Client.



10
11
12
13
14
15
# File 'lib/wildling/wildling.rb', line 10

def initialize(patterns, dictionaries = nil)
  @dictionaries = dictionaries || {}
  @generators = patterns.map { |pattern| Generator.new(pattern, @dictionaries) }
  @pattern_count = @generators.sum(&:count)
  @internal_index = 0
end

Instance Method Details

#countObject



21
22
23
# File 'lib/wildling/wildling.rb', line 21

def count
  @pattern_count
end

#generatorsObject



36
37
38
# File 'lib/wildling/wildling.rb', line 36

def generators
  @generators
end

#get(index) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/wildling/wildling.rb', line 40

def get(index)
  return false if index > @pattern_count - 1 || index < 0

  segment_index = 0
  @generators.each do |generator|
    pattern_index = index - segment_index
    return generator.get(pattern_index) if pattern_index < generator.count

    segment_index += generator.count
  end
  false
end

#indexObject



17
18
19
# File 'lib/wildling/wildling.rb', line 17

def index
  @internal_index
end

#nextObject



29
30
31
32
33
34
# File 'lib/wildling/wildling.rb', line 29

def next
  return false if @internal_index == @pattern_count

  @internal_index += 1
  get(@internal_index - 1)
end

#resetObject



25
26
27
# File 'lib/wildling/wildling.rb', line 25

def reset
  @internal_index = 0
end