* bug #11692 fixed - help section mixing default en_US + others was not sorted 15/18415/3
Samuel GOUGEON [Fri, 5 Aug 2016 04:28:07 +0000 (06:28 +0200)]
  - http://bugzilla.scilab.org/11692
  - other minor code improvements
  - tested on a separate module

Change-Id: Idff3bd558ce1edff4b26e5448de9fd697e2a5dd6

scilab/CHANGES.md
scilab/modules/helptools/macros/xmltoformat.sci

index dcd2b05..26dbbe6 100644 (file)
@@ -253,6 +253,7 @@ Bug Fixes
 * [Bug #9912](http://bugzilla.scilab.org/show_bug.cgi?id=9912) fixed   - In case of missing translated help page, the default en_US was sometimes ignored
 * [Bug #9153](http://bugzilla.scilab.org/9153) fixed                   - The `isqualbitwise` help page was inaccurate and badly located
 * [Bug #11375](http://bugzilla.scilab.org/show_bug.cgi?id=11375) fixed - When a localized help subdirectory has only a CHAPTER file specifying the section title, it was ignored.
+* [Bug #11692](http://bugzilla.scilab.org/show_bug.cgi?id=11692) fixed - The summary of a help section built from both default en_US and localized files was never sorted overall.
 * [Bug #11959](http://bugzilla.scilab.org/show_bug.cgi?id=11959) fixed - Allow "Zoom Area" to be clicked out of axes
 * [Bug #12110](http://bugzilla.scilab.org/show_bug.cgi?id=12110) fixed - Unable to zoom multiple axes at once
 * [Bug #13583](http://bugzilla.scilab.org/show_bug.cgi?id=13583) fixed - `getd` loading a script including a `clear` instruction yielded an error
index c7b5b89..c4cb24e 100644 (file)
@@ -4,6 +4,7 @@
 // Copyright (C) 2009 DIGITEO - Vincent COUVERT <vincent.couvert@scilab.org>
 // Copyright (C) 2010 - 2011 DIGITEO - Allan CORNET
 // Copyright (C) 2013 - Scilab Enterprises - Clement DAVID
+// Copyright (C) 2016 - Samuel GOUGEON
 //
 // Copyright (C) 2012 - 2016 - Scilab Enterprises
 //
@@ -364,19 +365,14 @@ function generated_files = xmltoformat(output_format,dirs,titles,directory_langu
         //
 
         nb_dir = size(dirs_c,"*");
-        displaydone = 0;
 
+        if nb_dir > 1 then
+            mprintf(_("\nBuilding master documents:\n"));
+        elseif nb_dir==1
+            mprintf(_("\nBuilding the master document:\n"));
+        end
+        
         for k=1:nb_dir
-
-            if nb_dir > 1 then
-                if displaydone == 0 then
-                    mprintf(_("\nBuilding master documents:\n"));
-                    displaydone = 1;
-                end
-            else
-                mprintf(_("\nBuilding the master document:\n"));
-            end
-
             mprintf(_("\t%s\n"),strsubst(dirs_c(k),SCI_long,"SCI"));
 
             this_tree  = contrib_tree(dirs_c(k));
@@ -391,19 +387,14 @@ function generated_files = xmltoformat(output_format,dirs,titles,directory_langu
     else
 
         nb_dir = size(dirs,"*");
-        displaydone = 0;
 
+        if nb_dir > 1 then
+            mprintf(_("\nBuilding master documents:\n"));
+        elseif nb_dir==1
+            mprintf(_("\nBuilding the master document:\n"));
+        end
+        
         for k=1:nb_dir
-
-            if nb_dir > 1 then
-                if displaydone == 0 then
-                    mprintf(_("\nBuilding master documents:\n"));
-                    displaydone = 1;
-                end
-            else
-                mprintf(_("\nBuilding the master document:\n"));
-            end
-
             mprintf(_("\t%s\n"),strsubst(dirs(k),SCI_long,"SCI"));
 
             this_tree  = contrib_tree(dirs(k));
@@ -860,6 +851,9 @@ function x2f_reset_help_mod_var(language)
     for k = 1:size_cleaned_modules;
         addchapter_path = SCI + "/modules/" + cleaned_ordered_modules(k) + "/help/" + language + "/addchapter.sce";
         if isfile(addchapter_path) then
+
+
+
             exec(addchapter_path, -1);
         end
     end
@@ -963,13 +957,7 @@ function tree = x2f_dir_to_tree(directory,level)
     end
 
     // Get the default title
-
-    if getos() == "Windows" then
-        tmpdirectory = strsubst(directory,"/\\$/","","r");
-    else
-        tmpdirectory = strsubst(directory,"/\/$/","","r");
-    end
-
+    tmpdirectory = strsubst(directory,"/\"+filesep()+"$/","","r");
     tree("title_default") = basename(tmpdirectory);
 
     //
@@ -1168,8 +1156,6 @@ endfunction
 
 function desc_out = x2f_read_CHAPTER(file_in)
 
-    desc_out = struct();
-
     rhs  = argn(2);
 
     // Check number of input arguments
@@ -1198,6 +1184,7 @@ function desc_out = x2f_read_CHAPTER(file_in)
 
     FILETOPARSE = mgetl(file_in);
 
+    desc_out = struct();
     current_field = "";
 
     for i=1:size(FILETOPARSE,"*")
@@ -1329,8 +1316,7 @@ function desc_out = x2f_cat(desc_in_1,desc_in_2)
     // ... and now, Action
     // =========================================================================
 
-    fields_in_2      = getfield(1,desc_in_2);
-    fields_in_2(1:2) = [];
+    fields_in_2 = fieldnames(desc_in_2);
 
     if or(isfield(desc_in_1,fields_in_2)) then
         error(msprintf(gettext("%s: The 2 mlist must not have any field in common .\n"),"x2f_cat"));
@@ -1471,7 +1457,7 @@ function master_document = x2f_tree_to_master( tree )
     // Loop on dir_
     // =========================================================================
 
-    my_subtrees = getfield(1,tree);
+    my_subtrees = fieldnames(tree);
     my_subtrees(find(part(my_subtrees,1:4)<>"dir_")) = [];
 
     for i=1:size(my_subtrees,"*")
@@ -1582,7 +1568,7 @@ function master_section = x2f_tree_to_section( tree , offset )
     // Loop on dir_
     // =========================================================================
 
-    my_subtrees = getfield(1,tree);
+    my_subtrees = fieldnames(tree);
     my_subtrees(find(part(my_subtrees,1:4)<>"dir_")) = [];
 
     for i=1:size(my_subtrees,"*")
@@ -1600,12 +1586,13 @@ function master_section = x2f_tree_to_section( tree , offset )
     end
 
     master_section = [ master_section ; "</"+section_type+">" ];
-
 endfunction
 
 // =============================================================================
 // tree_out = x2f_merge_trees( tree_in_1 , tree_in_2 )
-//
+//    tree_in_1: reference
+//    tree_in_2: secondary (to be completed from reference)
+//    
 // Date : 27/04/2009
 // =============================================================================
 
@@ -1638,26 +1625,24 @@ function tree_out = x2f_merge_trees( tree_in_1 , tree_in_2 )
 
     // Loop on dir_
     // =========================================================================
-
-    my_subtrees = getfield(1,tree_in_1);
+    my_subtrees = fieldnames(tree_in_1);
     my_subtrees(find(part(my_subtrees,1:4)<>"dir_")) = [];
-
-    for i=1:size(my_subtrees,"*")
+    for my_subtree = my_subtrees(:)'
         // Check if the subtree exists in tree_in_2
-        if ~isfield(tree_in_2,my_subtrees(i)) then
+        if ~isfield(tree_in_2, my_subtree) then
             // if not, copy the whole subtree in tree_in_2
-            this_subtree             = tree_in_1(my_subtrees(i));
-            tree_out(my_subtrees(i)) = tree_in_1(my_subtrees(i));
+            tree_out(my_subtree)     = tree_in_1(my_subtree);
+            this_subtree             = tree_in_1(my_subtree);
             tree_out("xml_number")   = tree_out("xml_number") + this_subtree("xml_number");
 
         else
             // if yes, iterate with x2f_merge_trees
-            this_subtree_before      = tree_in_2(my_subtrees(i))
+            this_subtree_before      = tree_in_2(my_subtree)
             xml_number_before        = this_subtree_before("xml_number");
-            this_subtree_after       = x2f_merge_trees( tree_in_1(my_subtrees(i)) , this_subtree_before );
+            this_subtree_after       = x2f_merge_trees( tree_in_1(my_subtree) , this_subtree_before );
             xml_number_after         = this_subtree_after("xml_number");
 
-            tree_out(my_subtrees(i)) = this_subtree_after;
+            tree_out(my_subtree)     = this_subtree_after;
             tree_out("xml_number")   = tree_out("xml_number") + xml_number_after - xml_number_before;
         end
     end
@@ -1685,9 +1670,11 @@ function tree_out = x2f_merge_trees( tree_in_1 , tree_in_2 )
             tree_out("xml_number")  = tree_out("xml_number") + 1;
         end
     end
-
-    tree_out("xml_list") = xmllist_out;
-
+    
+    // Fix http://bugzilla.scilab.org/11692 :
+    tmp = strsubst(convstr(xmllist_out(:,4)), "/^percent/","%","r")
+    [tmp, k] = gsort(tmp, "g", "i");
+    tree_out("xml_list") = xmllist_out(k,:);
 endfunction
 
 // =============================================================================
@@ -1731,7 +1718,7 @@ function xmllist_out = x2f_cat_xmllist( tree , xmllist_in )
     // Loop on dir_
     // =========================================================================
 
-    my_subtrees = getfield(1,tree);
+    my_subtrees = fieldnames(tree);
     my_subtrees(find(part(my_subtrees,1:4)<>"dir_")) = [];
 
     for i=1:size(my_subtrees,"*")