What's missing from Phobos for Orbit (package manager)
Steven Schveighoffer
schveiguy at yahoo.com
Tue Feb 12 06:21:08 PST 2013
Some answers:
On Tue, 12 Feb 2013 07:38:53 -0500, Jacob Carlborg <doob at me.com> wrote:
> * std.process - I have not used it myself but I've heard it's not optimal
I want to get this remedied. Won't make it in 2.062, but I want to finish
this in the next month.
> * std.getopt - Doesn't support the following:
> * Required arguments
> * Restricting the values of a given argument
> * No way to automatically create a help/usage list out of the
> arguments
> * Handling positional arguments
> * No support for commands/action. That is "git commit", "commit"
> would be the command/action
> * Handle multiple command lines
> * Validation of the arguments
I know std.getopt doesn't support all these, but couldn't you support them
externally? I mean, let getopt assign the values, then perform the logic
based on what you got? You have to write the logic anyway. I suppose one
of the missing pieces here is whether an option was present or not. All
you get is the result.
You can handle the command before handling the options, as long as you
require the command to be the first parameter.
> Various convince functions:
>
> * any - Opposite of empty
!empty
> * last - Returns the last element of an array
arr[$-1];
arr.back;
> * map, find and any for associative arrays
Really, we need an AA range...
> * pluralize - Takes a string and a count. If the count is greater than 1
> it converts the word in the string to plural
basic version:
string pluralize(string x, int count)
{
return count > 1 ? x ~ "s" : x;
}
Now, you probably would need a simple mechanism to do the different plural
forms. Sometimes 'es' must be added, sometimes 'y' must be changed to
'ies', etc. But that should be a simple switch statement. The switch
statement would select a different ending, and a prefix count based on the
current ending.
Then the return would be:
return count > 1 ? x[0..pcount] ~ ending : x;
-Steve
More information about the Digitalmars-d
mailing list