什么是降价的一个Cocoa应用程序最简单的实现?(What is the simplest impl

2019-07-18 06:31发布

我正在写在Objective-C Cocoa应用程序中,我想能够纳入降价。 用户将在降价语法输入文字,单击“导出”按钮,程序会输出XHTML的文件。

好像有很多的选择,虽然。 我可以用一个C / C ++编译器 ,我可以作为资源运行Perl脚本,我的可可应用程序 ,我认为可以使用Python实现和PyObjC桥或Perl实现和CamelBones或PerlObjC桥梁。 什么是最简单和最简单的解决方案? 我没有做太多复杂的实时渲染预览会需要线程。

Answer 1:

你可能想看看开源应用Macdown这是我写的(或可替代rentzsch的Markdownlive ),其中包含此功能的两个应用程序的唯一目的。



Answer 2:

我看了一下各个选项,并在年底发现libsoldout ,一个非常小的C实现这很容易整合。 你只需要包括数组[CH],缓冲[CH],降价[CH]和渲染[CH]在您的Xcode项目,那么你可以从降价转换一个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);


Answer 3:

我只是用日落实施 ,其中包括聪明的家伙的支持,在iPad应用取得了巨大成功。 大约过了15分钟,以建立一个测试应用程序。

假设你有一个UITextView *的TextView(你setDelegate:自我),也一个UIWebView * web视图中显示的结果:

- (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);
}


Answer 4:

我发现的问题与处理大量与这些基于C的库降价的。

还有,在这里工作对我来说是非常简单的OBJ-C库:

https://github.com/mdiep/MMMarkdown


步骤来使用MMMarkdown:

  1. 构建OS X或iOS目标

  2. 复制include/MMMarkdown.h ,要么lib/libMMMarkdown-Mac.alib/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>"


Answer 5:

我用PEG-降价 ,这比原来的perl快得多,如果你让他们可以处理一些语法扩展。



Answer 6:

  1. 奥利弗文字书写的GHMarkdownParser翻译降价到HTML。
  2. 菲尔·托兰的QLMarkdown QuickLook的发电机降价文件。


文章来源: What is the simplest implementation of Markdown for a Cocoa application?