-
Notifications
You must be signed in to change notification settings - Fork 381
/
class-amp-rule-spec.php
96 lines (87 loc) · 2.35 KB
/
class-amp-rule-spec.php
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
<?php
/**
* Class AMP_Rule_Spec
*
* @package AMP
*/
/**
* Class AMP_Rule_Spec
*
* Set of constants used throughout the sanitizer.
*/
abstract class AMP_Rule_Spec {
/**
* AMP rule_spec types
*/
const ATTR_SPEC_LIST = 'attr_spec_list';
const TAG_SPEC = 'tag_spec';
/**
* AMP attr_spec value check results
*/
const PASS = 'pass';
const FAIL = 'fail';
const NOT_APPLICABLE = 'not_applicable';
/**
* HTML Element Tag rule names
*/
const DISALLOWED_ANCESTOR = 'disallowed_ancestor';
const MANDATORY_ANCESTOR = 'mandatory_ancestor';
const MANDATORY_PARENT = 'mandatory_parent';
/**
* HTML Element Attribute rule names
*/
const ALLOW_EMPTY = 'allow_empty';
const ALLOW_RELATIVE = 'allow_relative';
const ALLOWED_PROTOCOL = 'allowed_protocol';
const ALTERNATIVE_NAMES = 'alternative_names';
const BLACKLISTED_VALUE_REGEX = 'blacklisted_value_regex';
const DISALLOWED_DOMAIN = 'disallowed_domain';
const MANDATORY = 'mandatory';
const VALUE = 'value';
const VALUE_CASEI = 'value_casei';
const VALUE_REGEX = 'value_regex';
const VALUE_REGEX_CASEI = 'value_regex_casei';
/**
* If a node type listed here is invalid, it and it's subtree will be
* removed if it is invalid. This is mainly because any children will be
* non-functional without this parent.
*
* If a tag is not listed here, it will be replaced by its children if it
* is invalid.
*
* @todo There are other nodes that should probably be listed here as well.
*
* @var array
*/
public static $node_types_to_remove_if_invalid = array(
'form',
'input',
'link',
'meta',
'style',
// Include 'script' here?
);
/**
* It is mentioned in the documentation in several places that data-*
* is generally allowed, but there is no specific rule for it in the
* protoascii file, so we include it here.
*
* @var array
*/
public static $whitelisted_attr_regex = array(
'@^data-[a-zA-Z][\\w:.-]*$@uis',
'(update|item|pagination)', // Allowed for live reference points.
);
/**
* Additional allowed tags.
*
* @var array
*/
public static $additional_allowed_tags = array(
// An experimental tag with no protoascii.
'amp-share-tracking' => array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
);
}