class WordGenerator::Generator
Attributes
letters[R]
Public Class Methods
new(letters)
click to toggle source
# File lib/word_generator/generator.rb, line 7 def initialize(letters) @letters = parse_letters(letters) end
Public Instance Methods
generate(word_length)
click to toggle source
# File lib/word_generator/generator.rb, line 11 def generate(word_length) max_word_length = WordGenerator.configuration.max_word_length if word_length > max_word_length raise WordLengthTooLongError, "Word length cannot be longer than #{max_word_length}" end possible_words(word_length).select { |word| WordList.contains?(word) } end
Private Instance Methods
parse_letters(letters)
click to toggle source
# File lib/word_generator/generator.rb, line 22 def parse_letters(letters) letters_string = if letters.is_a?(String) letters elsif letters.is_a?(Array) letters.join else raise ArgumentError.new("String or Array of letters should be provided") end letters_string.gsub(/[^a-z]/i, "").split("") end
possible_words(word_length)
click to toggle source
# File lib/word_generator/generator.rb, line 34 def possible_words(word_length) @letters.permutation(word_length).to_a.map(&:join).uniq.sort end