使用C折扣库解析降价

时间:2014-10-25 14:36:02

标签: c++ c markdown discount

我正在写一个降价编辑器(C ++ / Qt),并且我正在使用折扣库来实现这一目的。

文档:http://www.pell.portland.or.us/~orc/Code/discount/

我编写了将HTML转换为markdown的代码。

#include <mkdio.h>
#include <stdio.h>
#include <string.h>
int main()
{
    FILE *out;
    out = fopen("/home/abdeljalil/test.html","w");
    const char* mkdown= "__hello__";
    MMIOT *doc;
    int flags = MKD_TOC|MKD_SAFELINK|MKD_EXTRA_FOOTNOTE;
    doc = mkd_string(mkdown,strlen(mkdown),flags);
    mkd_compile(doc,flags);
    mkd_generatehtml(doc,out);
    mkd_cleanup(doc);
}

使用输出文件是一种有效的方法吗? (每次在编辑器中更改markdown时,我都会更新GUI) 我可以直接将HTML写入字符串而不是文件吗? (找不到这样的功能) 还有其他任何优化代码的说明吗?

1 个答案:

答案 0 :(得分:0)

Markdown有点被黑客攻击,非标准和矛盾而臭名昭着。试图编写Markdown-to-visual系统的任何人(包括我自己)都可以告诉你它是多么令人费解/令人抓狂。我不知道“折扣”,但请看CommonMark.org以前来自StackOverflow-Jeff和其他人的一些思想状态。

在每个编辑上进行完全重新格式化文档(在进入空闲状态以便不阻止用户输入)以生成降价预览可能适用于适度大小的文档。没有看过StackOverflow JavaScript,但它可能正是这样做的。

您的图书馆文档说:

  

降价库中有17个公共功能,分为三类:

这些功能是基于文件的。据我所知,您不会找到任何与平台无关的便利层,允许您传递std::stringstream或以其他方式传递C流FILE *

cstdio streams vs iostream streams?

您可以查看fmemopen以避免文件创建并写入缓冲区,但是:

http://www.gnu.org/software/libc/manual/html_node/String-Streams.html

所以也许可以调查一下。

Finding the size of a file created by fmemopen

更一般地说,我可能会建议从头开始在Qt编辑器中包装一个随机的基于C的FILE流Markdown库是一个愚蠢的差事。要么拥抱像CuteMarkEd这样的现有项目,要么嵌入JavaScript引擎来运行公共降价代码,或者......某事。