Class: MD4C::Parser
- Inherits:
-
Object
- Object
- MD4C::Parser
- Defined in:
- ext/md4c/rb_md4c.c
Instance Method Summary collapse
- #initialize ⇒ Object constructor
- #on_enter_block ⇒ Object
- #on_enter_span ⇒ Object
- #on_leave_block ⇒ Object
- #on_leave_span ⇒ Object
- #on_text ⇒ Object
- #parse ⇒ Object
Constructor Details
#initialize ⇒ Object
160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
# File 'ext/md4c/rb_md4c.c', line 160
static VALUE
rbm_cParser_m_initialize (int argc, VALUE *argv, VALUE self)
{
VALUE kwargs;
rb_scan_args (argc, argv, ":", &kwargs);
ID kwargs_ids[] = { PARSER_FLAGS };
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);
struct rbm_cParser *p = RTYPEDDATA_DATA (self);
*p = (struct rbm_cParser){ .flags = rbm_get_parser_flags (kwargs_vals) };
return self;
}
|
Instance Method Details
#on_enter_block ⇒ Object
175 176 177 178 179 180 |
# File 'ext/md4c/rb_md4c.c', line 175
static VALUE
rbm_cParser_m_on_enter_block (VALUE self)
{
struct rbm_cParser *p = RTYPEDDATA_DATA (self);
return p->on_enter_block = rb_block_proc ();
}
|
#on_enter_span ⇒ Object
189 190 191 192 193 194 |
# File 'ext/md4c/rb_md4c.c', line 189
static VALUE
rbm_cParser_m_on_enter_span (VALUE self)
{
struct rbm_cParser *p = RTYPEDDATA_DATA (self);
return p->on_enter_span = rb_block_proc ();
}
|
#on_leave_block ⇒ Object
182 183 184 185 186 187 |
# File 'ext/md4c/rb_md4c.c', line 182
static VALUE
rbm_cParser_m_on_leave_block (VALUE self)
{
struct rbm_cParser *p = RTYPEDDATA_DATA (self);
return p->on_leave_block = rb_block_proc ();
}
|
#on_leave_span ⇒ Object
196 197 198 199 200 201 |
# File 'ext/md4c/rb_md4c.c', line 196
static VALUE
rbm_cParser_m_on_leave_span (VALUE self)
{
struct rbm_cParser *p = RTYPEDDATA_DATA (self);
return p->on_leave_span = rb_block_proc ();
}
|
#on_text ⇒ Object
203 204 205 206 207 208 |
# File 'ext/md4c/rb_md4c.c', line 203
static VALUE
rbm_cParser_m_on_text (VALUE self)
{
struct rbm_cParser *p = RTYPEDDATA_DATA (self);
return p->on_text = rb_block_proc ();
}
|
#parse ⇒ Object
605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 |
# File 'ext/md4c/rb_md4c.c', line 605
static VALUE
rbm_cParser_m_parse (VALUE self, VALUE source)
{
char *text = rb_string_value_ptr (&source);
long size = RSTRING_LEN (source);
struct rbm_cParser *p = RTYPEDDATA_DATA (self);
MD_PARSER parser = { .flags = p->flags,
.enter_block = rbm_callback_enter_block,
.leave_block = rbm_callback_leave_block,
.enter_span = rbm_callback_enter_span,
.leave_span = rbm_callback_leave_span,
.text = rbm_callback_text };
int result = md_parse (text, (MD_SIZE)size, &parser, p);
if (result == -1)
rb_raise (rbm_eError, "runtime error, such as memory fails");
if (result != 0)
rb_raise (rbm_eError, "parse failed");
return RUBY_Qnil;
}
|