[phobos] expand for std.metastrings

kenji hara k.hara.pg at gmail.com
Sat Nov 6 06:45:25 PDT 2010


Thanks, all.

Through the discussion, I supported following suggestions:
- Add non-string values formatting. (Andrei)
- Add type formatting. (Robert)
- Identifier expression can ommit braces. (Andrei)
- Add expandSplit makes comma separated code-sting.
  (i.e. expandSplit!"call $n times" generates q{`call `, n, ` times`}.)

And, I decided keeps expand's name.

If no other comments, I'd like to post to issue-tracker, and commit.

Kenji

2010/11/1 kenji hara <k.hara.pg at gmail.com>:
> I wrote a trivial utility template for generating code string.
> This provides some easiness and viewability of metaprogramming.
> (This is currently used in my adaptTo.)
>
> http://github.com/9rnsr/scrap/blob/master/expand/expand.d
>
> Sample:
> ----
> template GenFunc(string name)
> {
>  mixin(
>    mixin(expand!q{
>      int ${name}(){ return 10; }
>    }));
>  // result of expand! is:
>  //   q{`int ` ~ name ~ `(){ return 10; }`}
> }
> mixin GenFunc!("test");   // generates function "test" returns int
> unittest{
>  assert(test() == 10);
> }
> ----
>
> expand!q{ codes... } parses D code string, and expands ${ expr } for
> embedding expr that is expression evaluated as string in compile-time.
>
> do you think?
>
> Kenji
>


More information about the phobos mailing list