Added check for non-alphabetic words master
authorHarishankar <v.harishankar@gmail.com>
Sun, 12 Dec 2010 14:37:29 +0000 (20:07 +0530)
committerHarishankar <v.harishankar@gmail.com>
Sun, 12 Dec 2010 14:37:29 +0000 (20:07 +0530)
Added exception and handler for non-alphabetic words in the
creator. This prevents creating words in the grid with numbers
or non-alphabetic symbols.

crosswordpuzzle.py
crosswordpuzzlecreator.py

index 7ee206f..6283920 100644 (file)
@@ -93,6 +93,11 @@ class TooLongWordException (Exception):
                self.word = word
                self.length = length
 
                self.word = word
                self.length = length
 
+# exception for words containing non-alpha characters
+class WordCharsException (Exception):
+       def __init__ (self, word):
+               self.word = word
+
 # exception for intersecting words
 class IntersectWordException (Exception):
        def __init__ (self, word, length):
 # exception for intersecting words
 class IntersectWordException (Exception):
        def __init__ (self, word, length):
@@ -431,6 +436,10 @@ class CrosswordPuzzle:
                # if the grid is frozen then abort
                self.assert_unfrozen_grid ()
 
                # if the grid is frozen then abort
                self.assert_unfrozen_grid ()
 
+               # if the word has non-alphabetic characters
+               if not word.isalpha ():
+                       raise WordCharsException (word)
+
                # if the word length greater than totalrows - startrow
                if len(word) > self.rows - row:
                        raise TooLongWordException (word, len(word))
                # if the word length greater than totalrows - startrow
                if len(word) > self.rows - row:
                        raise TooLongWordException (word, len(word))
@@ -485,6 +494,10 @@ class CrosswordPuzzle:
                # if the grid is frozen then abort
                self.assert_unfrozen_grid ()
 
                # if the grid is frozen then abort
                self.assert_unfrozen_grid ()
 
+               # if the word has non-alphabetic characters
+               if not word.isalpha ():
+                       raise WordCharsException (word)
+
                # is the word length greater than totalcols - startcol?
                if len(word) > self.cols - col:
                        raise TooLongWordException (word, len(word))
                # is the word length greater than totalcols - startcol?
                if len(word) > self.cols - col:
                        raise TooLongWordException (word, len(word))
index 334895d..baeccc5 100644 (file)
@@ -235,6 +235,8 @@ class CrosswordPuzzleCreator:
                        sys.stderr.write ("Word intersects badly with another word!\n")
                except crosswordpuzzle.FrozenGridException:
                        sys.stderr.write ("Word cannot be added to a frozen puzzle.\n")
                        sys.stderr.write ("Word intersects badly with another word!\n")
                except crosswordpuzzle.FrozenGridException:
                        sys.stderr.write ("Word cannot be added to a frozen puzzle.\n")
+               except crosswordpuzzle.WordCharsException:
+                       sys.stderr.write ("Non-word characters in word. Cannot add.\n")
 
        # Export to image/HTML
        def on_export_image (self, solution=True):
 
        # Export to image/HTML
        def on_export_image (self, solution=True):