|
|
| version 1.104, 2002/10/15 15:12:56 | version 1.107, 2002/12/18 16:11:26 |
|---|---|
| Line 476 static void _load(Request& r, const Stri | Line 476 static void _load(Request& r, const Stri |
| // filespec | // filespec |
| const String& file_name=params->as_string(0, "uri must be string"); | const String& file_name=params->as_string(0, "uri must be string"); |
| const String& uri=r.absolute(file_name); | const String& uri=r.absolute(file_name); |
| void *data; size_t size; | |
| file_read(pool, uri, data, size, false/*not text*/, | |
| params->size()>1?params->as_no_junction(1, "additional params must be hash").get_hash(&method_name) | |
| :0); | |
| GdomeDocument *document=(GdomeDocument *) | GdomeDocument *document=(GdomeDocument *) |
| gdome_xml_n_mkref((xmlNode *)xmlParseFile(uri.cstr())); | gdome_xml_n_mkref((xmlNode *)xmlParseMemory((const char *)data, size)); |
| if(!document || xmlHaveGenericErrors()) { | if(!document || xmlHaveGenericErrors()) { |
| GdomeException exc=0; | GdomeException exc=0; |
| throw Exception( | throw Exception( |
| &uri, | &uri, |
| exc); | exc); |
| } | } |
| const char *URI_cstr=uri.cstr(); | |
| xmlDoc *doc=gdome_xml_doc_get_xmlDoc(document); | |
| if(URI_cstr) | |
| doc->URL=pool.transcode_buf2xchar(URI_cstr, strlen(URI_cstr)); | |
| // replace any previous parsed source | // replace any previous parsed source |
| vdoc.set_document(document); | vdoc.set_document(document); |
| Line 786 static void _transform(Request& r, const | Line 795 static void _transform(Request& r, const |
| const char **transform_params=0; | const char **transform_params=0; |
| if(params->size()>1) { | if(params->size()>1) { |
| Value& vparams=params->as_no_junction(1, "transform parameters must be hash"); | Value& vparams=params->as_no_junction(1, "transform parameters must be hash"); |
| if(vparams.is_defined()) | if(!vparams.is_string()) |
| if(Hash *params=vparams.get_hash(&method_name)) { | if(Hash *params=vparams.get_hash(&method_name)) { |
| const char **current_transform_param=transform_params= | const char **current_transform_param=transform_params= |
| (const char **)pool.malloc(sizeof(const char *)*(params->size()*2+1)); | (const char **)pool.malloc(sizeof(const char *)*(params->size()*2+1)); |
| Line 884 MXdoc::MXdoc(Pool& apool) : MXnode(apool | Line 893 MXdoc::MXdoc(Pool& apool) : MXnode(apool |
| add_native_method("set", Method::CT_DYNAMIC, _create, 1, 1); | add_native_method("set", Method::CT_DYNAMIC, _create, 1, 1); |
| // ^xdoc::load[some.xml] | // ^xdoc::load[some.xml] |
| add_native_method("load", Method::CT_DYNAMIC, _load, 1, 1); | add_native_method("load", Method::CT_DYNAMIC, _load, 1, 2); |
| // ^xdoc.save[some.xml] | // ^xdoc.save[some.xml] |
| // ^xdoc.save[some.xml;options hash] | // ^xdoc.save[some.xml;options hash] |