Thread overview
assert format of a string before a mixin
Sep 27, 2020
ddcovery
Sep 27, 2020
Adam D. Ruppe
Sep 27, 2020
ddcovery
September 27, 2020
I have a "variation" of "unaryFun" that I name "unaryProp" that, basically, doesn't require to specify "a." at the beginning of the expression.

> template unaryProp(alias propName)
> {
>   static assert(is(typeof(propName) : string), "Sorry, propName must be an string");
>   auto unaryProp(ElementType)(auto ref ElementType a)
>   {
>     return mixin("a." ~ propName);
>   }
> }
>
> assert( "hello".unaryProp!"length" == 5 );
>

Problem is I need to check that "propName" is a valid property name at compile time

> i.e. checking this Regex expression
> `^[a-zA-Z_]*[a-zA-Z0-9_]*[a-zA-Z][a-zA-Z0-9_]*$`
>

Is there any way to check a regular expression at compile time?


September 27, 2020
On Sunday, 27 September 2020 at 21:38:43 UTC, ddcovery wrote:
>> i.e. checking this Regex expression
>> `^[a-zA-Z_]*[a-zA-Z0-9_]*[a-zA-Z][a-zA-Z0-9_]*$`
>>
>
> Is there any way to check a regular expression at compile time?

Not really and I'd actually suggest not trying because even if it did work, it'd probably be very slow.

But that regex there is pretty easy to translate to a little hand-written loop function that would do the job runtime, ctfe both and do it quickly.
September 27, 2020
On Sunday, 27 September 2020 at 21:41:25 UTC, Adam D. Ruppe wrote:
> On Sunday, 27 September 2020 at 21:38:43 UTC, ddcovery wrote:
>>> i.e. checking this Regex expression
>>> `^[a-zA-Z_]*[a-zA-Z0-9_]*[a-zA-Z][a-zA-Z0-9_]*$`
>>>
>>
>> Is there any way to check a regular expression at compile time?
>
> Not really and I'd actually suggest not trying because even if it did work, it'd probably be very slow.
>
> But that regex there is pretty easy to translate to a little hand-written loop function that would do the job runtime, ctfe both and do it quickly.

Thanks Adam.