diff options
Diffstat (limited to 'includes/tidy/RaggettBase.php')
-rw-r--r-- | includes/tidy/RaggettBase.php | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/includes/tidy/RaggettBase.php b/includes/tidy/RaggettBase.php new file mode 100644 index 00000000..a3717b2b --- /dev/null +++ b/includes/tidy/RaggettBase.php @@ -0,0 +1,47 @@ +<?php + +namespace MediaWiki\Tidy; + +abstract class RaggettBase extends TidyDriverBase { + /** + * Generic interface for wrapping and unwrapping HTML for Dave Raggett's tidy. + * + * @param string $text Hideous HTML input + * @return string Corrected HTML output + */ + public function tidy( $text ) { + $wrapper = new RaggettWrapper; + $wrappedtext = $wrapper->getWrapped( $text ); + + $retVal = null; + $correctedtext = $this->cleanWrapped( $wrappedtext, false, $retVal ); + + if ( $retVal < 0 ) { + wfDebug( "Possible tidy configuration error!\n" ); + return $text . "\n<!-- Tidy was unable to run -->\n"; + } elseif ( is_null( $correctedtext ) ) { + wfDebug( "Tidy error detected!\n" ); + return $text . "\n<!-- Tidy found serious XHTML errors -->\n"; + } + + $correctedtext = $wrapper->postprocess( $correctedtext ); // restore any hidden tokens + + return $correctedtext; + } + + public function validate( $text, &$errorStr ) { + $retval = 0; + $errorStr = $this->cleanWrapped( $text, true, $retval ); + return ( $retval < 0 && $errorStr == '' ) || $retval == 0; + } + + /** + * Perform a clean/repair operation + * @param string $text HTML to check + * @param bool $stderr Whether to read result from STDERR rather than STDOUT + * @param int &$retval Exit code (-1 on internal error) + * @return null|string + * @throws MWException + */ + abstract protected function cleanWrapped( $text, $stderr = false, &$retval = null ); +} |