oxiproj-transformations 0.1.2

Datum transformations and coordinate conversions for OxiProj.
Documentation
//! Ports of PROJ `src/conversions/`: `noop`, `axisswap`, `unitconvert`, `cart`,
//! `geocent`, `geoc`, `topocentric`, `set`, `push`, and `pop`. Each submodule
//! exposes a `new(&TransParams) -> ProjResult<TransBuild>` constructor.

pub mod axisswap;
pub mod cart;
pub mod geoc;
pub mod geocent;
pub mod noop;
pub mod push_pop;
pub mod set;
pub mod topocentric;
pub mod unitconvert;

use crate::{TransBuild, TransParams};
use oxiproj_core::ProjResult;

/// Returns `Some(..)` for conversion names this group owns; `None` otherwise.
pub(crate) fn build(name: &str, p: &TransParams) -> Option<ProjResult<TransBuild>> {
    match name {
        "noop" => Some(noop::new(p)),
        "axisswap" => Some(axisswap::new(p)),
        "unitconvert" => Some(unitconvert::new(p)),
        "cart" => Some(cart::new(p)),
        "geocent" => Some(geocent::new(p)),
        "geoc" => Some(geoc::new(p)),
        "topocentric" => Some(topocentric::new(p)),
        "set" => Some(set::new(p)),
        "push" => Some(push_pop::new_push(p)),
        "pop" => Some(push_pop::new_pop(p)),
        _ => None,
    }
}