OSDN Git Service

Import current code.
[osdn-codes/wiki-parser.git] / sfjp / wiki / processor / html.php
1 <?php
2 namespace sfjp\Wiki\Processor;
3 if (!function_exists("kses"))
4   require_once("kses.php");
5
6 class HTML extends Base {
7   static public $allowed = array(
8     'h1' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
9     'h2' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
10     'h3' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
11     'h4' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
12     'h5' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
13     'h6' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
14     'div' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
15     'span' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
16     'address' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
17     'em' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
18     'strong' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
19     'dfn' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
20     'code' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
21     'samp' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
22     'kbd' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
23     'var' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
24     'abbr' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
25     'acronym' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
26     'blockquote' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'cite' => 1),
27     'q' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'cite' => 1),
28     'sub' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
29     'sup' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
30     'p' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
31     'br' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'clear' => 1),
32     'pre' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'width' => 1),
33     'ins' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'cite' => 1, 'datetime' => 1),
34     'del' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'cite' => 1, 'datetime' => 1),
35     'ul' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'type' => 1),
36     'ol' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'type' => 1, 'start' => 1),
37     'li' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'type' => 1, 'value' => 1),
38     'dl' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
39     'dt' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
40     'dd' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
41     'table' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'width' => 1, 'summary' => 1, 'border' => 1, 'cellspacing' => 1, 'cellpadding' => 1, 'align' => 1, 'valign' => 1, 'bgcolor' => 1),
42     'tbody' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1, 'valign' => 1),
43     'thead' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1, 'valign' => 1),
44     'tfoot' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1, 'valign' => 1),
45     'colgroup' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'width' => 1, 'span' => 1, 'align' => 1, 'valign' => 1),
46     'col' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'width' => 1, 'span' => 1, 'align' => 1, 'valign' => 1),
47     'tr' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1, 'valign' => 1, 'bgcolor' => 1),
48     'th' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1, 'valign' => 1, 'abbr' => 1, 'axis' => 1, 'headers' => 1, 'scope' => 1, 'rowspan' => 1, 'colspan' => 1, 'bgcolor' => 1),
49     'td' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1, 'valign' => 1, 'abbr' => 1, 'axis' => 1, 'headers' => 1, 'scope' => 1, 'rowspan' => 1, 'colspan' => 1, 'bgcolor' => 1),
50     'a' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'href' => 1, 'name' => 1, 'rel' => 1, 'rev' => 1, 'accesskey' => 1, 'tabindex' => 1, 'title' => 1),
51     'img' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'src' => 1, 'alt' => 1, 'name' => 1, 'height' => 1, 'width' => 1, 'border' => 1, 'title' => 1, 'align' => 1),
52     'tt' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
53     'i' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
54     'b' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
55     'big' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
56     'small' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
57     's' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
58     'u' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
59     'font' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'size' => 1, 'color' => 1, 'face' => 1),
60     'hr' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'noshade' => 1, 'align' => 1, 'size' => 1, 'width' => 1),
61     'wbr' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
62     'nobr' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
63   );
64
65   public function __construct($args = null) {
66     parent::__construct();
67   }
68
69   public function process($text) {
70     $this->formatted_text = $this->getFormatter()->raw_node(kses($text, self::$allowed, array('http', 'https', 'ftp')));
71     return $this;
72   }
73 }