@@ -3,11 +3,12 @@ use std::str::FromStr;
33use anyhow:: { Error , bail, format_err} ;
44use linearize:: Linearize ;
55use regex:: Regex ;
6+ use schemars:: JsonSchema ;
67use serde_derive:: Serialize ;
78
89use crate :: url:: Url ;
910
10- #[ derive( Debug , PartialEq , Eq , Hash , Serialize , Clone , Copy ) ]
11+ #[ derive( Clone , Copy , Debug , PartialEq , Eq , Hash , Serialize , JsonSchema ) ]
1112pub enum EnumeratedListType {
1213 Arabic ,
1314 LowerAlpha ,
@@ -16,7 +17,7 @@ pub enum EnumeratedListType {
1617 UpperRoman ,
1718}
1819
19- #[ derive( Linearize , Debug , PartialEq , Eq , Hash , Serialize , Clone , Copy ) ]
20+ #[ derive( Clone , Copy , Linearize , Debug , PartialEq , Eq , Hash , Serialize , JsonSchema ) ]
2021pub enum FootnoteType {
2122 Number ,
2223 Symbol ,
@@ -34,21 +35,21 @@ impl TryFrom<char> for FootnoteType {
3435 }
3536}
3637
37- #[ derive( Default , Debug , PartialEq , Eq , Hash , Serialize , Clone , Copy ) ]
38+ #[ derive( Clone , Copy , Default , Debug , PartialEq , Eq , Hash , Serialize , JsonSchema ) ]
3839pub enum FixedSpace {
3940 Default ,
4041 // yes, default really is not “Default”
4142 #[ default]
4243 Preserve ,
4344}
4445
45- #[ derive( Debug , PartialEq , Eq , Hash , Serialize , Clone , Copy ) ]
46+ #[ derive( Clone , Copy , Debug , PartialEq , Eq , Hash , Serialize , JsonSchema ) ]
4647pub enum AlignH {
4748 Left ,
4849 Center ,
4950 Right ,
5051}
51- #[ derive( Debug , PartialEq , Eq , Hash , Serialize , Clone , Copy ) ]
52+ #[ derive( Clone , Copy , Debug , PartialEq , Eq , Hash , Serialize , JsonSchema ) ]
5253pub enum AlignHV {
5354 Top ,
5455 Middle ,
@@ -57,22 +58,22 @@ pub enum AlignHV {
5758 Center ,
5859 Right ,
5960}
60- #[ derive( Debug , PartialEq , Eq , Hash , Serialize , Clone , Copy ) ]
61+ #[ derive( Clone , Copy , Debug , PartialEq , Eq , Hash , Serialize , JsonSchema ) ]
6162pub enum AlignV {
6263 Top ,
6364 Middle ,
6465 Bottom ,
6566}
6667
67- #[ derive( Debug , PartialEq , Eq , Hash , Serialize , Clone , Copy ) ]
68+ #[ derive( Clone , Copy , Debug , PartialEq , Eq , Hash , Serialize , JsonSchema ) ]
6869pub enum TableAlignH {
6970 Left ,
7071 Right ,
7172 Center ,
7273 Justify ,
7374 Char ,
7475}
75- #[ derive( Debug , PartialEq , Eq , Hash , Serialize , Clone , Copy ) ]
76+ #[ derive( Clone , Copy , Debug , PartialEq , Eq , Hash , Serialize , JsonSchema ) ]
7677pub enum TableBorder {
7778 Top ,
7879 Bottom ,
@@ -82,19 +83,21 @@ pub enum TableBorder {
8283 None ,
8384}
8485
85- #[ derive( Debug , PartialEq , Eq , Hash , Serialize , Clone ) ]
86+ #[ derive( Clone , Debug , PartialEq , Eq , Hash , Serialize , JsonSchema ) ]
8687pub struct ID ( pub String ) ;
87- #[ derive( Debug , PartialEq , Eq , Hash , Serialize , Clone ) ]
88+ #[ derive( Clone , Debug , PartialEq , Eq , Hash , Serialize , JsonSchema ) ]
8889pub struct NameToken ( pub String ) ;
8990
9091// The table DTD has the cols attribute of tgroup as required, but having
9192// TableGroupCols not implement Default would leave no possible implementation
9293// for TableGroup::with_children.
93- #[ derive( Default , Debug , PartialEq , Eq , Hash , Serialize , Clone ) ]
94+ #[ derive( Clone , Default , Debug , PartialEq , Eq , Hash , Serialize , JsonSchema ) ]
9495pub struct TableGroupCols ( pub usize ) ;
9596
9697// no eq for f64
97- #[ derive( Debug , PartialEq , Serialize , Clone ) ]
98+ #[ derive( Clone , Debug , PartialEq , Serialize , JsonSchema ) ]
99+ #[ serde( tag = "unit" , content = "value" ) ]
100+ #[ schemars( _unstable_ref_variants) ]
98101pub enum Measure {
99102 // https://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#length-units
100103 Em ( f64 ) ,
@@ -118,7 +121,7 @@ impl FromStr for AlignHV {
118121 "left" => A :: Left ,
119122 "center" => A :: Center ,
120123 "right" => A :: Right ,
121- s => bail ! ( "Invalid Alignment {}" , s ) ,
124+ s => bail ! ( "Invalid Alignment {s}" ) ,
122125 } )
123126 }
124127}
0 commit comments