quirks 0.0.1

Metaprogramming library for the D language


To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:

quirks

Quirks is a small library to facilitate programming with traits and mixins.

Some features:

interpolateMixin

Adds string interpolation to mixins

import quirks;
import std.stdio;

class Foo {
    int id = 1;
    uint age = 23;
    string name = "foo";
}

auto foo = new Foo;

// version with interpolateMixin
static foreach(member; FieldNameTuple!(Foo)) {
    mixin(interpolateMixin(q{
        writeln("Field ${member} has a value of: ", foo.${member});
    }));
}

// version without
static foreach(member; FieldNameTuple!(Foo)) {
    mixin(`
        writeln("Field ` ~ member ~ ` has a value of: ", foo.` ~ member ~ `);
    `);
}

hasMember, hasMethod, hasField

import quirks;

struct Foo {
    long id;
    string name() {
        return "name";
    }
}

static assert(hasMember!(S, "id"));
static assert(hasMember!(S, "name"));
static assert(!hasMember!(S, "doesNotExist"));
static assert(hasMember!(S, (member => member == "id")));

static assert(!hasMethod!(S, "id"));
static assert(hasMethod!(S, "name"));
static assert(!hasMethod!(S, "doesNotExist"));

static assert(hasField!(S, "id"));
static assert(!hasField!(S, "name"));
static assert(!hasField!(S, "doesNotExist"));

getParameters, getParameterDefaultValues, getParameterNames, getParameterTypes, getReturnType

import quirks;
import std.stdio;

uint calculateAge(long birthYear, string planet = "earth");

alias parameters = getParameters!calculateAge;

static foreach (parameter; parameters) {
    write("Parameter " , parameter.name, " has a type of ", parameter.type.stringof);

    static if (parameter.hasDefaultValue) {
        writeln(" and a default value of ", parameter.defaultValue);
    } else {
        writeln(" and no default value");
    }
}
Authors:
  • lljochemll
Dependencies:
none
Versions:
0.7.0 2020-May-22
0.6.2 2020-Feb-03
0.6.1 2020-Jan-04
0.6.0 2019-Dec-16
0.5.3 2019-Nov-25
Show all 18 versions
Download Stats:
  • 0 downloads today

  • 0 downloads this week

  • 0 downloads this month

  • 58 downloads total

Score:
0.4
Short URL:
quirks.dub.pm