I would strongly recommend using multiple enum tagged values instead.
ie. Each one is a single value in a 0..* list.
In general it's more flexible and powerful. Even if we do need to add improved capabilities to query for multiple values in places.
As an example, I know you use shape scripts. At a guess, you're probably wanting this so a shape script can print out multiple values. But it actually means that you can't decide to convert that into decorations or similar in the future.
Using multiple tags, it would by possible to update HasTag to query on multiple values. (If it doesn't already) There's also no reason why we can't extend the syntax to get the list of values in a print (optionally specifying a separator)
Something like this:
shape main
{
rectangle(0,0,100,100);
print("#TAGS:category#");
}
decoration Val1
{
if(hasTag("category","Val1"))
{
setfillcolor(255,0,0);
ellipse(0,0,100,100);
}
}
decoration Val2
{
if(hasTag("category","Val2"))
{
setfillcolor(0,255,0);
ellipse(0,0,100,100);
}
}
decoration Val3
{
if(hasTag("category","Val3"))
{
setfillcolor(0,0,255);
ellipse(0,0,100,100);
}
}