Skip to content

Commit 3e52e64

Browse files
committed
Reduce code duplication
1 parent c2f6afd commit 3e52e64

File tree

1 file changed

+18
-119
lines changed

1 file changed

+18
-119
lines changed

includes/sanitizers/class-amp-script-sanitizer.php

+18-119
Original file line numberDiff line numberDiff line change
@@ -78,53 +78,11 @@ class AMP_Script_Sanitizer extends AMP_Base_Sanitizer {
7878
protected $kept_script_count = 0;
7979

8080
/**
81-
* Style sanitizer.
81+
* Sanitizers.
8282
*
83-
* @var AMP_Style_Sanitizer
83+
* @var AMP_Base_Sanitizer[]
8484
*/
85-
protected $style_sanitizer;
86-
87-
/**
88-
* Image sanitizer.
89-
*
90-
* @var AMP_Img_Sanitizer
91-
*/
92-
protected $img_sanitizer;
93-
94-
/**
95-
* Video sanitizer.
96-
*
97-
* @var AMP_Video_Sanitizer
98-
*/
99-
protected $video_sanitizer;
100-
101-
/**
102-
* Audio sanitizer.
103-
*
104-
* @var AMP_Audio_Sanitizer
105-
*/
106-
protected $audio_sanitizer;
107-
108-
/**
109-
* Iframe sanitizer.
110-
*
111-
* @var AMP_Iframe_Sanitizer
112-
*/
113-
protected $iframe_sanitizer;
114-
115-
/**
116-
* Form sanitizer.
117-
*
118-
* @var AMP_Form_Sanitizer
119-
*/
120-
protected $form_sanitizer;
121-
122-
/**
123-
* Tag-and-attribute sanitizer.
124-
*
125-
* @var AMP_Tag_And_Attribute_Sanitizer
126-
*/
127-
protected $tag_and_attribute_sanitizer;
85+
protected $sanitizers = [];
12886

12987
/**
13088
* Init.
@@ -134,60 +92,8 @@ class AMP_Script_Sanitizer extends AMP_Base_Sanitizer {
13492
public function init( $sanitizers ) {
13593
parent::init( $sanitizers );
13694

137-
if (
138-
array_key_exists( AMP_Style_Sanitizer::class, $sanitizers )
139-
&&
140-
$sanitizers[ AMP_Style_Sanitizer::class ] instanceof AMP_Style_Sanitizer
141-
) {
142-
$this->style_sanitizer = $sanitizers[ AMP_Style_Sanitizer::class ];
143-
}
144-
145-
if (
146-
array_key_exists( AMP_Img_Sanitizer::class, $sanitizers )
147-
&&
148-
$sanitizers[ AMP_Img_Sanitizer::class ] instanceof AMP_Img_Sanitizer
149-
) {
150-
$this->img_sanitizer = $sanitizers[ AMP_Img_Sanitizer::class ];
151-
}
152-
153-
if (
154-
array_key_exists( AMP_Video_Sanitizer::class, $sanitizers )
155-
&&
156-
$sanitizers[ AMP_Video_Sanitizer::class ] instanceof AMP_Video_Sanitizer
157-
) {
158-
$this->video_sanitizer = $sanitizers[ AMP_Video_Sanitizer::class ];
159-
}
160-
161-
if (
162-
array_key_exists( AMP_Audio_Sanitizer::class, $sanitizers )
163-
&&
164-
$sanitizers[ AMP_Audio_Sanitizer::class ] instanceof AMP_Audio_Sanitizer
165-
) {
166-
$this->audio_sanitizer = $sanitizers[ AMP_Audio_Sanitizer::class ];
167-
}
168-
169-
if (
170-
array_key_exists( AMP_Iframe_Sanitizer::class, $sanitizers )
171-
&&
172-
$sanitizers[ AMP_Iframe_Sanitizer::class ] instanceof AMP_Iframe_Sanitizer
173-
) {
174-
$this->iframe_sanitizer = $sanitizers[ AMP_Iframe_Sanitizer::class ];
175-
}
176-
177-
if (
178-
array_key_exists( AMP_Form_Sanitizer::class, $sanitizers )
179-
&&
180-
$sanitizers[ AMP_Form_Sanitizer::class ] instanceof AMP_Form_Sanitizer
181-
) {
182-
$this->form_sanitizer = $sanitizers[ AMP_Form_Sanitizer::class ];
183-
}
184-
185-
if (
186-
array_key_exists( AMP_Tag_And_Attribute_Sanitizer::class, $sanitizers )
187-
&&
188-
$sanitizers[ AMP_Tag_And_Attribute_Sanitizer::class ] instanceof AMP_Tag_And_Attribute_Sanitizer
189-
) {
190-
$this->tag_and_attribute_sanitizer = $sanitizers[ AMP_Tag_And_Attribute_Sanitizer::class ];
95+
foreach ( $sanitizers as $sanitizer ) {
96+
$this->sanitizers[ get_class( $sanitizer ) ] = $sanitizer;
19197
}
19298
}
19399

@@ -213,26 +119,19 @@ public function sanitize() {
213119
// @todo There should be an attribute on script tags that opt-in to keeping tree shaking and/or to indicate what class names need to be included.
214120
// @todo Depending on the size of the underlying stylesheets, this may need to retain the use of external styles to prevent inlining excessive CSS. This may involve writing minified CSS to disk, or skipping style processing altogether if no selector conversions are needed.
215121
if ( $this->kept_script_count > 0 ) {
216-
if ( $this->style_sanitizer ) {
217-
$this->style_sanitizer->update_args( [ 'skip_tree_shaking' => true ] );
218-
}
219-
if ( $this->img_sanitizer ) {
220-
$this->img_sanitizer->update_args( [ 'native_img_used' => true ] );
221-
}
222-
if ( $this->video_sanitizer ) {
223-
$this->video_sanitizer->update_args( [ 'native_video_used' => true ] );
224-
}
225-
if ( $this->audio_sanitizer ) {
226-
$this->audio_sanitizer->update_args( [ 'native_audio_used' => true ] );
227-
}
228-
if ( $this->iframe_sanitizer ) {
229-
$this->iframe_sanitizer->update_args( [ 'native_iframe_used' => true ] );
230-
}
231-
if ( $this->form_sanitizer ) {
232-
$this->form_sanitizer->update_args( [ 'native_post_forms_allowed' => true ] );
233-
}
234-
if ( $this->tag_and_attribute_sanitizer ) {
235-
$this->tag_and_attribute_sanitizer->update_args( [ 'prefer_bento' => true ] );
122+
$sanitizer_arg_updates = [
123+
AMP_Style_Sanitizer::class => [ 'skip_tree_shaking' => true ],
124+
AMP_Img_Sanitizer::class => [ 'native_img_used' => true ],
125+
AMP_Video_Sanitizer::class => [ 'native_video_used' => true ],
126+
AMP_Audio_Sanitizer::class => [ 'native_audio_used' => true ],
127+
AMP_Iframe_Sanitizer::class => [ 'native_iframe_used' => true ],
128+
AMP_Form_Sanitizer::class => [ 'native_post_forms_allowed' => true ],
129+
AMP_Tag_And_Attribute_Sanitizer::class => [ 'prefer_bento' => true ],
130+
];
131+
foreach ( $sanitizer_arg_updates as $sanitizer_class => $sanitizer_args ) {
132+
if ( array_key_exists( $sanitizer_class, $this->sanitizers ) ) {
133+
$this->sanitizers[ $sanitizer_class ]->update_args( $sanitizer_args );
134+
}
236135
}
237136
}
238137
}

0 commit comments

Comments
 (0)