expandEnumUpper

Expands enum into single members, transforms members to CAMEL_CASE with "_" on case change, see example

enum expandEnumUpper (
EnumType
string fqnEnumType = EnumType.stringof
)

Examples

enum Elements {
    One,
    Two,
    Three,
    Four,
    FifthElement,
    ELEMENT_FIVE,
    ElementWith_Separation,
    E1emen7Number,
    E1emen7number,
}
mixin(expandEnumUpper!Elements);
/// Is going to be turned into
enum {
    ONE = Elements.One,
    TWO = Elements.Two,
    THREE = Elements.Three,
    FOUR = Elements.Four
    FIFTH_ELEMENT = Elements.FifthElement,
    ELEMENT_FIVE = Elements.ELEMENT_FIVE,
    ELEMENT_WITH_SEPARATION = Elements.ElementWith_Separation,
    E1EMEN7_NUMBER = Elements.E1emen7Number,
    E1EMEN7NUMBER = Elements.E1emen7number,
}
/// And can be used as single value
void main() {
    import std.stdio;
    /// Both are valid
    writeln(One);
    writeln(Elements.One);
}

Meta