Sha256: 710fc065df46cbca58c277c2dc6ea3c77bf50bc72b84b2265bae3e4576d4e8ac

Contents?: true

Size: 1.53 KB

Versions: 10

Compression:

Stored size: 1.53 KB

Contents

#include <xml_syntax_error.h>

void Nokogiri_error_array_pusher(void * ctx, xmlErrorPtr error)
{
  VALUE list = (VALUE)ctx;
  rb_ary_push(list,  Nokogiri_wrap_xml_syntax_error((VALUE)NULL, error));
}

void Nokogiri_error_raise(void * ctx, xmlErrorPtr error)
{
  rb_exc_raise(Nokogiri_wrap_xml_syntax_error((VALUE)NULL, error));
}

VALUE Nokogiri_wrap_xml_syntax_error(VALUE klass, xmlErrorPtr error)
{
  if(!klass) klass = cNokogiriXmlSyntaxError;

  VALUE msg = error->message ? NOKOGIRI_STR_NEW2(error->message) : Qnil;

  VALUE e = rb_class_new_instance(
      1,
      &msg,
      klass
  );
  rb_iv_set(e, "@domain", INT2NUM(error->domain));
  rb_iv_set(e, "@code", INT2NUM(error->code));
  rb_iv_set(e, "@level", INT2NUM((short)error->level));
  rb_iv_set(e, "@file", RBSTR_OR_QNIL(error->file));
  rb_iv_set(e, "@line", INT2NUM(error->line));
  rb_iv_set(e, "@str1", RBSTR_OR_QNIL(error->str1));
  rb_iv_set(e, "@str2", RBSTR_OR_QNIL(error->str2));
  rb_iv_set(e, "@str3", RBSTR_OR_QNIL(error->str3));
  rb_iv_set(e, "@int1", INT2NUM(error->int1));
  rb_iv_set(e, "@column", INT2NUM(error->int2));

  return e;
}

VALUE cNokogiriXmlSyntaxError;
void init_xml_syntax_error()
{
  VALUE nokogiri = rb_define_module("Nokogiri");
  VALUE xml = rb_define_module_under(nokogiri, "XML");

  /*
   * The XML::SyntaxError is raised on parse errors
   */
  VALUE syntax_error_mommy = rb_define_class_under(nokogiri, "SyntaxError", rb_eStandardError);
  VALUE klass = rb_define_class_under(xml, "SyntaxError", syntax_error_mommy);
  cNokogiriXmlSyntaxError = klass;

}

Version data entries

10 entries across 10 versions & 4 rubygems

Version Path
rubyjedi-nokogiri_java-1.4.0.20100513161003-java ext/nokogiri/xml_syntax_error.c
jwagener-nokogiri-1.4.1 ext/nokogiri/xml_syntax_error.c
revo-nokogiri-1.4.1-java ext/nokogiri/xml_syntax_error.c
revo-nokogiri-1.4.0.3-java ext/nokogiri/xml_syntax_error.c
revo-nokogiri-1.4.0-java ext/nokogiri/xml_syntax_error.c
revo-nokogiri-1.4.0.20100202165440-java ext/nokogiri/xml_syntax_error.c
nokogiri-1.4.1-x86-mswin32 ext/nokogiri/xml_syntax_error.c
nokogiri-1.4.1-x86-mingw32 ext/nokogiri/xml_syntax_error.c
nokogiri-1.4.1-java ext/nokogiri/xml_syntax_error.c
nokogiri-1.4.1 ext/nokogiri/xml_syntax_error.c