X-Git-Url: https://harishankar.org/repos/?p=getaclue.git;a=blobdiff_plain;f=crosswordpuzzle.py;h=d02890b0ff1100cb360bbed54431afa1f2a3e6fd;hp=a02f469d21521818f2c4028966049cf8bbe0c81e;hb=e17ecb8ed14ad55b0ac2d1a45ae78b8452c8db18;hpb=30c57b62f1742d48bce4823ba13d60dd10176f93 diff --git a/crosswordpuzzle.py b/crosswordpuzzle.py index a02f469..d02890b 100644 --- a/crosswordpuzzle.py +++ b/crosswordpuzzle.py @@ -136,8 +136,7 @@ class CrosswordPuzzle: 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 @@ -226,8 +225,7 @@ class CrosswordPuzzle: # 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 ("\r\n") @@ -373,9 +371,8 @@ class CrosswordPuzzle: # 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: @@ -428,9 +425,8 @@ class CrosswordPuzzle: # 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: @@ -511,6 +507,16 @@ class CrosswordPuzzle: 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 @@ -524,8 +530,7 @@ class CrosswordPuzzle: # 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) @@ -541,8 +546,7 @@ class CrosswordPuzzle: # 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