class WordSearch::TwoDimensional::Plane

Public Class Methods

make_from_file(file, should_catalog: true) click to toggle source
# File lib/word_search/two_dimensional/plane.rb, line 44
def make_from_file(file, should_catalog: true)
  string = File.read(file).split("\n").reverse

  return false if (x_len = string.collect(&:length).uniq).count > 1 ||
                  x_len.blank?

  make_word_search(x_len, string, should_catalog: should_catalog)
end
new(x, y) click to toggle source
# File lib/word_search/two_dimensional/plane.rb, line 6
def initialize(x, y)
  @catalog = Catalog.new
  @x, @y = x, y

  initialize_plane do |x_point, y_point|
    self[x_point][y_point] = Point.new(x_point, y_point)
  end
end

Private Class Methods

add_to_catalog(plane, point, should_catalog = true) click to toggle source
# File lib/word_search/two_dimensional/plane.rb, line 69
def add_to_catalog(plane, point, should_catalog = true)
  return unless should_catalog

  plane.catalog[point.letter] ||= []
  plane.catalog[point.letter] << point
end

Public Instance Methods

add_letters() click to toggle source
Calls superclass method WordSearch::Plane::Base#add_letters
# File lib/word_search/two_dimensional/plane.rb, line 21
def add_letters
  super do |x_point, y_point|
    self[x_point][y_point].letter ||= random_letter
  end
end
directions() click to toggle source
# File lib/word_search/two_dimensional/plane.rb, line 35
def directions
  @directions ||= WordSearch::TwoDimensional::Direction
end
find_next_point(point, direction) click to toggle source
# File lib/word_search/two_dimensional/plane.rb, line 39
def find_next_point(point, direction)
  dig(point.x + direction[0], point.y + direction[1])
end
max() click to toggle source
# File lib/word_search/two_dimensional/plane.rb, line 31
def max
  [x, y].max
end
to_s() click to toggle source
# File lib/word_search/two_dimensional/plane.rb, line 15
def to_s
  values.map do |row|
    row.values.map(&:letter)
  end.transpose.reverse.map(&:join).join("\n")
end
total_points() click to toggle source
# File lib/word_search/two_dimensional/plane.rb, line 27
def total_points
  x * y
end