- let dbd = LibraryDb.instance () in
- let uris =
- let sql_pat =
- (Pcre.replace ~rex:(Pcre.regexp "_") ~templ:"\\_" suri) ^ "%" in
- let query =
- sprintf ("SELECT source FROM %s WHERE source LIKE \"%s\" UNION "^^
- "SELECT source FROM %s WHERE source LIKE \"%s\"")
- (MetadataTypes.name_tbl ()) sql_pat
- MetadataTypes.library_name_tbl sql_pat in
- let result = HMysql.exec dbd query in
- HMysql.map result
- (function cols ->
- match cols.(0) with
- Some s -> UriManager.uri_of_string s
- | _ -> assert false)
- in
-prerr_endline "Inizio sorting";
- let sorted_uris = MetadataDeps.topological_sort ~dbd uris in
-prerr_endline "Fine sorting";
- let sorted_uris_without_xpointer =
- HExtlib.filter_map
- (function uri ->
- let s =
- Pcre.replace ~rex:(Pcre.regexp "#xpointer\\(1/1\\)") ~templ:""
- (UriManager.string_of_uri uri) in
- try
- ignore (Pcre.exec ~rex:(Pcre.regexp"#xpointer") s);
- None
- with
- Not_found ->
- Some (UriManager.uri_of_string s)
- ) sorted_uris
- in
- let declarative =
- String.concat "\n\n"
- (List.map
- (fun uri ->
-prerr_endline ("Stampo " ^ UriManager.string_of_uri uri);
- try
- ObjPp.obj_to_string 78 style prefix (* FG: mi pare meglio 78 *)
- (fst (CicEnvironment.get_obj CicUniv.empty_ugraph uri))
- with
- | e (* BRRRRRRRRR *) ->
- Printf.sprintf "\nERRORE IN STAMPA DI %s\n%s\n"
- (UriManager.string_of_uri uri) (Printexc.to_string e)
- ) sorted_uris_without_xpointer)
- in
- [],declarative,String.length parsed_text