U4VCAFXQNTKC7KWWE3B2JJMZMFRGLBOHSZIOXCE6EEXW7WE2Q5NAC
//! The `TSPageSpec::TSCountrySpec::TSGraphicSpec` group of data-structures mirrors
//! `ts_spec.keytree`. Its main function is TSPageSpec::new(PageJson
//! The `TSSpec::TSPageSpec::TSGraphicSpec` group of data-structures mirrors
//! `ts_spec.keytree`. Its main function is TSSpec::new(PageJson
pub struct TSPageSpec(pub Vec<TSCountrySpec>);
/// The specification for HTML pages that present a series of time-series plots. The keytree
/// specification looks like
/// ```text
/// ts_spec:
/// page:
/// data_type: u
/// country: Australia
/// graphic:
/// series:
/// id: AUSURANAA
/// id: AUSURAQS
/// id: AUSURHARMADSMEI
/// id: AUSURHARMMDSMEI
/// ```
pub struct TSSpec(pub Vec<TSPageSpec>);
fn try_into(self) -> Result<TSPageSpec, Error> {
let country_vec: Vec<TSCountrySpec> = self.vec("page::country")?;
Ok(TSPageSpec(country_vec))
fn try_into(self) -> Result<TSSpec, Error> {
let page_vec: Vec<TSPageSpec> = self.vec("ts_spec::page")?;
Ok(TSSpec(page_vec))
pub struct TSCountrySpec {
pub name: Country,
/// Component of `TSSpec`.
/// Mirrored with a keytree specification which is the `country:` key in
/// ```text
/// page:
/// country:
/// name: Australia
/// graphic:
/// series:
/// id: AUSURANAA
/// id: AUSURAQS
/// id: AUSURHARMADSMEI
/// id: AUSURHARMMDSMEI
/// ```
pub struct TSPageSpec {
pub country: Country,
pub data_type: DataType,
impl TSCountrySpec {
pub fn new(country: Country, graphics: Vec<TSGraphicSpec>) -> Self {
TSCountrySpec {
name: country,
impl TSPageSpec {
pub fn new(key: PageKey, graphics: Vec<TSGraphicSpec>) -> Self {
TSPageSpec {
country: key.country,
data_type: key.data_type,