module MD4C
The class naming is based off the CommonMark specification, the GitHub Flavored Markdown specification, and the MDN document about HTML.
Some classes have content reader method (attribute). This returns Array of text nodes.
For potentially multibyte contents, UTF-8 encoding is used. Otherwise no encoding is specified (which means US-ASCII).
Constants
- VERSION
Public Class Methods
Source
static VALUE
rbm_m_markdown_to_html (int argc, VALUE *argv, VALUE self)
{
VALUE input, kwargs;
rb_scan_args (argc, argv, "1:", &input, &kwargs);
char *text = rb_string_value_ptr (&input);
long size = RSTRING_LEN (input);
ID kwargs_ids[] = { PARSER_FLAGS, rb_intern ("verbatim_entities"),
rb_intern ("skip_utf8_bom"), rb_intern ("xhtml") };
VALUE kwargs_vals[sizeof (kwargs_ids) / sizeof (kwargs_ids[0])] = { 0 };
rb_get_kwargs (kwargs, kwargs_ids, 0,
sizeof (kwargs_ids) / sizeof (kwargs_ids[0]), kwargs_vals);
unsigned pflags = rbm_get_parser_flags (kwargs_vals);
unsigned rflags = 0;
if (!RB_UNDEF_P (kwargs_vals[19]) || RB_TEST (kwargs_vals[19]))
rflags |= MD_HTML_FLAG_VERBATIM_ENTITIES;
if (!RB_UNDEF_P (kwargs_vals[20]) || RB_TEST (kwargs_vals[20]))
rflags |= MD_HTML_FLAG_SKIP_UTF8_BOM;
if (!RB_UNDEF_P (kwargs_vals[21]) || RB_TEST (kwargs_vals[21]))
rflags |= MD_HTML_FLAG_XHTML;
struct rbm_markdown_to_html_userdata *userdata
= ruby_xmalloc (sizeof (struct rbm_markdown_to_html_userdata));
*userdata
= (struct rbm_markdown_to_html_userdata){ .block = rb_block_proc () };
if (md_html (text, (MD_SIZE)size, rbm_markdown_to_html_callback, userdata,
pflags, rflags)
!= 0)
{
ruby_xfree (userdata);
rb_raise (rbm_eError, "conversion fails");
}
ruby_xfree (userdata);
return RUBY_Qnil;
}
parser_flags are the same flags as MD4C::Parser.new methodโs.