wisp
 
(Arne Babenhauserheide)
2013-03-20: added comment processing.

added comment processing.

diff --git a/example.w b/example.w
--- a/example.w
+++ b/example.w
@@ -4,7 +4,9 @@ defun a (b c)
       d "i am a string
 do not break me!"
       : 
+  ; comment
         f
+; comment
         ` g
       : 
         h (I am in brackets
diff --git a/wisp.py b/wisp.py
--- a/wisp.py
+++ b/wisp.py
@@ -33,13 +33,14 @@ class Line:
             self.indent += len(self.content) - len(self.content[2:].lstrip())
             self.content = self.content[2:].lstrip()
 
-        #: the indentation creates a new indentation level and must be kept TODO: not yet used
-        self.newlevel = False
-        if self.content.strip() == ":":
+        if self.content.strip() == ":" or self.content.strip() == "":
             self.content = ""
-            self.newlevel = True
-        elif self.content.strip() == "":
-            self.content = ""
+
+        #: Is the line effectively empty?
+        self.empty = False
+        onlycomment = line.split(";")[1:] and not line.split(";")[0].count('"') % 2
+        if line.strip() == "" or onlycomment:
+            self.empty = True
 
 
 def nostringbreaks(code):
@@ -92,8 +93,14 @@ def wisp2lisp(code):
     # process the first line in the file
     if not prev.continues:
         prev.content = prev.prefix + "(" + prev.content
-    # process further lines
+    # process further lines: adjust the content of the current line, but only append 
     for line in lines[1:]:
+        # ignore empty lines and comment-only lines
+        if line.empty:
+            # simply keep empty lines and ignore their indentation
+            lisplines.append(line.indent * " " + line.content)
+            continue
+        
         # care for leading brackets
         # continuing lines do not get a leading bracket.
         if not line.continues: