in flex-compiler-oem/src/main/java/flex2/compiler/config/CommandLineConfigurator.java [381:614]
static public String usage( String program, String defaultVar, ConfigurationBuffer cfgbuf, Set<String> keywords, LocalizationManager lmgr, String l10nPrefix )
{
// FIXME (probably a FOL, unfortunately) - this is totally biased to western languages.
Map<String, String> aliases = getAliases( cfgbuf );
Map<String, String> sesaila = new HashMap<String, String>();
for (Iterator<Map.Entry<String, String>> it = aliases.entrySet().iterator(); it.hasNext();)
{
Map.Entry<String, String> e = it.next();
sesaila.put( e.getValue(), e.getKey() );
}
TreeSet<String> printSet = new TreeSet<String>();
boolean all = false;
boolean advanced = false;
boolean details = false;
boolean syntax = false;
boolean printaliases = false;
// figure out behavior..
Set<String> newSet = new HashSet<String>();
for (Iterator<String> kit = keywords.iterator(); kit.hasNext();)
{
String keyword = kit.next();
if (keyword.equals( "list" ))
{
all = true;
newSet.add( "*" );
}
else if (keyword.equals( "advanced" ))
{
advanced = true;
if (keywords.size() == 1)
{
all = true;
newSet.add( "*" );
}
}
else if (keyword.equals( "details" ))
{
details = true;
}
else if (keyword.equals( "syntax" ))
{
syntax = true;
}
else if (keyword.equals( "aliases" ))
{
printaliases = true;
}
else
{
details = true;
newSet.add( keyword );
}
}
if (syntax)
{
List lines = ConfigurationBuffer.formatText( getSyntaxDescription( program, defaultVar, advanced, lmgr, l10nPrefix ), 78 );
StringBuilder text = new StringBuilder( 512 );
for (Iterator it = lines.iterator(); it.hasNext();)
{
text.append( it.next() );
text.append( "\n" );
}
return text.toString();
}
keywords = newSet;
// accumulate set to print
for (Iterator<String> kit = keywords.iterator(); kit.hasNext();)
{
String keyword = kit.next().toLowerCase();
for (Iterator varit = cfgbuf.getVarIterator(); varit.hasNext(); )
{
String var = (String) varit.next();
ConfigurationInfo info = cfgbuf.getInfo( var );
String description = getDescription( cfgbuf, var, lmgr, l10nPrefix);
if ((all
|| (var.indexOf( keyword ) != -1)
|| ((description != null) && (description.toLowerCase().indexOf( keyword ) != -1))
|| (keyword.matches( var ) )
|| ((sesaila.get( var ) != null) && (sesaila.get( var )).indexOf( keyword ) != -1))
&& (!info.isHidden())
&& (advanced || !info.isAdvanced()))
{
if (printaliases && sesaila.containsKey( var ))
printSet.add( sesaila.get( var ));
else
printSet.add( var );
}
else
{
/*
for (int i = 0; i < info.getAliases().length; ++i)
{
String alias = info.getAliases()[i];
if (alias.indexOf( keyword ) != -1)
{
printSet.add( var );
}
}
*/
}
}
}
StringBuilder output = new StringBuilder( 1024 );
if (printSet.size() == 0)
{
String nkm = lmgr.getLocalizedTextString( l10nPrefix + ".NoKeywordsMatched" );
output.append( nkm );
output.append( "\n" );
}
else for (Iterator<String> it = printSet.iterator(); it.hasNext();)
{
String avar = it.next();
String var = avar;
if (aliases.containsKey( avar ))
var = aliases.get( avar );
ConfigurationInfo info = cfgbuf.getInfo( var );
assert info != null;
output.append( "-" );
output.append( avar );
int count = cfgbuf.getVarArgCount( var );
if ((count >= 1) && (!isBoolean( cfgbuf, var )))
{
for (int i = 0; i < count; ++i)
{
output.append( " <" );
output.append( cfgbuf.getVarArgName( var, i ) );
output.append( ">" );
}
}
else if (count == -1)
{
String last = "";
for (int i = 0; i < 5; ++i)
{
String argname = cfgbuf.getVarArgName( var, i );
if (!argname.equals( last ))
{
output.append( " [" );
output.append( argname );
output.append( "]" );
last = argname;
}
else
{
output.append( " [...]" );
break;
}
}
}
output.append( "\n" );
if (details)
{
StringBuilder description = new StringBuilder( 160 );
if (printaliases)
{
if (aliases.containsKey( avar ))
{
String fullname = lmgr.getLocalizedTextString( l10nPrefix + ".FullName" );
description.append( fullname );
description.append( " -" );
description.append( aliases.get( avar ));
description.append( "\n" );
}
}
else if (sesaila.containsKey( var ))
{
String alias = lmgr.getLocalizedTextString( l10nPrefix + ".Alias" );
description.append( alias );
description.append( " -" );
description.append( sesaila.get( var ));
description.append( "\n" );
}
String d = getDescription(cfgbuf, var, lmgr, l10nPrefix);
if (var.equals( "help" ) && (printSet.size() > 2))
{
String helpKeywords = lmgr.getLocalizedTextString( l10nPrefix + ".HelpKeywords" );
description.append( helpKeywords );
}
else if (d != null)
description.append( d );
String flags = "";
if (info.isAdvanced())
{
String advancedString = lmgr.getLocalizedTextString( l10nPrefix + ".Advanced" );
flags += (((flags.length() == 0)? " (" : ", ") + advancedString );
}
if (info.allowMultiple())
{
String repeatableString = lmgr.getLocalizedTextString( l10nPrefix + ".Repeatable" );
flags += (((flags.length() == 0)? " (" : ", ") + repeatableString );
}
if ((defaultVar != null) && var.equals( defaultVar ))
{
String defaultString = lmgr.getLocalizedTextString( l10nPrefix + ".Default" );
flags += (((flags.length() == 0)? " (" : ", ") + defaultString );
}
if (flags.length() != 0)
{
flags += ")";
}
description.append( flags );
List descriptionLines = ConfigurationBuffer.formatText( description.toString(), 70 );
for (Iterator descit = descriptionLines.iterator(); descit.hasNext();)
{
output.append( " " );
output.append( (String) descit.next() );
output.append( "\n" );
}
}
}
return output.toString();
}