+ | `Results results ->
+ let page = try int_of_string (req#param "page") with _ -> 1 in
+ let results_no = List.length results in
+ let results_per_page =
+ Helm_registry.get_int "search_engine.results_per_page"
+ in
+ let pages =
+ if results_no mod results_per_page = 0 then
+ results_no / results_per_page
+ else
+ results_no / results_per_page + 1
+ in
+ let pages = if pages = 0 then 1 else pages in
+ let (summary, results) = MooglePp.theory_of_result page results in
+ [ tag "PAGE", string_of_int page;
+ tag "PAGES", string_of_int pages;
+ tag "PREV_LINK", (if page > 1 then page_link "Prev" (page-1) else "");
+ tag "NEXT_LINK",
+ (if page < pages then page_link "Next" (page+1) else "");
+ tag "QUERY_KIND", query_kind;
+ tag "QUERY_SUMMARY", summary;
+ tag "RESULTS", results ]
+ | `Error msg ->
+ [ tag "PAGE", "1";
+ tag "PAGES", "1";
+ tag "PREV_LINK", "";
+ tag "NEXT_LINK", "";
+ tag "QUERY_KIND", query_kind;
+ tag "QUERY_SUMMARY", "error";
+ tag "RESULTS", msg ]
+ in
+ let advanced =
+ try
+ req#param "advanced"
+ with Http_types.Param_not_found _ -> "no"