From 97664d531e09b93f257db7cb70933912d10f1e89 Mon Sep 17 00:00:00 2001 From: vitalif Date: Fri, 28 Nov 2014 13:18:18 +0000 Subject: [PATCH] Non-\x{..} utf8 in var_dump, fix forcing error state --- VMXTemplate/Compiler.pm | 2 +- VMXTemplate/Lexer.pm | 2 +- VMXTemplate/Utils.pm | 12 ++++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/VMXTemplate/Compiler.pm b/VMXTemplate/Compiler.pm index d837000..438a6e8 100644 --- a/VMXTemplate/Compiler.pm +++ b/VMXTemplate/Compiler.pm @@ -15,7 +15,7 @@ sub _Lexer sub _error { my ($self) = @_; - if ($self->YYCurtok ne 'error') + if ($self->YYCurtok ne 'invalid') { $self->{lexer}->warn('Unexpected ' . $self->YYCurtok . ($self->YYCurval ? ' ' . $self->YYCurval : '')); } diff --git a/VMXTemplate/Lexer.pm b/VMXTemplate/Lexer.pm index 519633a..2fc3561 100644 --- a/VMXTemplate/Lexer.pm +++ b/VMXTemplate/Lexer.pm @@ -243,7 +243,7 @@ sub read_token } # Unknown character $self->warn("Unexpected character '".substr($self->{code}, 0, 1)."'"); - return ('error', undef); + return ('invalid', undef); } } diff --git a/VMXTemplate/Utils.pm b/VMXTemplate/Utils.pm index 3c38bff..3325e0b 100644 --- a/VMXTemplate/Utils.pm +++ b/VMXTemplate/Utils.pm @@ -363,6 +363,15 @@ sub exec_cmp return $n ? $a <=> $b : $a cmp $b; } +# Quote strings without transforming UTF-8 to \x{...} +sub _dumper_qquote +{ + my $s = $_[0]; + $s = '' unless defined $s; + $s =~ s/\"/\\"/gs; + return '"'.$s.'"'; +} + # Data::Dumper sub var_dump { @@ -370,6 +379,9 @@ sub var_dump local $Data::Dumper::Indent = 1; local $Data::Dumper::Varname = ''; local $Data::Dumper::Sortkeys = 1; + local $Data::Dumper::Useperl = 1; + no warnings 'redefine'; + *Data::Dumper::qquote = \&_dumper_qquote; return scalar Data::Dumper::Dumper(@_); }