What's missing from Phobos for Orbit (package manager)

Jacob Carlborg doob at me.com
Wed Feb 13 01:10:44 PST 2013


On 2013-02-13 09:34, Marco Leise wrote:
> Am Tue, 12 Feb 2013 13:38:53 +0100
> schrieb Jacob Carlborg <doob at me.com>:
>
>> I've compiled a list below of things used in Orbit (directly or
>> indirectly) that Phobos is lacking in. Please tell me if I'm wrong:
>
> I can only tell you what of that list I would have had a use
> for myself in the past:
>
>>     * Configuration
>
> Yes, native to the environment (e.g. use \AppData\Roaming on
> Windows or .config on Linux)

I didn't necessarily mean native configuration. I was referring to 
configuration internally for the application. But it could be useful to 
save to disk as well.

> All of that except "action" and "multiple command lines".
> Validation is probably too complex to include at the spot. I
> mean, sometimes you need to validate the combination of all
> options, so you can just as well write a separate function.

I would I do that when I only need so simple validation? Like that an 
argument is required. The arguments parser in Tango can handle validation.

>> CTFE:
>
> I think most of that exists in Phobos or can be constructed in
> one line of code:
>
>> * format - A simple formatting function
>
> http://dlang.org/phobos/std_metastrings.html#.Format
>
>> * indexOf
>
> http://dlang.org/phobos/std_typetuple.html#.staticIndexOf
>
>> * contains
>
> staticIndexOf!(something, Tuple) != -1
>
>> * fieldsOf - Returns all the fields of the given type
>
> http://dlang.org/phobos/std_traits.html#.FieldTypeTuple
>
>> * hasField - Returns true if the given type has the given field
>
> staticIndexOf!(field, fieldsOf!Type) != -1

That's good. But I would really prefer something like "hasField" instead 
of the above. It clearly shows that's going on.

>> * TypeOfField - Returns the type of a field
>> * nameOfFieldAt - Returns the name of the field at the given position
>> * set/getValueOfField - Sets/gets the value of a field
>
> :( No idea... at least without mixins.

There's no reason for mixins.

> So I figure, Object.factory("ClassName") is too limited. I
> used to just force my code work with that one.

Yes, it's too limited. Object.factory will only work for classes with a 
default constructor or a constructor which doesn't take any arguments.

If it's unclear, I already have all of this functionality implemented. 
It's just not in Phobos.

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list