CommonMark
view release on metacpan or search on metacpan
CommonMark.xs view on Meta::CPAN
#else
retval = cmark_node_replace(node, other);
#endif
if (!retval) {
croak("replace: invalid operation");
}
S_decref_node_sv(aTHX_ old_parent);
NO_OUTPUT int
interface_move_node(cmark_node *node, cmark_node *other)
PREINIT:
cmark_node *old_parent;
cmark_node *new_parent;
INIT:
old_parent = cmark_node_parent(other);
INTERFACE:
cmark_node_insert_before
cmark_node_insert_after
cmark_node_prepend_child
cmark_node_append_child
POSTCALL:
if (!RETVAL) {
croak("%s: invalid operation", GvNAME(CvGV(cv)));
}
new_parent = cmark_node_parent(other);
S_transfer_refcount(aTHX_ old_parent, new_parent);
char*
interface_render(cmark_node *root, int options = 0)
INIT:
options = S_process_options(options);
INTERFACE:
cmark_node_render_html
cmark_node_render_xml
char*
interface_render_width(cmark_node *root, int options = 0, int width = 0)
INIT:
options = S_process_options(options);
INTERFACE:
cmark_node_render_man
cmark_node_render_commonmark
cmark_node_render_latex
MODULE = CommonMark PACKAGE = CommonMark::Iterator PREFIX = cmark_iter_
void
DESTROY(cmark_iter *iter)
CODE:
S_decref_node_sv(aTHX_ cmark_iter_get_node(iter));
S_decref_node_sv(aTHX_ cmark_iter_get_root(iter));
cmark_iter_free(iter);
void
cmark_iter_next(cmark_iter *iter)
PREINIT:
I32 gimme;
cmark_node *old_node;
cmark_event_type ev_type;
PPCODE:
gimme = GIMME_V;
old_node = cmark_iter_get_node(iter);
ev_type = cmark_iter_next(iter);
if (ev_type != CMARK_EVENT_DONE) {
cmark_node *node = cmark_iter_get_node(iter);
ST(0) = sv_2mortal(newSViv((IV)ev_type));
if (gimme == G_ARRAY) {
SV *obj = S_create_or_incref_node_sv(aTHX_ node);
/* A bit more efficient than S_transfer_refcount. */
if (old_node != node) {
S_decref_node_sv(aTHX_ old_node);
SvREFCNT_inc_simple_void_NN(obj);
}
ST(1) = sv_2mortal(newRV_noinc(obj));
XSRETURN(2);
}
else {
S_transfer_refcount(aTHX_ old_node, node);
XSRETURN(1);
}
}
else {
S_decref_node_sv(aTHX_ old_node);
if (gimme == G_ARRAY) {
XSRETURN_EMPTY;
}
else {
ST(0) = sv_2mortal(newSViv((IV)ev_type));
XSRETURN(1);
}
}
cmark_node*
cmark_iter_get_node(cmark_iter *iter)
cmark_event_type
cmark_iter_get_event_type(cmark_iter *iter)
void
cmark_iter_reset(iter, node, event_type)
cmark_iter *iter
cmark_node *node
cmark_event_type event_type
PREINIT:
cmark_node *old_node;
INIT:
old_node = cmark_iter_get_node(iter);
S_transfer_refcount(aTHX_ old_node, node);
MODULE = CommonMark PACKAGE = CommonMark::Parser PREFIX = cmark_parser_
cmark_parser*
cmark_parser_new(package, options = 0)
( run in 1.043 second using v1.01-cache-2.11-cpan-71847e10f99 )