Implemented the AcrossLite(tm) exporter
[getaclue.git] / crosswordpuzzle.py
index 4e291db..012450f 100644 (file)
@@ -73,6 +73,52 @@ class CrosswordPuzzle:
                        for j in range (cols):
                                self.data[i].append (GridItem ())
 
+       # get the AcrossLite(TM) data for exporting
+       def export_acrosslite (self, title, author, copyright):
+               # don't export if grid is frozen
+               if self.frozen_grid is False:
+                       raise FrozenGridException
+
+               across_data = []
+               across_data.append ("<ACROSS PUZZLE>\n")
+               across_data.append ("<TITLE>\n")
+               across_data.append (title + "\n")
+               across_data.append ("<AUTHOR>\n")
+               across_data.append (author + "\n")
+               across_data.append ("<COPYRIGHT>\n")
+               across_data.append (copyright + "\n")
+               across_data.append ("<SIZE>\n")
+               str_size = str (self.cols) + "x" + str (self.rows)
+               across_data.append (str_size + "\n")
+               across_data.append ("<GRID>\n")
+               for row in range (self.rows):
+                       for col in range (self.cols):
+                               if (self.data[row][col].occupied_across is True or
+                                       self.data[row][col].occupied_down is True):
+                                       across_data.append (self.data[row][col].char)
+                               else:
+                                       across_data.append (".")
+                       across_data.append ("\n")
+
+               across_data.append ("<ACROSS>\n")
+               clues_across = self.get_clues_across ()
+               for word, clue in clues_across:
+                       if clue:
+                               across_data.append (clue + "\n")
+                       else:
+                               across_data.append ("(No clue yet)\n")
+
+               across_data.append ("<DOWN>\n")
+               clues_down = self.get_clues_down ()
+               for word, clue in clues_down:
+                       if clue:
+                               across_data.append (clue + "\n")
+                       else:
+                               across_data.append ("(No clue yet\n")
+
+               acrosslite_str = "".join (across_data)
+               return acrosslite_str
+
        # get all the clues for across
        def get_clues_across (self):
                clues = []