Add codefence, underscore emphasis
authorFrank Duncan <frank@consxy.com>
Mon, 10 Jan 2022 20:34:58 +0000 (14:34 -0600)
committerFrank Duncan <frank@consxy.com>
Mon, 10 Jan 2022 20:35:02 +0000 (14:35 -0600)
src/main/parse.lisp

index 74745bc750e392efe53821b680855b58081d5ebe..61f37e8e32cd3d5b50501862926890f131b0a50d 100644 (file)
@@ -49,8 +49,8 @@ DESCRIPTION:
        (append
         (list
          prev
-         (funcall function-to-call (subseq (cdr lines) 0 (or pos (length lines)))))
-        (parse-lines (nthcdr (1+ pos) (cdr lines))))))
+         (funcall function-to-call (subseq (cdr lines) 0 (or pos (1- (length lines))))))
+        (parse-lines (nthcdr (if pos (1+ pos) (length lines)) (cdr lines))))))
      (t (cons prev (parse-lines (cdr lines) parsed-line))))))))
 
 (defun parse-texts (line)
@@ -163,7 +163,17 @@ DESCRIPTION:
 (defline-parser "### *(.*)" inline-h3)
 (defline-parser "## *(.*)" inline-h2)
 (defline-parser "# *(.*)" inline-h1)
+
+; Ignore codefence
+(defline-parser "(```.*```.*)" default)
+
 (defline-parser "```(.*)" codefence)
+
+; If we start with a space after the asterisk, we really do want a list
+(defline-parser " *\\* (.*)" list-item)
+; Ignore list-tiem
+(defline-parser "(\\*\\*.*\\*\\*.*)" default)
+(defline-parser "(\\*.*\\*.*)" default)
 (defline-parser " *\\* *(.*)" list-item)
 (defline-parser " *" emptiness)
 (defline-parser "(.*)" default)
@@ -177,6 +187,11 @@ DESCRIPTION:
 (defun md-link (before text md-link after)
  (list before (a :href md-link (parse-texts text)) after))
 
+(defun inline-code (before during after)
+ (list before (code during) after))
+
 (definline-parser "(.*)\\[([^\\]]*)\\]\\(([^)]*)\\)(.*)" md-link)
 (definline-parser "(.*)\\*\\*(.*)\\*\\*(.*)" strength)
 (definline-parser "(.*)\\*(.*)\\*(.*)" emphasis)
+(definline-parser "(.*)_(.*)_(.*)" emphasis)
+(definline-parser "(.*)```(.*)```(.*)" inline-code)