[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