diff options
author | Matthias Benkard <code@mail.matthias.benkard.de> | 2007-08-05 02:58:30 +0200 |
---|---|---|
committer | Matthias Benkard <code@mail.matthias.benkard.de> | 2007-08-05 02:58:30 +0200 |
commit | da5cba03a6f921b9ef8c1bf5d41c0d0946c0e8a8 (patch) | |
tree | 397d43c92092d8c0a563eeefbd55f81888081c0e | |
parent | 6ad080f4eba61e1ee5aa5e30d4c28e2c11c47a86 (diff) |
Reimplement FIXUP-MARKDOWN-OUTPUT using PPCRE:REGEX-REPLACE-ALL.
darcs-hash:08197eaffc2b8a3d32256b27c39492f1a69f8fa0
-rw-r--r-- | utils.lisp | 32 |
1 files changed, 16 insertions, 16 deletions
@@ -49,22 +49,22 @@ (defun fixup-markdown-output (markup) ;; No, cl-markdown is certainly not perfect. - ;; - ;; First, convert "<a ...> bla</a>" into " <a ...>bla</a>" (note the - ;; excess space to the right of the opening tag in the unprocessed - ;; string, which we move to the left of the same opening tag, where we - ;; expect it to make more sense in the general case). - (loop - for matches = (ppcre:all-matches "<a [^>]*?> " markup) - while (not (null matches)) - do (progn - (setf markup - (replace markup markup :start1 (1+ (first matches)) - :end1 (second matches) - :start2 (first matches) - :end2 (1- (second matches)))) - (setf (elt markup (first matches)) #\Space))) - markup) + (reduce #'(lambda (string thing) + (destructuring-bind (regex . replacement) + thing + (ppcre:regex-replace-all regex + string + replacement))) + (load-time-value + (mapcar #'(lambda (thing) + (destructuring-bind (regex . replacement) + thing + (cons (ppcre:create-scanner regex) replacement))) + '(;; "<em>...</em> ." -> "<em>...</em>." + ("(</[^>]*?>) \\." . "\\1.") + ;; "<a ...> bla</a>" -> " <a ...>bla</a>" + ("(<a [^>]*?>) " . "\\1")))) + :initial-value markup)) (defun name-of-day (day-of-week) |