diff options
| author | Philipp A | 2019-12-26 23:01:00 +0100 |
|---|---|---|
| committer | Philipp A | 2019-12-26 23:36:48 +0100 |
| commit | a0e3c53758d526bb418c068bce1c99fa5a597ed3 (patch) | |
| tree | e640238b011a9ea7806ccccaf1a435e4b371a376 /src/document_tree/extra_attributes.rs | |
| parent | 7018f5d3c42f18b6c83f398db9f1915361a7c679 (diff) | |
| download | rust-rst-a0e3c53758d526bb418c068bce1c99fa5a597ed3.tar.bz2 | |
Split into smaller crates
Diffstat (limited to 'src/document_tree/extra_attributes.rs')
| -rw-r--r-- | src/document_tree/extra_attributes.rs | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/src/document_tree/extra_attributes.rs b/src/document_tree/extra_attributes.rs deleted file mode 100644 index 55896ab..0000000 --- a/src/document_tree/extra_attributes.rs +++ /dev/null @@ -1,112 +0,0 @@ -use serde_derive::Serialize; - -use crate::url::Url; -use super::attribute_types::{CanBeEmpty,FixedSpace,ID,NameToken,AlignHV,AlignH,AlignV,TableAlignH,TableBorder,TableGroupCols,Measure,EnumeratedListType}; - -pub trait ExtraAttributes<A> { - fn with_extra(extra: A) -> Self; - fn extra (& self) -> & A; - fn extra_mut(&mut self) -> &mut A; -} - -macro_rules! impl_extra { - ( $name:ident { $( $(#[$pattr:meta])* $param:ident : $type:ty ),* $(,)* } ) => ( - impl_extra!( - #[derive(Default,Debug,PartialEq,Serialize,Clone)] - $name { $( $(#[$pattr])* $param : $type, )* } - ); - ); - ( $(#[$attr:meta])+ $name:ident { $( $(#[$pattr:meta])* $param:ident : $type:ty ),* $(,)* } ) => ( - $(#[$attr])+ - pub struct $name { $( - $(#[$pattr])* - #[serde(skip_serializing_if = "CanBeEmpty::is_empty")] - pub $param : $type, - )* } - ); -} - -impl_extra!(Address { space: FixedSpace }); -impl_extra!(LiteralBlock { space: FixedSpace }); -impl_extra!(DoctestBlock { space: FixedSpace }); -impl_extra!(SubstitutionDefinition { ltrim: bool, rtrim: bool }); -impl_extra!(Comment { space: FixedSpace }); -impl_extra!(Target { - /// External reference to a URI/URL - refuri: Option<Url>, - /// References to ids attributes in other elements - refid: Option<ID>, - /// Internal reference to the names attribute of another element. May resolve to either an internal or external reference. - refname: Vec<NameToken>, - anonymous: bool, -}); -impl_extra!(Raw { space: FixedSpace, format: Vec<NameToken> }); -impl_extra!(#[derive(Debug,PartialEq,Serialize,Clone)] Image { - uri: Url, - align: Option<AlignHV>, - alt: Option<String>, - height: Option<Measure>, - width: Option<Measure>, - scale: Option<u8>, - target: Option<Url>, // Not part of the DTD but a valid argument -}); - -//bools usually are XML yesorno. “auto” however either exists and is set to something random like “1” or doesn’t exist -//does auto actually mean the numbering prefix? - -impl_extra!(BulletList { bullet: Option<String> }); -impl_extra!(EnumeratedList { enumtype: Option<EnumeratedListType>, prefix: Option<String>, suffix: Option<String> }); - -impl_extra!(Footnote { backrefs: Vec<ID>, auto: bool }); -impl_extra!(Citation { backrefs: Vec<ID> }); -impl_extra!(SystemMessage { backrefs: Vec<ID>, level: Option<usize>, line: Option<usize>, type_: Option<NameToken> }); -impl_extra!(Figure { align: Option<AlignH>, width: Option<usize> }); -impl_extra!(Table { frame: Option<TableBorder>, colsep: Option<bool>, rowsep: Option<bool>, pgwide: Option<bool> }); - -impl_extra!(TableGroup { cols: TableGroupCols, colsep: Option<bool>, rowsep: Option<bool>, align: Option<TableAlignH> }); -impl_extra!(TableHead { valign: Option<AlignV> }); -impl_extra!(TableBody { valign: Option<AlignV> }); -impl_extra!(TableRow { rowsep: Option<bool>, valign: Option<AlignV> }); -impl_extra!(TableEntry { colname: Option<NameToken>, namest: Option<NameToken>, nameend: Option<NameToken>, morerows: Option<usize>, colsep: Option<bool>, rowsep: Option<bool>, align: Option<TableAlignH>, r#char: Option<char>, charoff: Option<usize>, valign: Option<AlignV>, morecols: Option<usize> }); -impl_extra!(TableColspec { colnum: Option<usize>, colname: Option<NameToken>, colwidth: Option<String>, colsep: Option<bool>, rowsep: Option<bool>, align: Option<TableAlignH>, r#char: Option<char>, charoff: Option<usize>, stub: Option<bool> }); - -impl_extra!(OptionArgument { delimiter: Option<String> }); - -impl_extra!(Reference { - name: Option<NameToken>, //TODO: is CDATA in the DTD, so maybe no nametoken? - /// External reference to a URI/URL - refuri: Option<Url>, - /// References to ids attributes in other elements - refid: Option<ID>, - /// Internal reference to the names attribute of another element - refname: Vec<NameToken>, -}); -impl_extra!(FootnoteReference { refid: Option<ID>, refname: Vec<NameToken>, auto: bool }); -impl_extra!(CitationReference { refid: Option<ID>, refname: Vec<NameToken> }); -impl_extra!(SubstitutionReference { refname: Vec<NameToken> }); -impl_extra!(Problematic { refid: Option<ID> }); - -//also have non-inline versions. Inline image is no figure child, inline target has content -impl_extra!(TargetInline { - /// External reference to a URI/URL - refuri: Option<Url>, - /// References to ids attributes in other elements - refid: Option<ID>, - /// Internal reference to the names attribute of another element. May resolve to either an internal or external reference. - refname: Vec<NameToken>, - anonymous: bool, -}); -impl_extra!(RawInline { space: FixedSpace, format: Vec<NameToken> }); -pub type ImageInline = Image; - -impl Image { - pub fn new(uri: Url) -> Image { Image { - uri, - align: None, - alt: None, - height: None, - width: None, - scale: None, - target: None, - } } -} |
