413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
|
# File 'ext/makiri/glue/ruby_lexbor_css.c', line 413
static VALUE
mkr_lexbor_css_parse_stylesheet(VALUE self, VALUE rb_text)
{
(void)self;
mkr_ruby_borrowed_text_t tv = mkr_ruby_verified_text(rb_text, "CSS stylesheet");
mkr_css_parse_state_t s = {
.parser = NULL,
.sst = NULL,
.conv = { .css = tv.ptr, .css_len = tv.len },
};
mkr_buf_init(&s.conv.scratch, 0);
s.parser = lxb_css_parser_create();
s.sst = lxb_css_stylesheet_create(NULL);
if (s.parser == NULL || s.sst == NULL
|| lxb_css_parser_init(s.parser, NULL) != LXB_STATUS_OK)
{
mkr_css_parse_cleanup((VALUE)&s);
rb_raise(mkr_eError, "failed to initialise CSS parser");
}
VALUE result = rb_ensure(mkr_css_parse_body, (VALUE)&s,
mkr_css_parse_cleanup, (VALUE)&s);
RB_GC_GUARD(tv.value);
return result;
}
|