Fixed loads of bugs. It now works. Ready to integrate in assessortool.
[perl4caml.git] / wrappers / pl_Net_Google.ml
1 (* Wrapper around Perl Net::Google class.
2  * Copyright (C) 2003 Merjis Ltd.
3  * $Id: pl_Net_Google.ml,v 1.1 2003-10-14 16:05:22 rich Exp $
4  *)
5
6 open Perl
7
8 open Pl_Net_Google_Cache
9 open Pl_Net_Google_Search
10 open Pl_Net_Google_Spelling
11
12 let may f = function None -> () | Some v -> f v
13
14 class net_google sv =
15
16 object (self)
17
18   method search ?key ?starts_at ?max_results ?lr ?ie ?oe ?safe ?filter () =
19     let args = ref [] in
20     may (fun v ->
21            args := sv_of_string "key" :: sv_of_string v :: !args) key;
22     may (fun v ->
23            args := sv_of_string "starts_at" :: sv_of_int v :: !args) starts_at;
24     may (fun v ->
25            args := sv_of_string "max_results" :: sv_of_int v :: !args)
26       max_results;
27     may (fun v ->
28            args := sv_of_string "lr" :: sv_of_string v :: !args) lr;
29     may (fun v ->
30            args := sv_of_string "ie" :: sv_of_string v :: !args) ie;
31     may (fun v ->
32            args := sv_of_string "oe" :: sv_of_string v :: !args) oe;
33     may (fun v ->
34            args := sv_of_string "safe" :: sv_of_bool v :: !args) safe;
35     may (fun v ->
36            args := sv_of_string "filter" :: sv_of_bool v :: !args) filter;
37     let sv = call_method sv "search" !args in
38     new net_google_search sv
39
40   method spelling ?key ?phrase ?debug () =
41     let args = ref [] in
42     may (fun v ->
43            args := sv_of_string "key" :: sv_of_string v :: !args) key;
44     may (fun v ->
45            args := sv_of_string "phrase" :: sv_of_string v :: !args) phrase;
46     may (fun v ->
47            args := sv_of_string "debug" :: sv_of_int v :: !args) debug;
48     let sv = call_method sv "spelling" !args in
49     new net_google_spelling sv
50
51   method cache ?key ?url ?debug () =
52     let args = ref [] in
53     may (fun v ->
54            args := sv_of_string "key" :: sv_of_string v :: !args) key;
55     may (fun v ->
56            args := sv_of_string "url" :: sv_of_string v :: !args) url;
57     may (fun v ->
58            args := sv_of_string "debug" :: sv_of_int v :: !args) debug;
59     let sv = call_method sv "cache" !args in
60     new net_google_cache sv
61
62 end
63
64 let new_ ?key ?debug () =
65   let args = ref [] in
66   may (fun v ->
67          args := sv_of_string "key" :: sv_of_string v :: !args) key;
68   may (fun v ->
69          args := sv_of_string "debug" :: sv_of_int v :: !args) debug;
70   let sv = call_class_method "Net::Google" "new" !args in
71   new net_google sv