class VGen::VarWordGen

Public Class Methods

new( letter_gen: TypicalLetterGen.new, length: nil, size: (4..9), except: [] ) click to toggle source
# File lib/v_gen/var_word_gen.rb, line 5
def initialize(
      letter_gen: TypicalLetterGen.new,
      length: nil,
      size: (4..9),
      except: []
    )
  @length = length || size
  @letter_gen = letter_gen
  @except = except
end

Public Instance Methods

call() click to toggle source
# File lib/v_gen/var_word_gen.rb, line 16
def call()
  
  loop do
    word = Array.new(
      word_length,
      @letter_gen
    ).map(&:call).join
    if word.size > 2
      if Random.new.rand(1..100) < 15
        word[Random.new.rand(1..word.size - 2)] = "_"
      end
    end
    return word unless @except.include? word
  end
end

Private Instance Methods

word_length() click to toggle source
# File lib/v_gen/var_word_gen.rb, line 34
def word_length
  length = Random.new.rand(@length) if @length.is_a? Range
  length = @length if @length.is_a? Integer
  raise "length (size) can't be negative" if length < 0
  length
end