24

私はObjective-CでCocoaアプリケーションを書いていますが、Markdownを組み込むことができるようにしたいと思います。ユーザーはMarkdown構文でテキストを入力し、「エクスポート」ボタンをクリックすると、プログラムはXHTMLのファイルを出力します。

しかし、選択肢はたくさんあるようです。C / C ++実装の1つを使用でき、CocoaアプリのリソースとしてPerlスクリプトを実行できます。Python実装とPyObjCブリッジ、またはPerl実装とCamelBonesまたはPerlObjCブリッジを使用できると思います。最も簡単で簡単な解決策は何でしょうか?スレッド化が必要なリアルタイムレンダリングプレビューのような複雑なことは何もしていません。

4

6 に答える 6

32

さまざまなオプションを調べたところ、最終的にlibsoldoutが見つかりました。これは、統合が非常に簡単な非常に小さなC実装です。Xcodeプロジェクトにarray。[ch]、buffer。[ch]、markdown。[ch]、renderers。[ch]を含めるだけで、次のようにNSStringをマークダウンからHTMLに変換できます。

NSString *rawMarkdown;
const char * prose = [rawMarkdown UTF8String];  
struct buf *ib, *ob;       

int length = rawMarkdown.length + 1;

ib = bufnew(length);
bufgrow(ib, length);
memcpy(ib->data, prose, length);
ib->size = length;

ob = bufnew(64);
markdown(ob, ib, &mkd_xhtml);

NSString *shinyNewHTML = [NSString stringWithUTF8String: ob->data];
NSLog(@"%@", shinyNewHTML);

bufrelease(ib);
bufrelease(ob);
于 2011-01-14T10:34:18.617 に答える
19

SmartyPantsサポートを含むSundown実装を、iPadアプリで使用して大成功を収めました。テストアプリの作成に約15分かかりました。

UITextView * textView(setDelegate:self)と、結果を表示するUIWebView*webViewがあるとします。

- (void) textViewDidEndEditing:(UITextView *)textView
{
    NSString *rawMarkdown = [textView text];
    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);


    NSString *shinyNewHTML = [NSString stringWithUTF8String: ob->data];
    [webView loadHTMLString:shinyNewHTML baseURL:[[NSURL alloc] initWithString:@""]];

    bufrelease(ib);
    bufrelease(ob);
}
于 2011-10-22T20:18:04.717 に答える
16

私が書いたオープンソースアプリMacdown(またはrentzschのMarkdownlive )をチェックしてみてください。このアプリには、この機能が2つのアプリの唯一の目的として組み込まれています。

于 2009-09-16T21:08:36.957 に答える
7

これらのCベースのライブラリで大量のマークダウンを処理する際に問題が見つかりました。

ここで私のために働いた非常に単純なObj-Cライブラリがあります:

https://github.com/mdiep/MMMarkdown


MMMarkdownを使用する手順:

  1. OSXまたはiOSターゲットを構築する

  2. コピーinclude/MMMarkdown.hして、 lib/libMMMarkdown-Mac.aまたはlib/libMMMarkdown-iOS.aプロジェクトに

  3. 次に、コードは次のとおりです。

#import "MMMarkdown.h"

NSError  *error;
NSString *markdown   = @"# Example\nWhat a library!";
NSString *htmlString = [MMMarkdown HTMLStringWithMarkdown:markdown error:&error];
// Returns @"<h1>Example</h1>\n<p>What a library!</p>"
于 2013-11-07T08:15:17.023 に答える
1

私はpeg-markdownを使用しました。これは、元のperlよりもはるかに高速であり、有効にするといくつかの構文拡張を処理できます。

于 2009-10-04T00:18:20.517 に答える
0
  1. Oliver LettererのGHMarkdownParserは、マークダウンをHTMLに変換します。
  2. PhilTolandのマークダウンファイル用のQLMarkdownQuickLookジェネレーター。
于 2012-12-27T13:32:11.120 に答える