Compare commits

...
This repository has been archived on 2024-07-25. You can view files and clone it, but cannot push or open issues or pull requests.

2 commits

Author SHA1 Message Date
a8c8b5b3db
chore: reimport mods 2022-07-25 22:54:57 +03:00
0124b34486
refac: restructure modules
Closes #20
2022-07-25 22:49:58 +03:00
13 changed files with 71 additions and 91 deletions

View file

@ -17,12 +17,9 @@ all-features = true
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[features]
prim = ["number", "bool"]
number = []
bool = []
vec = []
tuple = []
low-level = []
aggs = []
structs = []
[dependencies]
@ -31,8 +28,8 @@ maintenance = { status = "actively-developed" }
[[example]]
name = "calc"
required-features = ["vec", "number"]
required-features = ["structs"]
[[example]]
name = "dotenv"
required-features = ["vec", "tuple", "low-level"]
required-features = ["structs", "low-level"]

2
src/agg.rs Normal file
View file

@ -0,0 +1,2 @@
//! This module will contain aggregate functions (Sum, Product, etc)
//!

View file

@ -1,25 +1,6 @@
//! Contains the ``EString`` type, as well as the basic implementation of conversions to
//! string types
//!
#[cfg(any(feature = "number", feature = "bool"))]
pub mod prim;
#[cfg(any(feature = "number", feature = "bool"))]
pub use prim::*;
#[cfg(feature = "vec")]
pub mod vec;
#[cfg(feature = "vec")]
pub use vec::*;
#[cfg(feature = "tuple")]
pub mod tuple;
#[cfg(feature = "tuple")]
pub use tuple::*;
#[cfg(feature = "low-level")]
pub mod low;
#[cfg(feature = "low-level")]
pub use low::*;
use crate::ParseError;
use std::convert::Infallible;

View file

@ -1,14 +0,0 @@
//! Contains the implementations to primitive types (number, boolean)
//!
//! **NOTE**: Require the enabling of the same-name features
//!
#[cfg(feature = "bool")]
mod bool;
#[cfg(feature = "bool")]
pub use self::bool::*;
#[cfg(feature = "number")]
mod number;
#[cfg(feature = "number")]
pub use self::number::*;

View file

@ -31,8 +31,24 @@
#![allow(clippy::module_name_repetitions)]
#![warn(missing_docs)]
pub mod core;
mod error;
pub mod core;
pub mod std;
#[cfg(feature = "aggs")]
pub mod agg;
#[cfg(feature = "aggs")]
pub use agg::*;
#[cfg(feature = "low-level")]
pub mod low;
#[cfg(feature = "low-level")]
pub use low::*;
#[cfg(feature = "structs")]
pub mod structs;
#[cfg(feature = "structs")]
pub use structs::*;
pub use crate::core::*;
pub use crate::error::ParseError;

View file

@ -1,9 +1,5 @@
use crate::core::EString;
//===========================================================================//
// TRIM //
//===========================================================================//
/// Wrapper that allow to trim substring before continue
///
/// **NOTE**: Required the enabling of the `low-level` feature.

8
src/std.rs Normal file
View file

@ -0,0 +1,8 @@
//! Contains implementations for standard types (`bool`, numbers, `Option`, etc.)
//!
mod bool;
mod number;
pub use self::bool::*;
pub use number::*;

View file

@ -4,7 +4,6 @@ use crate::core::EString;
macro_rules! from_env_string_numbers_impl {
($($ty:ty),+$(,)?) => {
$(
#[cfg(feature = "number")]
impl TryFrom<EString> for $ty {
type Error = <$ty as std::str::FromStr>::Err;

10
src/structs.rs Normal file
View file

@ -0,0 +1,10 @@
//! Contains the predefined types (``SepVec``, ``Pair``, etc.)
//!
//! **NOTE**: Require the enabling the `structs` feature.
//!
mod pair;
mod sep_vec;
pub use pair::*;
pub use sep_vec::*;

View file

@ -1,6 +1,4 @@
//! Contains the implementations to tuple type
//!
//! **NOTE**: Require the enabling of the `tuple` features
//! Contains the implementations to pair tuple type
//!
use crate::core::EString;
@ -87,6 +85,7 @@ where
#[cfg(test)]
mod tests {
use super::*;
use crate::structs::SepVec;
type EqPair<A, B> = Pair<A, '=', B>;
@ -108,12 +107,6 @@ mod tests {
};
}
#[cfg(feature = "number")]
mod vec {
use crate::SepVec;
use super::*;
type LineVec<T> = SepVec<T, '\n'>;
#[test]
@ -128,4 +121,3 @@ hello=bar",
};
}
}
}

View file

@ -1,7 +1,5 @@
//! Contains the implementations to vec type
//!
//! **NOTE**: Require the enabling of the `vec` features
//!
use crate::core::EString;
use std::fmt::Write;
@ -78,6 +76,7 @@ where
#[cfg(test)]
mod tests {
use super::*;
use crate::ParseError;
const COMMA: char = ',';
const SEMI: char = ';';
@ -122,11 +121,6 @@ d,e";
};
}
#[cfg(feature = "number")]
mod numbers {
use super::*;
use crate::ParseError;
#[test]
fn should_parse_into_num_vec() {
let estr = EString::from("1,2,3,4,5");
@ -147,4 +141,3 @@ d,e";
};
}
}
}