Markdown: if we find libmarkdown, register a renderer for text/x-markdown
authorWilfried Goesgens <dothebart@citadel.org>
Sat, 7 Dec 2013 17:01:03 +0000 (18:01 +0100)
committerWilfried Goesgens <dothebart@citadel.org>
Sat, 7 Dec 2013 17:01:03 +0000 (18:01 +0100)
webcit/configure.ac
webcit/debian/control
webcit/msg_renderers.c

index 4f4ad598e8161ea309050ab6ec391e8ec5e334e6..6e67b56c4305bada850172734420115d5e79cd2a 100644 (file)
@@ -234,6 +234,13 @@ AC_CHECK_HEADER(libical/ical.h,
        ]
 )
 
+dnl Checks for the discount markdown library.
+AC_CHECK_LIB(markdown,
+        markdown,
+        [
+        LDFLAGS="$LDFLAGS -lmarkdown"
+        AC_DEFINE(HAVE_MARKDOWN,[],[whether we have markdown message rendering])
+])
 
 dnl Check for libcitadel
 AC_CHECK_HEADER(libcitadel.h,
index 636cdbecfa690b6819674c3b42dab3e438b2cfd9..189fcdbf9cf11e0307f11d947e22c4162f349548 100644 (file)
@@ -3,7 +3,7 @@ Section: web
 Priority: extra
 Maintainer: Wilfried Goesgens <w.goesgens@outgesourced.org>
 Build-Depends: debhelper (>= 4), po-debconf, libical-dev (>=0.43), gettext, locales,
- libcitadel-dev (> 8.13), quilt (>= 0.40), autotools-dev, libssl-dev
+ libcitadel-dev (> 8.13), quilt (>= 0.40), autotools-dev, libssl-dev, libmarkdown-dev
 Standards-Version: 3.8.0
 
 Package: citadel-webcit
index 6fb4af2267c7276a064cb8b1732daf9f6f8df78e..2132a2dd42f2271c196cf0d5c6e9e38e846eb4af 100644 (file)
@@ -1137,6 +1137,29 @@ void render_MAIL_html(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset
        Mime->Data = Buf;
 }
 
+#ifdef HAVE_MARKDOWN
+void render_MAIL_markdown(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset)
+{
+#include <mkdio.h>
+       wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH);
+       MMIOT *doc;
+       char *md_as_html = NULL;
+
+       if (StrLength(Mime->Data) == 0)
+               return;
+
+       doc = mkd_string(ChrPtr(Mime->Data), StrLength(Mime->Data), 0);
+       mkd_compile(doc, 0);
+       if (mkd_document(doc, &md_as_html) != EOF) {
+               FreeStrBuf(&Mime->Data);
+               Mime->Data = NewStrBufPlain(md_as_html, -1);
+       }
+//     free(md_as_html);
+       mkd_cleanup(doc);
+
+}
+#endif
+
 void render_MAIL_UNKNOWN(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset)
 {
        wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH);
@@ -1598,6 +1621,9 @@ InitModule_MSGRENDERERS
        RegisterMimeRenderer(HKEY("text/plain"), render_MAIL_text_plain, 1, 3);
        RegisterMimeRenderer(HKEY("text"), render_MAIL_text_plain, 1, 1);
        RegisterMimeRenderer(HKEY("text/html"), render_MAIL_html, 1, 100);
+#ifdef HAVE_MARKDOWN
+       RegisterMimeRenderer(HKEY("text/x-markdown"), render_MAIL_markdown, 1, 30);
+#endif
        RegisterMimeRenderer(HKEY(""), render_MAIL_UNKNOWN, 0, 0);
 
        /* these headers are citserver replies to MSG4 and friends. one evaluator for each */