script/dom/
processinginstruction.rs

1/* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
5use dom_struct::dom_struct;
6
7use crate::dom::bindings::codegen::Bindings::ProcessingInstructionBinding::ProcessingInstructionMethods;
8use crate::dom::bindings::root::DomRoot;
9use crate::dom::bindings::str::DOMString;
10use crate::dom::characterdata::CharacterData;
11use crate::dom::document::Document;
12use crate::dom::node::Node;
13
14/// An HTML processing instruction node.
15#[dom_struct]
16pub(crate) struct ProcessingInstruction {
17    characterdata: CharacterData,
18    target: DOMString,
19}
20
21impl ProcessingInstruction {
22    fn new_inherited(
23        target: DOMString,
24        data: DOMString,
25        document: &Document,
26    ) -> ProcessingInstruction {
27        ProcessingInstruction {
28            characterdata: CharacterData::new_inherited(data, document),
29            target,
30        }
31    }
32
33    pub(crate) fn new(
34        cx: &mut js::context::JSContext,
35        target: DOMString,
36        data: DOMString,
37        document: &Document,
38    ) -> DomRoot<ProcessingInstruction> {
39        Node::reflect_node(
40            cx,
41            Box::new(ProcessingInstruction::new_inherited(target, data, document)),
42            document,
43        )
44    }
45}
46
47impl ProcessingInstruction {
48    pub(crate) fn target(&self) -> &DOMString {
49        &self.target
50    }
51}
52
53impl ProcessingInstructionMethods<crate::DomTypeHolder> for ProcessingInstruction {
54    /// <https://dom.spec.whatwg.org/#dom-processinginstruction-target>
55    fn Target(&self) -> DOMString {
56        self.target.clone()
57    }
58}