[LyX/master] Tools(listFontWithLang.pl): Group related parameters in the command syntax
Kornel Benko
kornel at lyx.org
Sat May 16 19:25:54 UTC 2020
commit 36deaaac264a684a69697f012e007603a21d34ef
Author: Kornel Benko <kornel at lyx.org>
Date: Sat May 16 21:40:26 2020 +0200
Tools(listFontWithLang.pl): Group related parameters in the command syntax
Display sequence of command parameters according to their appearance in the definition table
---
development/tools/GetOptions.pm | 15 +++++-
development/tools/listFontWithLang.pl | 83 +++++++++++++++++++--------------
2 files changed, 61 insertions(+), 37 deletions(-)
diff --git a/development/tools/GetOptions.pm b/development/tools/GetOptions.pm
index 81be0e5..0da0992 100644
--- a/development/tools/GetOptions.pm
+++ b/development/tools/GetOptions.pm
@@ -51,11 +51,22 @@ my $helpFormat = " %-8s|%-9s|%-7s|%-17s|%s\n";
sub handleOptions($)
{
- %optionsDef = %{$_[0]};
+ if (ref($_[0]) eq "ARRAY") {
+ for (my $i = 0; defined($_[0]->[$i]); $i++) {
+ my $rO = $_[0]->[$i];
+ $optionsDef{$rO->[0]} = $rO->[1];
+ $optionsDef{$rO->[0]}->{Sort} = $i+1;
+ }
+ }
+ else {
+ %optionsDef = %{$_[0]};
+ }
$optionsDef{h}->{fieldname} = "help";
$optionsDef{h}->{alias} = ["help"];
+ $optionsDef{h}->{Sort} = 0;
$optionsDef{v}->{fieldname} = "verbose";
$optionsDef{v}->{alias} = ["verbose"];
+ $optionsDef{v}->{Sort} = 0;
my %options = ("help" => 0);
my $opts = &makeOpts();
@@ -142,7 +153,7 @@ sub makeHelp()
"i" => "integer",
"f" => "float",
);
- for my $ex (sort keys %optionsDef) {
+ for my $ex (sort {$optionsDef{$a}->{Sort} <=> $optionsDef{$b}->{Sort};} keys %optionsDef) {
my $e = $optionsDef{$ex};
my $type = "";
my $needed = "";
diff --git a/development/tools/listFontWithLang.pl b/development/tools/listFontWithLang.pl
index 3589ba0..4f8ddaa 100644
--- a/development/tools/listFontWithLang.pl
+++ b/development/tools/listFontWithLang.pl
@@ -48,43 +48,56 @@ sub correctstyle($);
# alias: reference to a list of aliases e.g. ["alias1", "alias2", ... ]
# listsep: Separator for multiple data
# comment: Parameter description
-my %optionsDef = (
+my @optionsDef = (
# help + verbose already handled in 'GetOptions'
- "l" => {fieldname => "Lang",
- type => "=s", alias=>["lang"],
- comment => "Comma separated list of desired languages"},
- "math" => {fieldname => "Math",
- comment => "Select fonts probably containing math glyphs"},
- "n" => {fieldname => "FontName", listsep => ',',
- type => "=s", alias => ["name"],
- comment => "Select font-names matching these (comma separated) regexes"},
- "nn" => {fieldname => "NFontName",
- type => "=s", listsep => ',',
- comment => "Select font-names NOT matching these (comma separated) regexes"},
- "pl" => {fieldname => "PrintLangs", alias => ["printlangs"],
- comment => "Print supported languages"},
- "pf" => {fieldname => "PrintFiles", alias => ["printfiles"],
- comment => "Print font file names"},
- "p" => {fieldname => "Property",
- type => "=s", listsep => ',',
- comment => "Select fonts with properties matching these (comma separated) regexes"},
- "np" => {fieldname => "NProperty",
- type => "=s", listsep => ',',
- comment => "Select fonts with properties NOT matching these (comma separated) regexes"},
- "pp" => {fieldname => "PrintProperties", alias => ["printproperties"],
- comment => "Print properties from weight, slant and width"},
- "s" => {fieldname => "Scripts",
- type => "=s", listsep => ',',
- comment => "Select fonts with scripts matching these (comma separated) regexes"},
- "ns" => {fieldname => "NScripts",
- type => "=s", listsep => ',',
- comment => "Select fonts with scripts NOT matching these (comma separated) regexes"},
- "ps" => {fieldname => "PrintScripts", alias => ["printscripts"],
- comment => "Print supported scripts"},
- "pw" => {fieldname => "PrintWarnings",
- comment => "Print warnings about discarded/overwritten fonts, conflicting styles"},
+ ["n",
+ {fieldname => "FontName", listsep => ',',
+ type => "=s", alias => ["name"],
+ comment => "Select font-names matching these (comma separated) regexes"},],
+ ["nn",
+ {fieldname => "NFontName",
+ type => "=s", listsep => ',',
+ comment => "Select font-names NOT matching these (comma separated) regexes"},],
+ ["p",
+ {fieldname => "Property",
+ type => "=s", listsep => ',',
+ comment => "Select fonts with properties matching these (comma separated) regexes"},],
+ ["np",
+ {fieldname => "NProperty",
+ type => "=s", listsep => ',',
+ comment => "Select fonts with properties NOT matching these (comma separated) regexes"},],
+ ["s",
+ {fieldname => "Scripts",
+ type => "=s", listsep => ',',
+ comment => "Select fonts with scripts matching these (comma separated) regexes"},],
+ ["ns",
+ {fieldname => "NScripts",
+ type => "=s", listsep => ',',
+ comment => "Select fonts with scripts NOT matching these (comma separated) regexes"},],
+ ["math",
+ {fieldname => "Math",
+ comment => "Select fonts probably containing math glyphs"},],
+ ["l",
+ {fieldname => "Lang",
+ type => "=s", alias=>["lang"],
+ comment => "Comma separated list of desired languages"},],
+ ["pl",
+ {fieldname => "PrintLangs", alias => ["printlangs"],
+ comment => "Print supported languages"},],
+ ["pp",
+ {fieldname => "PrintProperties", alias => ["printproperties"],
+ comment => "Print properties from weight, slant and width"},],
+ ["ps",
+ {fieldname => "PrintScripts", alias => ["printscripts"],
+ comment => "Print supported scripts"},],
+ ["pf",
+ {fieldname => "PrintFiles", alias => ["printfiles"],
+ comment => "Print font file names"},],
+ ["pw",
+ {fieldname => "PrintWarnings",
+ comment => "Print warnings about discarded/overwritten fonts, conflicting styles"},],
);
-my %options = %{&handleOptions(\%optionsDef)};
+my %options = %{&handleOptions(\@optionsDef)};
$options{Lang} = "" if (! defined($options{Lang}));
More information about the lyx-cvs
mailing list