Sha256: a6856d515beaca9c8ae258485219127c0e8ccbf66c2affb0c31bf15133cef416
Contents?: true
Size: 1.3 KB
Versions: 2
Compression:
Stored size: 1.3 KB
Contents
# frozen_string_literal: true module WordSearch class Generator < SimpleDelegator include ActiveModel::Validations validate :can_words_fit? validate :valid_plane? validate :valid_word_bank? 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 def perform super if valid? plane.add_letters write_solution plane else false end end def object __getobj__ end private def can_words_fit? errors.add(:base, words_too_long) if plane.max < word_bank.longest_length end def words_too_long "#{word_bank.longest_words.join(' and ')} "\ "#{'is'.pluralize(word_bank.longest_words.count)} "\ "too long for the word search" end def valid_plane? return if plane.valid? plane.errors.full_messages.each do |msg| errors.add(:base, msg) end end def valid_word_bank? return if word_bank.valid? word_bank.errors.full_messages.each do |msg| errors.add(:base, msg) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
word_search-1.0.1 | lib/word_search/generator.rb |
word_search-1.0.0 | lib/word_search/generator.rb |