[Chandler-dev] a new kind of enumeration type

Grant Baillie grant at osafoundation.org
Wed Aug 30 14:07:39 PDT 2006


Hmm.... Why not just have the declaration order be the sort order?

--Grant

On 30 Aug, 2006, at 13:57, Andi Vajda wrote:

>
> While implementating Chandler's dashboard Bryan found that he  
> needed better control over the sorting of enumeration values.
>
> Currently, enumeration values are strings and are sorted as such.
> For example, if one defines an enumeration with the schema API as  
> follows:
>
>    class TriageEnum(schema.Enumeration):
>        values = "now", "later", "done"
>
> The values of this enumeration will be sorted as:
>     "done" < "later" < "now"
>
>
> Enter a new type of enumeration, an enumeration of constants. Such  
> constants have a name and a value and are sorted on their value  
> first. Multiple constants in an enum may have the same value, their  
> name is used next in sorting.
>
> By using a dict for the enumeration's values instead of a tuple,  
> one can define such a constant enumeration with the schema API:
>
>     class TriageEnum(schema.Enumeration):
>         values = {"now": 0, "later": 1, "done": -1}
>
> Upon definition, the TriageEnum class gets assigned three  
> attributes called 'now', 'later' and 'done' that contain such a  
> constant:
>
>    TriageEnum.now -> TriageEnum.now
>    TriageEnum.now.value -> 0
>    TriageEnum.now.name -> 'now'
>
>    repr(TriageEnum.now) -> 'TriageEnum.now'
>    str(TriageEnum.name) -> 'now'
>
> These constants are sorted by their values:
>     TriageEnum.done < TriageEnum.now < TriageEnum.later
>
> Andi..
>
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> Open Source Applications Foundation "chandler-dev" mailing list
> http://lists.osafoundation.org/mailman/listinfo/chandler-dev



More information about the chandler-dev mailing list