use maud::Markup;
use maud::html;
use wdl_ast::AstNode;
use wdl_ast::AstToken;
use wdl_ast::SupportedVersion;
use wdl_ast::v1::StructDefinition;
use crate::VersionBadge;
use crate::docs_tree::PageSections;
#[derive(Debug)]
pub struct Struct {
definition: StructDefinition,
version: VersionBadge,
}
impl Struct {
pub fn new(definition: StructDefinition, version: SupportedVersion) -> Self {
Self {
definition,
version: VersionBadge::new(version),
}
}
pub fn render(&self) -> (Markup, PageSections) {
let name = self.definition.name();
let name = name.text();
let markup = html! {
div class="main__container" {
p class="text-pink-400" { "Struct" }
h1 id="title" class="main__title" { code { (name) } }
div class="main__badge-container" {
(self.version.render())
}
div class="main__section" {
sprocket-code language="wdl" {
(self.definition.inner())
}
}
}
};
(markup, PageSections::default())
}
}