static VALUE rxml_document_rb_encoding_get(VALUE self) { xmlDocPtr xdoc; const char *xencoding; rb_encoding* rbencoding; Data_Get_Struct(self, xmlDoc, xdoc); xencoding = (const char*)xdoc->encoding; rbencoding = rxml_xml_encoding_to_rb_encoding(mXMLEncoding, xmlParseCharEncoding(xencoding)); return rb_enc_from_encoding(rbencoding); }
VALUE rxml_str_new2(const char* xstr, const char* xencoding) { #ifdef HAVE_RUBY_ENCODING_H if (xencoding) { xmlCharEncoding xmlEncoding = xmlParseCharEncoding(xencoding); VALUE encoding = rxml_xml_encoding_to_rb_encoding(mXMLEncoding, xmlEncoding); rb_encoding* xencodingPtr = (rb_encoding*) RDATA(encoding)->data; return rb_external_str_new_with_enc(xstr, strlen(xstr), xencodingPtr); } #endif return rb_str_new2(xstr); }
rb_encoding* rxml_figure_encoding(const char* xencoding) { rb_encoding* result; if (xencoding) { xmlCharEncoding xmlEncoding = xmlParseCharEncoding(xencoding); result = rxml_xml_encoding_to_rb_encoding(mXMLEncoding, xmlEncoding); } else { result = rb_utf8_encoding(); } return result; }
/* * call-seq: * Input.encoding_to_rb_encoding(Input::ENCODING) -> Encoding * * Converts an encoding constant defined on the XML::Encoding * class to a Ruby encoding object (available on Ruby 1.9.* and higher). */ VALUE rxml_encoding_to_rb_encoding(VALUE klass, VALUE encoding) { xmlCharEncoding xmlEncoding = (xmlCharEncoding)NUM2INT(encoding); rb_encoding* rbencoding = rxml_xml_encoding_to_rb_encoding(klass, xmlEncoding); return rb_enc_from_encoding(rbencoding); }