teo_parser/ast/
doc_comment.rs1
2use serde::Serialize;
3use crate::ast::span::Span;
4use crate::format::Writer;
5use crate::impl_node_defaults;
6use crate::traits::write::Write;
7
8#[derive(Debug, Clone, Serialize, PartialEq, Eq, Hash)]
9pub struct DocComment {
10 pub(crate) span: Span,
11 pub(crate) path: Vec<usize>,
12 pub(crate) name: Option<String>,
13 pub(crate) desc: Option<String>,
14}
15
16impl_node_defaults!(DocComment);
17
18impl DocComment {
19
20 pub fn name(&self) -> Option<&str> {
21 self.name.as_ref().map(|n| n.as_str())
22 }
23
24 pub fn desc(&self) -> Option<&str> {
25 self.desc.as_ref().map(|n| n.as_str())
26 }
27}
28
29impl Write for DocComment {
30 fn write<'a>(&'a self, writer: &mut Writer<'a>) {
31 let mut contents = vec![];
32 if let Some(name) = self.name() {
33 contents.push("/// @name ");
34 contents.push(name);
35 contents.push("\n");
36 }
37 if let Some(desc) = self.desc() {
38 contents.push("/// ");
39 contents.push(desc);
40 contents.push("\n");
41 }
42 writer.write_contents(self, contents);
43
44 }
45}