jdiutil 1.0.1

Just-Do-It util mixin, some small util mixin to make (debug) life easier: string interpolation etc ...


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:

jdiutil: Just-Do-It util mixin

Some small util mixin to make (debug) life easier:

  • string interpolation for easy debug print: _S with var name; _s without var name
  • ToString will generate string with class fields content, instead of just plain pointer.
  • ReadOnly, ReadWrite declare fields without boilerplate code
  • Singleton, Low-Lock Singleton Pattern https://wiki.dlang.org/Low-Lock_Singleton_Pattern
  • AtomicCounted, atomic counter

Examples, check app.d:

public import jdiutil;

class Point {
  // declare fields
  mixin ReadOnly! (int,     "x");
  mixin ReadWrite!(double,  "y");
  mixin ReadWrite!(string,  "label", "default value");

  // atomic counter
  mixin AtomicCounted;

  // this is a Singleton class!
  mixin Singleton!Point;

  // debug print string helper
  mixin ToString!Point;
}

void main() {
        int i = 100;
        double d = 1.23456789;
        Point thePoint = Point.getSingleton();

        // multiple vars separated by ';'
        // _S with var name; _s without var name
        writeln(mixin(_S!"print with    var name: {i; d; thePoint}"));
        writeln(mixin(_s!"print without var name: {i; d; thePoint}"));

        thePoint.incCount();
        logger.info(mixin(_S!"works in logger too: {i; d; thePoint}"));

        thePoint.incCount();
        string str = mixin(_S!"assign to string with custom format: {i; d%06.2f; thePoint}");
        writeln(str);
}

Output:

print with    var name: i=100 d=1.23457 thePoint=app.Point(_x=0 _y=nan _label=default value _counter=0)
print without var name: 100 1.23457 app.Point(_x=0 _y=nan _label=default value _counter=0)
2020-06-20T22:31:29.053 [info] app.d:38:main works in logger too: i=100 d=1.23457 thePoint=app.Point(_x=0 _y=nan _label=default value _counter=1)
assign to string with custom format: i=100 d=001.23 thePoint=app.Point(_x=0 _y=nan _label=default value _counter=2)
Authors:
  • mw
Dependencies:
none
Versions:
1.3.0 2023-Jun-19
1.2.3 2023-Jun-16
1.2.1 2023-May-14
1.2.0 2022-Nov-14
1.1.7 2022-Jul-27
Show all 23 versions
Download Stats:
  • 0 downloads today

  • 0 downloads this week

  • 0 downloads this month

  • 121 downloads total

Score:
0.7
Short URL:
jdiutil.dub.pm