use url::Url; use super::attribute_types::{FixedSpace,ID,NameToken,AlignHV,AlignH,Measure,EnumeratedListType}; pub trait ExtraAttributes { fn extra (& self) -> & A; fn extra_mut(&mut self) -> &mut A; } #[derive(Default,Debug)] pub struct Address { pub space: FixedSpace } #[derive(Default,Debug)] pub struct LiteralBlock { pub space: FixedSpace } #[derive(Default,Debug)] pub struct DoctestBlock { pub space: FixedSpace } #[derive(Default,Debug)] pub struct SubstitutionDefinition { pub ltrim: Option, pub rtrim: Option } #[derive(Default,Debug)] pub struct Comment { pub space: FixedSpace } #[derive(Default,Debug)] pub struct Target { pub refuri: Option, pub refid: Option, pub refname: Vec, pub anonymous: Option } #[derive(Default,Debug)] pub struct Raw { pub space: FixedSpace, pub format: Vec } #[derive(Debug)] pub struct Image { pub align: Option, pub uri: Url, pub alt: Option, pub height: Option, pub width: Option, pub scale: Option, } //bools usually are XML yesorno. “auto” however either exists and is set to something random like “1” or doesn’t exist #[derive(Default,Debug)] pub struct BulletList { pub bullet: Option } #[derive(Default,Debug)] pub struct EnumeratedList { pub enumtype: Option, pub prefix: Option, pub suffix: Option } #[derive(Default,Debug)] pub struct Footnote { pub backrefs: Vec, pub auto: Option } #[derive(Default,Debug)] pub struct Citation { pub backrefs: Vec } #[derive(Default,Debug)] pub struct SystemMessage { pub backrefs: Vec, pub level: Option, pub line: Option, pub type_: Option } #[derive(Default,Debug)] pub struct Figure { pub align: Option, pub width: Option } #[derive(Default,Debug)] pub struct Table; //TODO #[derive(Default,Debug)] pub struct OptionArgument { pub delimiter: Option } #[derive(Default,Debug)] pub struct Reference { pub name: Option, pub refuri: Option, pub refid: Option, pub refname: Vec } #[derive(Default,Debug)] pub struct FootnoteReference { pub refid: Option, pub refname: Vec, pub auto: Option } #[derive(Default,Debug)] pub struct CitationReference { pub refid: Option, pub refname: Vec } #[derive(Default,Debug)] pub struct SubstitutionReference { pub refname: Vec } #[derive(Default,Debug)] pub struct Problematic { pub refid: Option } //also have non-inline versions. Inline image is no figure child, inline target has content #[derive(Default,Debug)] pub struct TargetInline { pub refuri: Option, pub refid: Option, pub refname: Vec, pub anonymous: Option } #[derive(Default,Debug)] pub struct RawInline { pub space: FixedSpace, pub format: Vec } #[derive(Debug)] pub struct ImageInline { pub align: Option, pub uri: Url, pub alt: Option, pub height: Option, pub width: Option, pub scale: Option, }