1<?php
2/**
3 * @file
4 * The interface definition for Rules to generate output.
5 */
6
7namespace Masterminds\HTML5\Serializer;
8
9/**
10 * To create a new rule set for writing output the RulesInterface needs to be implemented.
11 * The resulting class can be specified in the options with the key of rules.
12 *
13 * For an example implementation see Serializer\OutputRules.
14 */
15interface RulesInterface
16{
17    /**
18     * The class constructor.
19     *
20     * Note, before the rules can be used a traverser must be registered.
21     *
22     * @param mixed $output  The output stream to write output to.
23     * @param array $options An array of options.
24     */
25    public function __construct($output, $options = array());
26
27    /**
28     * Register the traverser used in but the rules.
29     *
30     * Note, only one traverser can be used by the rules.
31     *
32     * @param Traverser $traverser The traverser used in the rules.
33     *
34     * @return RulesInterface $this for the current object.
35     */
36    public function setTraverser(Traverser $traverser);
37
38    /**
39     * Write a document element (\DOMDocument).
40     *
41     * Instead of returning the result write it to the output stream ($output)
42     * that was passed into the constructor.
43     *
44     * @param \DOMDocument $dom
45     */
46    public function document($dom);
47
48    /**
49     * Write an element.
50     *
51     * Instead of returning the result write it to the output stream ($output)
52     * that was passed into the constructor.
53     *
54     * @param mixed $ele
55     */
56    public function element($ele);
57
58    /**
59     * Write a text node.
60     *
61     * Instead of returning the result write it to the output stream ($output)
62     * that was passed into the constructor.
63     *
64     * @param mixed $ele
65     */
66    public function text($ele);
67
68    /**
69     * Write a CDATA node.
70     *
71     * Instead of returning the result write it to the output stream ($output)
72     * that was passed into the constructor.
73     *
74     * @param mixed $ele
75     */
76    public function cdata($ele);
77
78    /**
79     * Write a comment node.
80     *
81     * Instead of returning the result write it to the output stream ($output)
82     * that was passed into the constructor.
83     *
84     * @param mixed $ele
85     */
86    public function comment($ele);
87
88    /**
89     * Write a processor instruction.
90     *
91     * To learn about processor instructions see InstructionProcessor
92     *
93     * Instead of returning the result write it to the output stream ($output)
94     * that was passed into the constructor.
95     *
96     * @param mixed $ele
97     */
98    public function processorInstruction($ele);
99}
100