@@ -723,6 +723,45 @@ public class Valadoc.IndexGenerator : Valadoc.ValadocOrgDoclet {
723723 generate_index (path + " .content.tpl" );
724724 }
725725
726+ public void generate_json (string path ) {
727+ stdout. printf (" generate JSON ...\n " );
728+
729+ string json_path = Path . build_filename (path, " packages.json" );
730+
731+ var builder = new Json .Builder ();
732+
733+ builder. begin_object ();
734+ builder. set_member_name (" books" );
735+ builder. begin_array ();
736+ Gee . ArrayList<Package > packages = get_sorted_package_list ();
737+ foreach (Package pkg in packages) {
738+ if (! pkg. is_local || regenerate_all_packages || pkg. name in requested_packages) {
739+ builder. begin_object ();
740+ builder. set_member_name (" name" );
741+ builder. add_string_value (pkg. name);
742+ builder. set_member_name (" description" );
743+ builder. add_string_value (string . joinv (" \n " , pkg. description));
744+ if (pkg. devhelp_link != null ) {
745+ builder. set_member_name (" book_path" );
746+ builder. add_string_value (pkg. devhelp_link);
747+ }
748+ builder. end_object ();
749+ }
750+ }
751+ builder. end_array ();
752+ builder. end_object ();
753+
754+ var generator = new Json .Generator ();
755+ Json . Node root = builder. get_root ();
756+ generator. set_root (root);
757+ try {
758+ generator. to_file (json_path);
759+ } catch (Error e) {
760+ stderr. printf (" %s\n " , e. message);
761+ has_error = true ;
762+ }
763+ }
764+
726765 public void regenerate_all_known_packages () throws Error {
727766 foreach (var pkg in packages_per_name. values) {
728767 if (pkg is ExternalPackage == false ) {
@@ -1362,8 +1401,8 @@ public class Valadoc.IndexGenerator : Valadoc.ValadocOrgDoclet {
13621401
13631402 string index = Path . build_path (Path . DIR_SEPARATOR_S , output_directory, " index.htm" );
13641403 generator. generate (index);
1365-
13661404 generator. generate_configs (output_directory);
1405+ generator. generate_json (output_directory);
13671406
13681407 if (reporter. errors > 0 ) {
13691408 return - 1 ;
0 commit comments