class WordSearch::Generator

Public Class Methods

new(file, x, y, z = nil) click to toggle source
Calls superclass method
# File lib/word_search/generator.rb, line 11
def initialize(file, x, y, z = nil)
  plane = Plane.make_from_coordinates(x, y, z)
  obj =
    if z.present?
      ThreeDimensional::Generator.new(plane, WordBank.new(file))
    else
      TwoDimensional::Generator.new(plane, WordBank.new(file))
    end

  super obj
end

Public Instance Methods

object() click to toggle source
# File lib/word_search/generator.rb, line 34
def object
  __getobj__
end
perform() click to toggle source
Calls superclass method
# File lib/word_search/generator.rb, line 23
def perform
  super

  if valid?
    plane.add_letters
    plane
  else
    false
  end
end

Private Instance Methods

can_words_fit?() click to toggle source
# File lib/word_search/generator.rb, line 40
def can_words_fit?
  errors.add(:base, words_too_long) if plane.max < word_bank.longest_length
end
valid_plane?() click to toggle source
# File lib/word_search/generator.rb, line 50
def valid_plane?
  return if plane.valid?

  plane.errors.full_messages.each do |msg|
    errors.add(:base, msg)
  end
end
valid_word_bank?() click to toggle source
# File lib/word_search/generator.rb, line 58
def valid_word_bank?
  return if word_bank.valid?

  word_bank.errors.full_messages.each do |msg|
    errors.add(:base, msg)
  end
end
words_too_long() click to toggle source
# File lib/word_search/generator.rb, line 44
def words_too_long
  "#{word_bank.longest_words.join(' and ')} "\
  "#{'is'.pluralize(word_bank.longest_words.count)} "\
  "too long for the word search"
end