Moved stringify cruft into a render module.
[pseudoku.git] / pseudoku / render / text.py
diff --git a/pseudoku/render/text.py b/pseudoku/render/text.py
new file mode 100644 (file)
index 0000000..aab6c36
--- /dev/null
@@ -0,0 +1,37 @@
+from . import GridRenderer
+from ..grid import symbols
+
+class LineGridRenderer(GridRenderer):
+    """Renders a grid into a flat string, as puzzles are often presented in
+    plaintext collections.
+    """
+    pass
+
+
+class SquareGridRenderer(GridRenderer):
+    """Renders a grid as a square of characters."""
+
+    def after_row(self, row, new_box=False):
+        return '\n'
+
+
+class AsciiArtGridRenderer(SquareGridRenderer):
+    """Renders a questionably-pretty ASCII art drawing of a grid, with dividers
+    between rows and columns.
+    """
+
+    def inside_grid(self, grid):
+        box_header = '+' + '-' * grid._box_width
+        return box_header * grid._box_height + '+\n'
+
+    def inside_row(self, row):
+        return '|'
+
+    def after_row(self, row):
+        return '|\n'
+
+    def inside_cell(self, cell):
+        if cell.value:
+            return symbols[cell.value]
+        else:
+            return ' '