boreholeio 0.1.0

A library for interacting with borehole.io, a subsurface data management, delivery and visualisation platform
Documentation
use super::{
    ambassador_impl_Base, Base, CompositeAxis, CoordinateAxis, Error, LabelledAxis, LinearAxis,
    LogarithmicAxis, NumericAxis,
};
use crate::{array_cache::UriResolvable, schema::array_uri_reference::AbsoluteUri};
use ambassador::Delegate;
use derive_more::From;
use ndarray::SliceInfoElem;
use serde::{Deserialize, Serialize};

#[derive(Clone, Debug, Delegate, From, Deserialize, Serialize)]
#[delegate(Base)]
#[serde(rename_all = "snake_case", tag = "type")]
pub enum ChannelAxis {
    Linear(LinearAxis),
    Logarithmic(LogarithmicAxis),
    Coordinate(CoordinateAxis),
    Composite(CompositeAxis),
    Labelled(LabelledAxis),
}

/// `NumericAxis` to `ChannelAxis` conversion.
impl From<NumericAxis> for ChannelAxis {
    fn from(numeric: NumericAxis) -> Self {
        match numeric {
            NumericAxis::Linear(axis) => axis.into(),
            NumericAxis::Logarithmic(axis) => axis.into(),
            NumericAxis::Coordinate(axis) => axis.into(),
        }
    }
}

impl UriResolvable for ChannelAxis {
    fn set_base_for_relative_uris(&mut self, base_uri: &AbsoluteUri) {
        match self {
            Self::Coordinate(axis) => axis.set_base_for_relative_uris(base_uri),
            Self::Composite(axis) => axis.set_base_for_relative_uris(base_uri),
            _ => (),
        }
    }
}