URI: Lots more methods bound.
WWW::Mechanize: Bind the WWW::Mechanize::Links class and links method.
/* Interface to Perl from OCaml.
* Copyright (C) 2003 Merjis Ltd.
- * $Id: perl_c.c,v 1.21 2005-01-29 12:22:49 rich Exp $
+ * $Id: perl_c.c,v 1.22 2005-02-13 16:33:27 rich Exp $
*/
#include <stdio.h>
STRLEN len;
CAMLlocal1 (strv);
str = SvPV (sv, len);
- /* XXX This won't work if the string contains NUL. */
- strv = caml_copy_string (str);
+ strv = caml_alloc_string (len);
+ memcpy (String_val (strv), str, len);
CAMLreturn (strv);
}
*
* Copyright (C) 2003 Merjis Ltd.
*
- * $Id: pl_URI.ml,v 1.3 2003-10-16 13:41:07 rich Exp $
+ * $Id: pl_URI.ml,v 1.4 2005-02-13 16:33:28 rich Exp $
*)
open Perl
method rel base =
string_of_sv (call_method sv "rel" [sv_of_string base])
+
+ method host =
+ string_of_sv (call_method sv "host" [])
+ method set_host host =
+ call_method_void sv "host" [sv_of_string host]
+ method port =
+ string_of_sv (call_method sv "port" [])
+ method set_port port =
+ call_method_void sv "port" [sv_of_string port]
+ method host_port =
+ string_of_sv (call_method sv "host_port" [])
+ method set_host_port host_port =
+ call_method_void sv "host_port" [sv_of_string host_port]
+ method default_port =
+ int_of_sv (call_method sv "default_port" [])
+
end
let new_ ?scheme str =
| Some scheme -> [sv_of_string scheme] in
let sv = call_class_method "URI" "new" args in
new uri sv
+
+let new_abs str base =
+ let sv = call_class_method "URI" "new_abs" [sv_of_string str;
+ sv_of_string base] in
+ new uri sv
*
* Copyright (C) 2004 Merjis Ltd.
*
- * $Id: pl_WWW_Mechanize.ml,v 1.3 2005-01-13 16:06:04 rich Exp $
+ * $Id: pl_WWW_Mechanize.ml,v 1.4 2005-02-13 16:33:28 rich Exp $
*)
open Perl
let sv = call_method sv "content" [] in
string_of_sv sv
(* method current_forms = *)
- (* method links = *)
+ method links =
+ let svs = call_method_array sv "links" [] in
+ List.map (new www_mechanize_link) svs
method is_html =
let sv = call_method sv "is_html" [] in
bool_of_sv sv
end
+(* Not much documentation exists for the WWW::Mechanize::Link class. As far
+ * as I can see, the only documented method is #url to return the URL. XXX
+ *)
+and www_mechanize_link sv =
+
+object (self)
+
+ method sv = sv
+
+ method url =
+ let sv = call_method sv "url" [] in
+ string_of_sv sv
+
+end
+
(* XXX Should be able to pass args to constructor of LWP::UserAgent. *)
(* XXX WWW::Mechanize has additional parameters. *)
let new_ ?autocheck () =