Hi!

I’m struggling a bit with the usage of ForEach blocks. I’ve written a few rules 
for structure looking like this:

Document{-> RETAINTYPE(BREAK)};

DECLARE BR;
"\\r?\\n" -> BR;

DECLARE Line;
"[^\\r\\n]+" -> Line;
Line{->SHIFT(Line,1,2)} BR;

DECLARE Empty_Line;
"\\r?\\n[ ]*(\\r?\\n)" -> 1=Empty_Line;

DECLARE After_Empty,Before_Empty;
Line{->Before_Empty} Empty_Line;
Empty_Line Line{->After_Empty};

DECLARE Paragraph;
Line+{-PARTOF(Paragraph)->Paragraph};


Seems to do exactly what I want, but it seems that for some reason, 
ForEach-Blocks „skip“ some of the Lines. For instance, when a line starts with 
a leading SPACE, it is being skipped.

For instance, given this script:

DECLARE Test;
BLOCK(ForEach) Line{}{
    W+{->Test};
}

And this input:

This will match
  This won’t
But this will
This too


Any hints why the ForEach block might be skipping the second line?

Cheers,
Michael

Reply via email to