Changeset 5082

Show
Ignore:
Timestamp:
01/20/08 18:32:30 (5 years ago)
Author:
mayuki
Message:

lang/csharp/CommandLineParser: オプションとヘルプ文言をそろえるようにした。あととりあえずhelpも無視するようにした。

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/csharp/CommandLineParser/CommandLineParser/CommandLineParser.cs

    r5080 r5082  
    5656        public void ShowHelp() 
    5757        { 
     58            Int32 maxLen = 0; 
     59            Dictionary<String, String> optionHelps = new Dictionary<string, string>(); 
    5860            foreach (PropertyInfo pi in _type.GetProperties()) 
    5961            { 
    6062                Object defaultValue = GetDefaultValue(pi); 
    6163                String defaultOrRequired = (defaultValue == null ? "(Required)" : "(Default: " + defaultValue.ToString() + ")"); 
     64                String keyName; 
     65                String optionName = ToLowerAndDelimiterize('-', pi.Name); 
    6266                if (pi.PropertyType == typeof(Boolean)) 
    6367                { 
    64                     Console.WriteLine("--{1}=<true|false>: {2} {3}", pi.Name, ToLowerAndDelimiterize('-', pi.Name), GetDescription(pi), defaultOrRequired); 
     68                    keyName = String.Format("--{0}=<true|false>", optionName); 
    6569                } 
    6670                else 
    6771                { 
    68                     Console.WriteLine("--{1}=({2}): {3} {4}", pi.Name, ToLowerAndDelimiterize('-', pi.Name), pi.PropertyType.Name, GetDescription(pi), defaultOrRequired); 
    69                 } 
     72                    keyName = String.Format("--{0}=({1})", optionName, pi.PropertyType.Name); 
     73                } 
     74                optionHelps[keyName] = GetDescription(pi) + " " + defaultOrRequired; 
     75                 
     76                if (maxLen < keyName.Length) 
     77                    maxLen = keyName.Length; 
     78            } 
     79 
     80            foreach (String key in optionHelps.Keys) 
     81            { 
     82                Console.WriteLine("{0,"+(-maxLen)+"}: {1}", key, optionHelps[key]); 
    7083            } 
    7184        } 
     
    88101            { 
    89102                returnOptions = Parse(args); 
    90                 return true; 
    91103            } 
    92104            catch (ArgumentException) 
     
    95107                return false; 
    96108            } 
     109 
     110            return (returnOptions != null); 
    97111        } 
    98112         
     
    106120                String[] parts = args[i].Split(new Char[]{ '=', ':' }, 2); 
    107121                String memberName = ToUpperCamelCase('-', parts[0]); 
     122 
     123                // Help 
     124                if (String.Compare(memberName, "help", true) == 0) 
     125                    return default(T); 
    108126                 
    109127                if (!_availableOptions.ContainsKey(memberName))