module cucumber.ctutils;

///
string modulesString(Modules...)()
{
    import std.array : join;

    string[] modules;
    foreach (mod; Modules)
    {
        modules ~= mod;
    }
    return modules.join(",");
}

///
string importModulesString(Modules...)()
{
    return "import " ~ modulesString!Modules ~ ";";
}

private template HasAttribute(alias mod, string T, alias A)
{
    mixin("import " ~ fullyQualifiedName!mod ~ ";"); //so it's visible
    enum index = staticIndexOf!(A, __traits(getAttributes, mixin(T)));
    static if (index >= 0)
    {
        enum HasAttribute = true;
    }
    else
    {
        enum HasAttribute = false;
    }
}