Skip to content

Commit

Permalink
Rework rb_markdown_to_xml
Browse files Browse the repository at this point in the history
  • Loading branch information
ojab committed Feb 18, 2022
1 parent 1d5032d commit ce3c25e
Showing 1 changed file with 8 additions and 13 deletions.
21 changes: 8 additions & 13 deletions ext/commonmarker/commonmarker.c
Original file line number Diff line number Diff line change
Expand Up @@ -183,33 +183,28 @@ static VALUE rb_markdown_to_html(VALUE self, VALUE rb_text, VALUE rb_options, VA
*
*/
static VALUE rb_markdown_to_xml(VALUE self, VALUE rb_text, VALUE rb_options, VALUE rb_extensions) {
char *str, *xml;
int len;
char *xml;
cmark_parser *parser;
cmark_node *doc;

Check_Type(rb_text, T_STRING);
Check_Type(rb_options, T_FIXNUM);

parser = prepare_parser(rb_options, rb_extensions);

str = (char *)RSTRING_PTR(rb_text);
len = RSTRING_LEN(rb_text);

cmark_parser_feed(parser, str, len);
cmark_parser_feed(parser, StringValuePtr(rb_text), RSTRING_LEN(rb_text));
doc = cmark_parser_finish(parser);

if (doc == NULL) {
cmark_parser_free(parser);
rb_raise(rb_eNodeError, "error parsing document");
}

cmark_mem *default_mem = cmark_get_default_mem_allocator();
xml = cmark_render_xml_with_mem(doc, FIX2INT(rb_options), default_mem);
cmark_parser_free(parser);
xml = cmark_render_xml(doc, parser->options);

VALUE ruby_xml = rb_str_new2(xml);
default_mem->free(xml);
cmark_parser_free(parser);
cmark_node_free(doc);

return ruby_xml;
return rb_utf8_str_new_cstr(xml);
}

/*
Expand Down

0 comments on commit ce3c25e

Please sign in to comment.