/
jsq.coretag
48 lines (38 loc) · 1.08 KB
/
jsq.coretag
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
UserTag jsquote Alias jsq
UserTag jsq hasEndTag
UserTag jsq NoReparse
UserTag jsq PosNumber 0
UserTag jsq Routine <<EOR
sub {
my $text = shift;
$text =~ s/^[ \t\r]*\n//;
my @lines = split /\r?\n/, $text;
for(@lines) {
( $_ !~ /'/ and s/\r/\\r/g, s/(^|[^\\])\$\{?(\w+)\}?/$1' + $2 + '/g, $_ = qq{'$_'} )
or
( $_ !~ /"/ and s/\r/\\r/g, s/(^|[^\\])\$\{?(\w+)\}?/$1" + $2 + "/g, $_ = qq{"$_"} )
or
( s/'/\\'/g, s/\r/\\r/g, s/(^|[^\\])\$\{?(\w+)\}?/$1' + $2 + '/g, $_ = qq{'$_'} );
}
return join (" +\n", @lines);
}
EOR
UserTag jsq Documentation <<EOD
=head1 jsq
Returns a string quoted for JavaScript, with variable substitution.
<script>
var astring = 'just an insert';
var somevar = [jsq] Big long string you don't
want to have to quote for JS, and you want to
insert the variable $astring.[/jsq];
</script>
Generates:
<script>
var astring = 'just an insert';
var somevar = " Big long string you don't" +
' want to have to quote for JS, and you want to' +
' insert the variable ' + astring + '.';
</script>
Used in the UI dynamic HTML.
=cut
EOD