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;