From: Jeff Ober Date: Mon, 6 Jan 2020 12:57:11 +0000 (-0500) Subject: Show line number in tokenizer error messages X-Git-Tag: nailing-cargo/1.0.0~234^2~68 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=45c0b8485a41f51f1733c36e840f7e06f968af55;p=nailing-cargo.git Show line number in tokenizer error messages --- diff --git a/lib/TOML/Tiny/Tokenizer.pm b/lib/TOML/Tiny/Tokenizer.pm index 06e62bd..a991d12 100644 --- a/lib/TOML/Tiny/Tokenizer.pm +++ b/lib/TOML/Tiny/Tokenizer.pm @@ -61,9 +61,10 @@ sub tokenize { } default{ - my $prev = JSON::PP->new->pretty->encode($tokens[ scalar(@tokens) - 1 ]); - my $substr = substr($toml, pos($toml), 30) // 'undef'; - die "syntax error at:\n-->$substr\n\nprevious token was: $prev\n"; + my $pos = pos $toml; + my $line = line_number($toml, $pos); + my $substr = substr($toml, $pos, 30) // 'undef'; + die "toml syntax error on line $line:\n\t--> $substr\n"; } } } @@ -218,4 +219,11 @@ sub tokenize_float { return 0 + $toml; } +sub line_number { + my ($toml, $pos) = @_; + my $substr = substr $toml, 0, $pos + 1; + my @lines = $substr =~ /((?&NL)) $TOML/g; + return scalar @lines; +} + 1;