def export_image (self, pngfile, htmlfile=None, puztitle="Crossword Puzzle",
solution=True):
# don't export if grid is not frozen
- if self.frozen_grid is False:
- raise FrozenGridException
+ self.assert_frozen_grid ()
# create cairo image surface and context
px = 30
# get the AcrossLite(TM) data for exporting
def export_acrosslite (self, title, author, copyright):
# don't export if grid is not frozen
- if self.frozen_grid is False:
- raise FrozenGridException
+ self.assert_frozen_grid ()
across_data = []
across_data.append ("<ACROSS PUZZLE>\r\n")
# setting a down word
def set_word_down (self, row, col, word):
- # if the grid is frozen the abort
- if self.frozen_grid is True:
- raise FrozenGridException
+ # if the grid is frozen then abort
+ self.assert_unfrozen_grid ()
# if the word length greater than totalrows - startrow
if len(word) > self.rows - row:
# setting an across word
def set_word_across (self, row, col, word):
- # if the grid is frozen the abort
- if self.frozen_grid is True:
- raise FrozenGridException
+ # if the grid is frozen then abort
+ self.assert_unfrozen_grid ()
# is the word length greater than totalcols - startcol?
if len(word) > self.cols - col:
self.frozen_grid = False
+ # raise an exception if the grid is frozen
+ def assert_unfrozen_grid (self):
+ if self.frozen_grid is True:
+ raise FrozenGridException
+
+ # raise an exception if the grid is NOT frozen
+ def assert_frozen_grid (self):
+ if self.frozen_grid is False:
+ raise FrozenGridException
+
# reset the entire grid
def reset_grid (self):
# run through the grid
# remove an across word at position
def remove_word_across (self, row, col):
# if grid is frozen don't allow removal of word
- if self.frozen_grid is True:
- raise FrozenGridException
+ assert_unfrozen_grid ()
word, brow, bcol, l = self.get_word_across (row, col)
# remove a down word at position
def remove_word_down (self, row, col):
# if grid is frozen don't allow removal of word
- if self.frozen_grid is True:
- raise FrozenGridException
+ self.assert_unfrozen_grid ()
word, brow, bcol, l = self.get_word_down (row, col)
# traverse from the beginn to end of the word and erase it