package OpenResty::QuasiQuote::SQL;
use strict;
use warnings;
require Filter::QuasiQuote;
our @ISA = qw( Filter::QuasiQuote );
#use Module::Optimize -base; sub pmc_optimize { return $_[1]; }
sub sql {
my ($self, $s, $file, $line, $col) = @_;
my $package = ref $self;
#warn "SQL: $file: $line: $s\n";
$s =~ s/^\s+|\s+$/ /gs;
#$s =~ s/\n/ /gs;
$s =~ s/\\/\\\\/g;
$s =~ s/\s+/ /gs;
#$s =~ s/\t/\\t/gs;
$s =~ s/"/\\"/g;
$s =~ s/\$(\w+)\b([^:])/".Q(\$$1)."$2/g;
$s =~ s/\$\w+$/".Q($&)."/g;
$s =~ s/\$sym:(\w+)\b/".QI(\$$1)."/g;
$s =~ s/\$kw:(\w+)\b/".\$$1."/g;
if ($s =~ /\$(\w+):\w+\b/) {
die __PACKAGE__, ": Unknown antiquoting sequence: $&\n";
}
$s = qq{"$s"};
$s =~ s/\.""$//;
$s;
}
1;