[SPIP] +2.1.12
[velocampus/web/www.git] / www / extensions / safehtml / lib / safehtml / classes / HTMLSax3 / Decorators.php
diff --git a/www/extensions/safehtml/lib/safehtml/classes/HTMLSax3/Decorators.php b/www/extensions/safehtml/lib/safehtml/classes/HTMLSax3/Decorators.php
new file mode 100644 (file)
index 0000000..17c2ff2
--- /dev/null
@@ -0,0 +1,122 @@
+<?php\r
+class XML_HTMLSax3_Trim {\r
+ var $orig_obj;\r
+ var $orig_method;\r
+ function XML_HTMLSax3_Trim(&$orig_obj, $orig_method) {\r
+  $this->orig_obj =& $orig_obj;\r
+  $this->orig_method = $orig_method;\r
+ }\r
+ function trimData(&$parser, $data) {\r
+  $data = trim($data);\r
+  if ($data != '') {\r
+   $this->orig_obj->{$this->orig_method}($parser, $data);\r
+  }\r
+ }\r
+}\r
+class XML_HTMLSax3_CaseFolding {\r
+ var $orig_obj;\r
+ var $orig_open_method;\r
+ var $orig_close_method;\r
+ function XML_HTMLSax3_CaseFolding(&$orig_obj, $orig_open_method, $orig_close_method) {\r
+  $this->orig_obj =& $orig_obj;\r
+  $this->orig_open_method = $orig_open_method;\r
+  $this->orig_close_method = $orig_close_method;\r
+ }\r
+ function foldOpen(&$parser, $tag, $attrs=array(), $empty = FALSE) {\r
+  $this->orig_obj->{$this->orig_open_method}($parser, strtoupper($tag), $attrs, $empty);\r
+ }\r
+ function foldClose(&$parser, $tag, $empty = FALSE) {\r
+  $this->orig_obj->{$this->orig_close_method}($parser, strtoupper($tag), $empty);\r
+ }\r
+}\r
+class XML_HTMLSax3_Linefeed {\r
+ var $orig_obj;\r
+ var $orig_method;\r
+ function XML_HTMLSax3_LineFeed(&$orig_obj, $orig_method) {\r
+  $this->orig_obj =& $orig_obj;\r
+  $this->orig_method = $orig_method;\r
+ }\r
+ function breakData(&$parser, $data) {\r
+  $data = explode("\n",$data);\r
+  foreach ( $data as $chunk ) {\r
+   $this->orig_obj->{$this->orig_method}($parser, $chunk);\r
+  }\r
+ }\r
+}\r
+class XML_HTMLSax3_Tab {\r
+ var $orig_obj;\r
+ var $orig_method;\r
+ function XML_HTMLSax3_Tab(&$orig_obj, $orig_method) {\r
+  $this->orig_obj =& $orig_obj;\r
+  $this->orig_method = $orig_method;\r
+ }\r
+ function breakData(&$parser, $data) {\r
+  $data = explode("\t",$data);\r
+  foreach ( $data as $chunk ) {\r
+   $this->orig_obj->{$this->orig_method}($this, $chunk);\r
+  }\r
+ }\r
+}\r
+class XML_HTMLSax3_Entities_Parsed {\r
+ var $orig_obj;\r
+ var $orig_method;\r
+ function XML_HTMLSax3_Entities_Parsed(&$orig_obj, $orig_method) {\r
+  $this->orig_obj =& $orig_obj;\r
+  $this->orig_method = $orig_method;\r
+ }\r
+ function breakData(&$parser, $data) {\r
+  $data = preg_split('/(&.+?;)/',$data,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);\r
+  foreach ( $data as $chunk ) {\r
+   $chunk = html_entity_decode($chunk,ENT_NOQUOTES);\r
+   $this->orig_obj->{$this->orig_method}($this, $chunk);\r
+  }\r
+ }\r
+}\r
+if (version_compare(phpversion(), '4.3', '<') && !function_exists('html_entity_decode') ) {\r
+ function html_entity_decode($str, $style=ENT_NOQUOTES) {\r
+  return strtr($str,\r
+   array_flip(get_html_translation_table(HTML_ENTITIES,$style)));\r
+ }\r
+}\r
+class XML_HTMLSax3_Entities_Unparsed {\r
+ var $orig_obj;\r
+ var $orig_method;\r
+ function XML_HTMLSax3_Entities_Unparsed(&$orig_obj, $orig_method) {\r
+  $this->orig_obj =& $orig_obj;\r
+  $this->orig_method = $orig_method;\r
+ }\r
+ function breakData(&$parser, $data) {\r
+  $data = preg_split('/(&.+?;)/',$data,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);\r
+  foreach ( $data as $chunk ) {\r
+   $this->orig_obj->{$this->orig_method}($this, $chunk);\r
+  }\r
+ }\r
+}\r
+\r
+class XML_HTMLSax3_Escape_Stripper {\r
+ var $orig_obj;\r
+ var $orig_method;\r
+ function XML_HTMLSax3_Escape_Stripper(&$orig_obj, $orig_method) {\r
+  $this->orig_obj =& $orig_obj;\r
+  $this->orig_method = $orig_method;\r
+ }\r
+ function strip(&$parser, $data) {\r
+  if ( substr($data,0,2) == '--' ) {\r
+   $patterns = array(\r
+    '/^\-\-/',    // Opening comment: --\r
+    '/\-\-$/',    // Closing comment: --\r
+   );\r
+   $data = preg_replace($patterns,'',$data);\r
+\r
+  } else if ( substr($data,0,1) == '[' ) {\r
+   $patterns = array(\r
+    '/^\[.*CDATA.*\[/s', // Opening CDATA\r
+    '/\].*\]$/s',    // Closing CDATA\r
+    );\r
+   $data = preg_replace($patterns,'',$data);\r
+  }\r
+\r
+  $this->orig_obj->{$this->orig_method}($this, $data);\r
+ }\r
+}\r
+?>
\ No newline at end of file