コード例 #1
0
ファイル: rc_render.c プロジェクト: jinguoxing/redcarpet
static VALUE rb_redcarpet_htmltoc_init(int argc, VALUE *argv, VALUE self)
{
    struct rb_redcarpet_rndr *rndr;
    unsigned int render_flags = HTML_TOC;
    VALUE hash, nesting_level = Qnil;

    Data_Get_Struct(self, struct rb_redcarpet_rndr, rndr);

    if (rb_scan_args(argc, argv, "01", &hash) == 1) {
        Check_Type(hash, T_HASH);

        /* escape_html */
        if (rb_hash_aref(hash, CSTR2SYM("escape_html")) == Qtrue)
            render_flags |= HTML_ESCAPE;

        /* Nesting level */
        nesting_level = rb_hash_aref(hash, CSTR2SYM("nesting_level"));
    }

    sdhtml_toc_renderer(&rndr->callbacks, (struct html_renderopt *)&rndr->options.html, render_flags);
    rb_redcarpet__overload(self, rb_cRenderHTML_TOC);

    if (!(NIL_P(nesting_level)))
        rndr->options.html.toc_data.nesting_level = NUM2INT(nesting_level);
    else
        rndr->options.html.toc_data.nesting_level = 6;

    return Qnil;
}
コード例 #2
0
ファイル: rc_render.c プロジェクト: SachaG/redcarpet
static VALUE rb_redcarpet_htmltoc_init(VALUE self)
{
	struct rb_redcarpet_rndr *rndr;
	Data_Get_Struct(self, struct rb_redcarpet_rndr, rndr);

	sdhtml_toc_renderer(&rndr->callbacks, (struct html_renderopt *)&rndr->options.html);
	rb_redcarpet__overload(self, rb_cRenderHTML_TOC);

	return Qnil;
}
コード例 #3
0
ファイル: rc_render.c プロジェクト: kannans/shoes
static VALUE rb_redcarpet_html_init(int argc, VALUE *argv, VALUE self)
{
    struct rb_redcarpet_rndr *rndr;
    unsigned int render_flags = 0;
    VALUE hash;

    Data_Get_Struct(self, struct rb_redcarpet_rndr, rndr);

    if (rb_scan_args(argc, argv, "01", &hash) == 1)
    {
        Check_Type(hash, T_HASH);

        /* filter_html */
        if (rb_hash_aref(hash, CSTR2SYM("filter_html")) == Qtrue)
            render_flags |= HTML_SKIP_HTML;

        /* no_image */
        if (rb_hash_aref(hash, CSTR2SYM("no_images")) == Qtrue)
            render_flags |= HTML_SKIP_IMAGES;

        /* no_links */
        if (rb_hash_aref(hash, CSTR2SYM("no_links")) == Qtrue)
            render_flags |= HTML_SKIP_LINKS;

        /* filter_style */
        if (rb_hash_aref(hash, CSTR2SYM("no_styles")) == Qtrue)
            render_flags |= HTML_SKIP_STYLE;

        /* safelink */
        if (rb_hash_aref(hash, CSTR2SYM("safe_links_only")) == Qtrue)
            render_flags |= HTML_SAFELINK;

        if (rb_hash_aref(hash, CSTR2SYM("with_toc_data")) == Qtrue)
            render_flags |= HTML_TOC;

        if (rb_hash_aref(hash, CSTR2SYM("hard_wrap")) == Qtrue)
            render_flags |= HTML_HARD_WRAP;

        if (rb_hash_aref(hash, CSTR2SYM("xhtml")) == Qtrue)
            render_flags |= HTML_USE_XHTML;
    }

    sdhtml_renderer(&rndr->callbacks, (struct html_renderopt *)&rndr->options.html, render_flags);
    rb_redcarpet__overload(self, rb_cRenderHTML);

    return Qnil;
}
コード例 #4
0
ファイル: rc_render.c プロジェクト: vmg/redcarpet
static VALUE rb_redcarpet_htmltoc_init(int argc, VALUE *argv, VALUE self)
{
	struct rb_redcarpet_rndr *rndr;
	unsigned int render_flags = HTML_TOC;
	VALUE hash, nesting_level = Qnil;

	Data_Get_Struct(self, struct rb_redcarpet_rndr, rndr);

	if (rb_scan_args(argc, argv, "01", &hash) == 1) {
		Check_Type(hash, T_HASH);

		/* Give access to the passed options through `@options` */
		rb_iv_set(self, "@options", hash);

		/* escape_html */
		if (rb_hash_aref(hash, CSTR2SYM("escape_html")) == Qtrue)
			render_flags |= HTML_ESCAPE;

		/* Nesting level */
		nesting_level = rb_hash_aref(hash, CSTR2SYM("nesting_level"));
	}

	sdhtml_toc_renderer(&rndr->callbacks, (struct html_renderopt *)&rndr->options.html, render_flags);
	rb_redcarpet__overload(self, rb_cRenderHTML_TOC);

	/* Check whether we are dealing with a Range object by
	   checking whether the object responds to min and max */
	if (rb_respond_to(nesting_level, rb_intern("min")) &&
	    rb_respond_to(nesting_level, rb_intern("max"))) {
		int min = NUM2INT(rb_funcall(nesting_level, rb_intern("min"), 0));
		int max = NUM2INT(rb_funcall(nesting_level, rb_intern("max"), 0));

		rndr->options.html.toc_data.nesting_bounds[0] = min;
		rndr->options.html.toc_data.nesting_bounds[1] = max;
	} else if (FIXNUM_P(nesting_level)) {
		rndr->options.html.toc_data.nesting_bounds[0] = 1;
		rndr->options.html.toc_data.nesting_bounds[1] = NUM2INT(nesting_level);
	} else {
		rndr->options.html.toc_data.nesting_bounds[0] = 1;
		rndr->options.html.toc_data.nesting_bounds[1] = 6;
	}

	return Qnil;
}
コード例 #5
0
ファイル: rc_render.c プロジェクト: Adoyle2014/redcarpet
static VALUE rb_redcarpet_htmltoc_init(int argc, VALUE *argv, VALUE self)
{
	struct rb_redcarpet_rndr *rndr;
	int nesting_level = 6;
	VALUE hash, key = Qnil;

	Data_Get_Struct(self, struct rb_redcarpet_rndr, rndr);

	if (rb_scan_args(argc, argv, "01", &hash) == 1) {
		Check_Type(hash, T_HASH);

		key = CSTR2SYM("nesting_level");

		if (RTEST(rb_hash_aref(hash, key))) {
			Check_Type(rb_hash_aref(hash, key), T_FIXNUM);
			nesting_level = NUM2INT(rb_hash_aref(hash, key));
		}
	}

	sdhtml_toc_renderer(&rndr->callbacks, (struct html_renderopt *)&rndr->options.html, nesting_level);
	rb_redcarpet__overload(self, rb_cRenderHTML_TOC);

	return Qnil;
}
コード例 #6
0
ファイル: rc_render.c プロジェクト: SachaG/redcarpet
static VALUE rb_redcarpet_rbase_init(VALUE self)
{
	rb_redcarpet__overload(self, rb_cRenderBase);
	return Qnil;
}
コード例 #7
0
ファイル: rc_render.c プロジェクト: vmg/redcarpet
static VALUE rb_redcarpet_html_init(int argc, VALUE *argv, VALUE self)
{
	struct rb_redcarpet_rndr *rndr;
	unsigned int render_flags = 0;
	VALUE hash, link_attr = Qnil;

	Data_Get_Struct(self, struct rb_redcarpet_rndr, rndr);

	if (rb_scan_args(argc, argv, "01", &hash) == 1) {
		Check_Type(hash, T_HASH);

		/* Give access to the passed options through `@options` */
		rb_iv_set(self, "@options", hash);

		/* escape_html */
		if (rb_hash_aref(hash, CSTR2SYM("escape_html")) == Qtrue)
			render_flags |= HTML_ESCAPE;

		/* filter_html */
		if (rb_hash_aref(hash, CSTR2SYM("filter_html")) == Qtrue)
			render_flags |= HTML_SKIP_HTML;

		/* no_image */
		if (rb_hash_aref(hash, CSTR2SYM("no_images")) == Qtrue)
			render_flags |= HTML_SKIP_IMAGES;

		/* no_links */
		if (rb_hash_aref(hash, CSTR2SYM("no_links")) == Qtrue)
			render_flags |= HTML_SKIP_LINKS;

		/* prettify */
		if (rb_hash_aref(hash, CSTR2SYM("prettify")) == Qtrue)
			render_flags |= HTML_PRETTIFY;

		/* filter_style */
		if (rb_hash_aref(hash, CSTR2SYM("no_styles")) == Qtrue)
			render_flags |= HTML_SKIP_STYLE;

		/* safelink */
		if (rb_hash_aref(hash, CSTR2SYM("safe_links_only")) == Qtrue)
			render_flags |= HTML_SAFELINK;

		if (rb_hash_aref(hash, CSTR2SYM("with_toc_data")) == Qtrue)
			render_flags |= HTML_TOC;

		if (rb_hash_aref(hash, CSTR2SYM("hard_wrap")) == Qtrue)
			render_flags |= HTML_HARD_WRAP;

		if (rb_hash_aref(hash, CSTR2SYM("xhtml")) == Qtrue)
			render_flags |= HTML_USE_XHTML;

		link_attr = rb_hash_aref(hash, CSTR2SYM("link_attributes"));
	}

	sdhtml_renderer(&rndr->callbacks, (struct html_renderopt *)&rndr->options.html, render_flags);
	rb_redcarpet__overload(self, rb_cRenderHTML);

	if (!NIL_P(link_attr)) {
		rndr->options.link_attributes = link_attr;
		rndr->options.html.link_attributes = &rndr_link_attributes;
	}

	return Qnil;
}