以下に示すソリューションを使用してみました。
Cocoa アプリケーションの Markdown の最も単純な実装は何ですか?
しかし、最後のタグ (または 2 つ?) が欠落しているため、どちらのソリューションも完全に有効な html を返しません。例えば:
このマークダウン:
### Markdown Example - Lists
#### Unordered list
* Aenean
* vel
* libero
* eget
* ante
#### Ordered list
1. Aenean
2. vel
3. libero
4. eget
5. ante
次の html を出力します。
<h3>Markdown Example - Lists</h3>
<h4>Unordered list</h4>
<ul>
<li>Aenean </li>
<li>vel
<ul>
<li>libero </li>
<li>eget </li>
</ul>
</li>
<li>ante</li>
</ul>
<h4>Ordered list</h4>
<ol>
<li>Aenean </li>
<li>vel </li>
<li>libero </li>
<li>eget </li>
<li>ante
(わかりやすくするためにインデントが追加されています)。
これを生成するために使用されるコードは、2 番目の回答から取得されます (最初の回答も試しましたが、結果は同じでした)。
NSString *markdownXHTML = @"";
if([ext isEqualToString:@"markdown"] || [ext isEqualToString:@"md"]){
NSString *rawMarkdown = [NSString stringWithContentsOfFile:path
encoding:NSUTF8StringEncoding
error:NULL];
const char * prose = [rawMarkdown UTF8String];
struct buf *ib, *ob;
int length = [rawMarkdown lengthOfBytesUsingEncoding:NSUTF8StringEncoding] + 1;
ib = bufnew(length);
bufgrow(ib, length);
memcpy(ib->data, prose, length);
ib->size = length;
ob = bufnew(64);
struct sd_callbacks callbacks;
struct html_renderopt options;
struct sd_markdown *markdown;
sdhtml_renderer(&callbacks, &options, 0);
markdown = sd_markdown_new(0, 16, &callbacks, &options);
sd_markdown_render(ob, ib->data, ib->size, markdown);
sd_markdown_free(markdown);
markdownXHTML = [NSString stringWithUTF8String: ob->data];
bufrelease(ib);
bufrelease(ob);
}
誰にもアイデアはありますか?:)