-
Notifications
You must be signed in to change notification settings - Fork 2
/
escapes.t
119 lines (83 loc) · 3.95 KB
/
escapes.t
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
use strict;
use warnings;
use Test::More;
use Test::LongString;
use lib 't/lib';
use TestDOM 'Pod::PseudoPod::DOM::Role::HTML';
use File::Spec::Functions;
use File::Slurp;
use_ok( 'Pod::PseudoPod::DOM' ) or exit;
my $file = read_file( catfile( qw( t test_file.pod ) ) );
my $result = parse_with_anchors( $file );
like_string $result,
qr/"This text should not be escaped -- it is normal \$text\."/,
'verbatim sections should be unescaped';
like_string $result,
qr|#!/bin/perl does need escaping, but not \\ \(back|,
'... including a few metacharacters';
like_string $result, qr/-- it is also "normal".+\$text./s,
'... indented too';
like_string $result, qr/octothorpe, #/, '# needs no quoting';
like_string $result, qr/ \$/, '$ needs no quoting';
like_string $result, qr/&/, '& should get quoted';
like_string $result, qr/ %/, '% needs no quoting';
like_string $result, qr/ _\./, '_ needs no quoting';
like_string $result, qr/ ~/, '~ needs no quoting';
like_string $result, qr/caret \^/, '^ needs no quoting';
like_string $result, qr/escaping: \\\./, '\ needs no quoting';
like_string $result, qr/\{\},/, '{ and } need no quoting';
like_string $result, qr/"The interesting/,
'starting double quotes should get escaped into entity';
like_string $result, qr/, "they turn/, '... even inside a paragraph';
like_string $result, qr/quotes," he said,/,
'ending double quotes should get escaped into entity';
like_string $result, qr/ direction\."/,
'... also at the end of a paragraph';
like_string $result, qr/ellipsis\.\.\. and/, 'ellipsis needs no translation';
like_string $result, qr/flame/, 'fl ligature gets no marking';
like_string $result, qr/filk/, 'fi ligature also gets no marking';
like_string $result, qr/ineffable/, 'ff ligature also gets no marking';
like_string $result, qr/ligatures—and/,
'spacey double dash should become a real emdash';
my $link = encode_link( 'negation!operator' );
like_string $result, qr/<a name="${link}1">/,
'! needs URI encoding in index anchor';
$link = encode_link( 'array@sigil' );
like_string $result, qr/<a name="${link}1">/,
'@ needs URI encoding in index anchor';
$link = encode_link( 'thepipe|' );
like_string $result, qr/<a name="${link}1">/,
'spaces removed from index anchors';
$link = encode_link( 'strangequoteaa' );
like_string $result, qr/<a name="${link}1">/,
'quotes removed from index anchors';
$link = encode_link( '$^W;carats' );
like_string $result, qr/<a name="${link}1">/,
'... carat needs URI encoding in anchor';
$link = encode_link( 'hierarchicalterms;omittingtrailingspaces' );
like_string $result, qr/<a name="${link}1">/,
'trailing spaces in hierarchical terms should be ignored';
$link = encode_link( 'codeanditalicstext' );
like_string $result, qr/<a name="${link}1">/,
'... and code/italics formatting';
$link = encode_link( '<=>;numericcomparisonoperator' );
like_string $result, qr/<a name="${link}1">/,
'... and should escape <> symbols';
$link = encode_link( 'sigils;&' );
like_string $result, qr/<a name="${link}1">/,
'... in index anchors as well';
$link = encode_link( '.tfiles' );
like_string $result, qr/<a name="${link}1">/,
'... and should suppress HTML tags in index anchors';
$link = encode_link( 'operators;<' );
like_string $result, qr/<a name="${link}1">/,
'... encoding entities as necessary';
like_string $result, qr/<code><=><\/code>/,
'... even when specified as characters';
like_string $result, qr/<li>\$BANG BANG\$<p>/,
'escapes work inside items first line';
like_string $result, qr/And they _ are \$ properly \% escaped/,
'escapes work inside items paragraphs';
like_string $result, qr/has_method/, 'no need to escape _';
like_string $result, qr/add_method/, '... anywhere';
done_testing;