Jaka jest najprostsza implementacja Markdown dla aplikacji Cocoa?
Piszę aplikację Cocoa w Objective-C i chciałbym móc włączyć Markdown. Użytkownik wprowadzi tekst w składni Markdown, kliknie przycisk "Eksportuj", a program wyświetli plik XHTML.
Wygląda na to, że jest wiele opcji. Mógłbym użyć jednej z implementacji C / C++ , mógłbym uruchomić skrypt Perla jako zasób do mojej aplikacji Cocoa , zakładam, że mógłbym użyć implementacji Pythona i Mostu PyObjC lub Perla implementacja i mosty CamelBones lub PerlObjC. Jakie byłoby najprostsze i najłatwiejsze rozwiązanie? Nie robię nic skomplikowanego, jak renderowany w czasie rzeczywistym podgląd, który wymagałby wątku.
6 answers
Możesz sprawdzić aplikację open-source Macdown, którą napisałem (lub alternatywnie rentzsch ' s Markdownlive), która zawiera tę funkcjonalność jako jedyny cel obu aplikacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-27 13:29:17
Spojrzałem na różne opcje i w końcu znalazłem libsoldout , bardzo małą implementację C, która jest dość łatwa do zintegrowania. Musisz tylko dołączyć tablicę.[ch], bufor.[ch], markdown.[ch], oraz rendery.[ch] w Twoim projekcie Xcode możesz przekonwertować NSString z markdown na HTML w następujący sposób:
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);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-04 17:40:55
Właśnie skorzystałem z implementacji Sundown , która obejmuje obsługę SmartyPants, w aplikacji na iPada z wielkim sukcesem. Zbudowanie aplikacji testowej zajęło około 15 minut.
Załóżmy, że masz UITextView * textView (który ustawiłeś jako self), a także UIWebView * webView, w którym wyświetlane są Wyniki:
- (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);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-11 16:32:06
Znalazłem problemy z przetwarzaniem dużych ilości markdown za pomocą tych bibliotek opartych na C.
Jest bardzo prosta Biblioteka Obj-C, która działała dla mnie tutaj:
Https://github.com/mdiep/MMMarkdown
Kroki użycia MMMarkdown:
-
Zbuduj docelowy system OS X lub iOS
-
Kopia
include/MMMarkdown.h
i albolib/libMMMarkdown-Mac.a
lublib/libMMMarkdown-iOS.a
do twojego projektu -
Wtedy kod to:
#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>"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-01 23:45:56
Użyłem peg-markdown, jest znacznie szybszy niż oryginalny perl i może obsłużyć kilka rozszerzeń składni, jeśli je włączysz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-04 00:18:20
- Oliver Letterer ' s GHMarkdownParser translate markdown to HTML.
- Phila Tolanda qlmarkdown QuickLook generator dla plików markdown.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-27 13:32:11