Print this page
*** 1,7 ****
--- 1,8 ----
/*
* Copyright (c) 2009-2020 Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
+ * Copyright 2020, Kebe Software & Services
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
*** 240,249 ****
--- 241,273 ----
ASSERT(post->body);
return 0;
}
+ static int
+ __do_load_post_body_fmt4(struct post *post, const struct str *md)
+ {
+ /*
+ * Like HTML, assume the .lisp file contains all of the other post
+ * metadata. If that assumption changes, update here.
+ *
+ * Unlike HTML, we plan to provide a clean error string if MD
+ * parsing fails.
+ */
+ str_putref(post->body); /* Free the previous text. */
+ post->body = fmt4_md_to_html(md);
+ if (post->body == NULL) {
+ /*
+ * XXX KEBE SAYS do something clever here with a small HTML
+ * string. For now, panic.
+ */
+ ASSERT(post->body != NULL);
+ }
+
+ return (0);
+ }
+
static int __do_load_post_body_fmt3(struct post *post, const struct str *input)
{
struct parser_output x;
int ret;
*** 302,322 ****
return 0;
}
static int __load_post_body(struct post *post)
{
! static const char *exts[4] = {
[2] = "html",
[3] = "tex",
};
char path[FILENAME_MAX];
struct str *raw;
int ret;
ASSERT3U(post->fmt, >=, 2);
! ASSERT3U(post->fmt, <=, 3);
snprintf(path, FILENAME_MAX, "%s/posts/%d/post.%s",
str_cstr(config.data_dir), post->id, exts[post->fmt]);
raw = post_get_cached_file(post, path);
--- 326,347 ----
return 0;
}
static int __load_post_body(struct post *post)
{
! static const char *exts[5] = {
[2] = "html",
[3] = "tex",
+ [4] = "md",
};
char path[FILENAME_MAX];
struct str *raw;
int ret;
ASSERT3U(post->fmt, >=, 2);
! ASSERT3U(post->fmt, <=, 4);
snprintf(path, FILENAME_MAX, "%s/posts/%d/post.%s",
str_cstr(config.data_dir), post->id, exts[post->fmt]);
raw = post_get_cached_file(post, path);
*** 328,337 ****
--- 353,365 ----
ret = __do_load_post_body_fmt2(post, raw);
break;
case 3:
ret = __do_load_post_body_fmt3(post, raw);
break;
+ case 4:
+ ret = __do_load_post_body_fmt4(post, raw);
+ break;
}
str_putref(raw);
return ret;