]> matita.cs.unibo.it Git - helm.git/blob - helm/ocaml/mathql_interpreter_galax/tools.ml
7be64422492065b7e03ef28651ef1e686829df74
[helm.git] / helm / ocaml / mathql_interpreter_galax / tools.ml
1
2 (* QUESTE FUNZIONI ORA NON VENGONO USATE, SONO STATE INSERITE NEI FILE DELLE
3   
4    FUNZIONI CHE LE USANO!!!!*)
5
6
7
8 open Unix;;
9
10 (* Data una lista di token restituisce la stringa formata da tutti i token *)
11 let rec token_to_str p =
12  match p with
13    [] -> ""
14  | head::tail ->
15     let h = match head with
16                MQBC s -> Str.global_replace (Str.regexp "\.") "\\\\\." s
17             |  MQBD -> "/"
18             |  MQBQ -> "[^/#]?"
19             |  MQBS -> "[^/#]*"
20             |  MQBSS -> "[^#]*"
21     in
22      h ^ (patterneval tail)
23 ;;
24
25
26
27
28 (* data la lista dei token(fi) la trasforma in stringa aggiungendo la virgola
29 tra un token e l'altro *)
30 let rec fitoken_to_str p =
31  match p with
32    [] -> ""
33  | head::tail ->
34     let h = match head with
35                MQBQ -> "[^/#]?" ^ ","
36             |  MQBS -> "[^/#]*" ^ ","
37             |  MQBSS -> "[^#]*" ^ ","
38     in
39      h ^ (patterneval tail)
40 ;;
41
42
43
44
45
46
47
48 (* NON SERVE ORA! *)
49
50 (* Dato un path stringa restituisce la lista dei file contenuti a ogni livello
51 nella dir relativa al path *)           
52
53 (*let rec entry_list aspattern dir =
54         
55         if !contains(aspattern,'.') 
56                 then
57                         let indir = opendir(aspattern) in
58                           let ent = readdir(indir) in
59                             if contains(ent, '.') (*se la entry e' un file*)
60                                   then [geturi(ent)] @ entry_list(readdir(indir), indir)
61                             else
62                                   entry_list(ent, indir)      (*se la entry e' una dir*)
63
64         else                  
65                 [geturi(aspattern)] @ entry_list(readdir(dir), dir)*) (*se aspattern e' un file*)
66
67
68                 
69 (* FUNZIONE DI MATCHING: prende il descrittore del file delle uri e il path da
70 matchare formato stringa e restituisce la lista dei path che fanno match in
71 formato stringa    !! TAIL-RECURSIVE !! *)
72
73 let pmatch inp path =
74         let rec aux inp path acc =  
75          
76           let s= try
77             Some (Str.string_after (input_line(inp)) 61)
78                  with End_of_file -> None 
79           in match s with
80             | Some s ->
81               if Str.string_match (Str.regexp path) s 0
82                 then 
83                   begin 
84                     let p = (Str.match_end()-3) 
85                     in
86                       aux inp path ((Str.string_before s p)::acc) 
87                   end
88               else
89                 (aux inp path acc)
90             | None -> List.rev acc 
91         in
92           aux inp path []                            
93 ;;
94
95
96
97
98