Rand Stats



Grammar message

inspired by [Grammar::PrettyErrors](https://github.com/bduggan/p6-grammar -prettyerrors), and ripping off the code used there for printing messages , prints error messages highlighting the line and, if possible, the position where it last worked.


zef install Grammar::Message


my $str = (('a'..'z').rotor(3).map: *.join("")).join("\n");
my $saved-match; # Saves in situ
$str ~~ / m { $saved-match = $/} /; # Code right behind match you need printed
say pretty-message( "Found", $saved-match);

Will print

  3 │ ghi
  4 │ jkl
  5 │▶ mno
  6 │ pqr
  7 │ stu
  8 │ vwx

with highlights for the matching line.

$str .= subst( "m", "mm" );
G.parse( $str );
say pretty-message( "Some failure around here", $saved-match);

will print

Some failure around here
  4 │ jkl
  5 │ mmno
  6 │▶ pqr
  7 │ stu
  8 │ vwx

Take into account that the point will always be the best bet, and in any case it will reflect the state of the pos attribute of the Match at the point you saved it.

See also

Original code by Brian Duggan in Grammar::PrettyErrors is the origin of this code.


Respecting the original code license, this is also licensed under the Artistic license (included).