Skip to content

Commit 2529281

Browse files
authored
Merge pull request #26 from epage/refactor
feat: Re-organize API
2 parents 083fe5d + d752056 commit 2529281

17 files changed

+137
-97
lines changed
File renamed without changes.
File renamed without changes.

src/predicate/constant.rs renamed to src/constant.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ impl<T> Predicate for BooleanPredicate<T> {
3434
/// # Examples
3535
///
3636
/// ```
37-
/// use predicates::predicate::*;
37+
/// use predicates::prelude::*;
3838
///
39-
/// let predicate_fn = always();
39+
/// let predicate_fn = predicate::always();
4040
/// assert_eq!(true, predicate_fn.eval(&5));
4141
/// assert_eq!(true, predicate_fn.eval(&10));
4242
/// assert_eq!(true, predicate_fn.eval(&15));
@@ -55,9 +55,9 @@ pub fn always<T>() -> BooleanPredicate<T> {
5555
/// # Examples
5656
///
5757
/// ```
58-
/// use predicates::predicate::*;
58+
/// use predicates::prelude::*;
5959
///
60-
/// let predicate_fn = never();
60+
/// let predicate_fn = predicate::never();
6161
/// assert_eq!(false, predicate_fn.eval(&5));
6262
/// assert_eq!(false, predicate_fn.eval(&10));
6363
/// assert_eq!(false, predicate_fn.eval(&15));

src/predicate/mod.rs renamed to src/core.rs

Lines changed: 17 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,13 @@
1-
// Copyright (c) 2017, Nick Stevens <[email protected]>
1+
// Copyright (c) 2018 The predicates-rs Project Developers.
22
//
33
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
4-
// http://www.apache.org/license/LICENSE-2.0> or the MIT license
4+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
55
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
66
// option. This file may not be copied, modified, or distributed
77
// except according to those terms.
88

9-
//! Predicate
10-
//!
11-
//! This module contains the `Predicate` trait and a number of combinators for
12-
//! the trait. See the crate docs, and the docs for `Predicate`, for full detail.
13-
14-
// primitive `Predicate` types
15-
mod constant;
16-
mod function;
17-
mod ord;
18-
mod set;
19-
pub use self::constant::{always, never, BooleanPredicate};
20-
pub use self::function::{function, FnPredicate};
21-
pub use self::ord::{eq, ge, gt, le, lt, ne, EqPredicate, OrdPredicate};
22-
pub use self::set::{contains, contains_hashable, contains_ord, ContainsPredicate,
23-
HashableContainsPredicate, OrdContainsPredicate};
24-
25-
// specialized primitive `Predicate` types
26-
pub mod str;
27-
pub mod path;
28-
pub mod float;
29-
30-
// combinators
31-
mod boolean;
32-
mod boxed;
33-
pub use self::boolean::{AndPredicate, NotPredicate, OrPredicate};
34-
pub use self::boxed::BoxPredicate;
9+
use boolean::{AndPredicate, NotPredicate, OrPredicate};
10+
use boxed::BoxPredicate;
3511

3612
/// Trait for generically evaluating a type against a dynamically created
3713
/// predicate function.
@@ -53,10 +29,10 @@ pub trait Predicate {
5329
/// # Examples
5430
///
5531
/// ```
56-
/// use predicates::predicate::*;
32+
/// use predicates::prelude::*;
5733
///
58-
/// let predicate_fn1 = always().and(always());
59-
/// let predicate_fn2 = always().and(never());
34+
/// let predicate_fn1 = predicate::always().and(predicate::always());
35+
/// let predicate_fn2 = predicate::always().and(predicate::never());
6036
/// assert_eq!(true, predicate_fn1.eval(&4));
6137
/// assert_eq!(false, predicate_fn2.eval(&4));
6238
fn and<B>(self, other: B) -> AndPredicate<Self, B>
@@ -72,11 +48,11 @@ pub trait Predicate {
7248
/// # Examples
7349
///
7450
/// ```
75-
/// use predicates::predicate::*;
51+
/// use predicates::prelude::*;
7652
///
77-
/// let predicate_fn1 = always().or(always());
78-
/// let predicate_fn2 = always().or(never());
79-
/// let predicate_fn3 = never().or(never());
53+
/// let predicate_fn1 = predicate::always().or(predicate::always());
54+
/// let predicate_fn2 = predicate::always().or(predicate::never());
55+
/// let predicate_fn3 = predicate::never().or(predicate::never());
8056
/// assert_eq!(true, predicate_fn1.eval(&4));
8157
/// assert_eq!(true, predicate_fn2.eval(&4));
8258
/// assert_eq!(false, predicate_fn3.eval(&4));
@@ -93,10 +69,10 @@ pub trait Predicate {
9369
/// # Examples
9470
///
9571
/// ```
96-
/// use predicates::predicate::*;
72+
/// use predicates::prelude::*;
9773
///
98-
/// let predicate_fn1 = always().not();
99-
/// let predicate_fn2 = never().not();
74+
/// let predicate_fn1 = predicate::always().not();
75+
/// let predicate_fn2 = predicate::never().not();
10076
/// assert_eq!(false, predicate_fn1.eval(&4));
10177
/// assert_eq!(true, predicate_fn2.eval(&4));
10278
fn not(self) -> NotPredicate<Self>
@@ -121,11 +97,11 @@ pub trait Predicate {
12197
/// # Examples
12298
///
12399
/// ```
124-
/// use predicates::predicate::*;
100+
/// use predicates::prelude::*;
125101
///
126102
/// let predicates = vec![
127-
/// always().boxed(),
128-
/// never().boxed(),
103+
/// predicate::always().boxed(),
104+
/// predicate::never().boxed(),
129105
/// ];
130106
/// assert_eq!(true, predicates[0].eval(&4));
131107
/// assert_eq!(false, predicates[1].eval(&4));

src/predicate/float/close.rs renamed to src/float/close.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ impl IsClosePredicate {
3131
/// # Examples
3232
///
3333
/// ```
34-
/// use predicates::predicate::*;
34+
/// use predicates::prelude::*;
3535
///
3636
/// let a = 0.15_f64 + 0.15_f64 + 0.15_f64;
37-
/// let predicate_fn = float::is_close(a).distance(5);
37+
/// let predicate_fn = predicate::float::is_close(a).distance(5);
3838
/// ```
3939
pub fn distance(mut self, distance: <f64 as Ulps>::U) -> Self {
4040
self.epsilon = (distance as f64) * ::std::f64::EPSILON;
@@ -50,10 +50,10 @@ impl IsClosePredicate {
5050
/// # Examples
5151
///
5252
/// ```
53-
/// use predicates::predicate::*;
53+
/// use predicates::prelude::*;
5454
///
5555
/// let a = 0.15_f64 + 0.15_f64 + 0.15_f64;
56-
/// let predicate_fn = float::is_close(a).epsilon(5.0 * ::std::f64::EPSILON);
56+
/// let predicate_fn = predicate::float::is_close(a).epsilon(5.0 * ::std::f64::EPSILON);
5757
/// ```
5858
pub fn epsilon(mut self, epsilon: f64) -> Self {
5959
self.epsilon = epsilon;
@@ -67,10 +67,10 @@ impl IsClosePredicate {
6767
/// # Examples
6868
///
6969
/// ```
70-
/// use predicates::predicate::*;
70+
/// use predicates::prelude::*;
7171
///
7272
/// let a = 0.15_f64 + 0.15_f64 + 0.15_f64;
73-
/// let predicate_fn = float::is_close(a).ulps(5);
73+
/// let predicate_fn = predicate::float::is_close(a).ulps(5);
7474
/// ```
7575
pub fn ulps(mut self, ulps: <f64 as Ulps>::U) -> Self {
7676
self.ulps = ulps;
@@ -92,11 +92,11 @@ impl Predicate for IsClosePredicate {
9292
/// # Examples
9393
///
9494
/// ```
95-
/// use predicates::predicate::*;
95+
/// use predicates::prelude::*;
9696
///
9797
/// let a = 0.15_f64 + 0.15_f64 + 0.15_f64;
9898
/// let b = 0.1_f64 + 0.1_f64 + 0.25_f64;
99-
/// let predicate_fn = float::is_close(a);
99+
/// let predicate_fn = predicate::float::is_close(a);
100100
/// assert_eq!(true, predicate_fn.eval(&b));
101101
/// assert_eq!(false, predicate_fn.distance(0).eval(&b));
102102
/// ```
File renamed without changes.

src/predicate/function.rs renamed to src/function.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ where
4141
/// # Examples
4242
///
4343
/// ```
44-
/// use predicates::predicate::{self, Predicate};
44+
/// use predicates::prelude::*;
4545
///
4646
/// struct Example {
4747
/// string: String,

src/lib.rs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
//! A few different examples of how predicates might be used:
3333
//!
3434
//! ```
35-
//! use predicates::{predicate, Predicate};
35+
//! use predicates::prelude::*;
3636
//!
3737
//! // The simplest predicates are `always()` and `never()`, which always returns
3838
//! // `true` and always returns `false`, respectively. The values are simply
@@ -92,6 +92,23 @@ extern crate float_cmp;
9292
#[cfg(feature = "regex")]
9393
extern crate regex;
9494

95-
// core `Predicate` trait
96-
pub mod predicate;
97-
pub use self::predicate::{BoxPredicate, Predicate};
95+
pub mod prelude;
96+
97+
mod core;
98+
pub use core::Predicate;
99+
mod boxed;
100+
pub use boxed::BoxPredicate;
101+
102+
// core predicates
103+
pub mod constant;
104+
pub mod function;
105+
pub mod ord;
106+
pub mod set;
107+
108+
// combinators
109+
pub mod boolean;
110+
111+
// specialized primitive `Predicate` types
112+
pub mod str;
113+
pub mod path;
114+
pub mod float;

src/predicate/ord.rs renamed to src/ord.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ where
4646
/// # Examples
4747
///
4848
/// ```
49-
/// use predicates::predicate::*;
49+
/// use predicates::prelude::*;
5050
///
51-
/// let predicate_fn = eq(5);
51+
/// let predicate_fn = predicate::eq(5);
5252
/// assert_eq!(true, predicate_fn.eval(&5));
5353
/// assert_eq!(false, predicate_fn.eval(&10));
5454
/// ```
@@ -68,9 +68,9 @@ where
6868
/// # Examples
6969
///
7070
/// ```
71-
/// use predicates::predicate::*;
71+
/// use predicates::prelude::*;
7272
///
73-
/// let predicate_fn = ne(5);
73+
/// let predicate_fn = predicate::ne(5);
7474
/// assert_eq!(false, predicate_fn.eval(&5));
7575
/// assert_eq!(true, predicate_fn.eval(&10));
7676
/// ```
@@ -124,9 +124,9 @@ where
124124
/// # Examples
125125
///
126126
/// ```
127-
/// use predicates::predicate::*;
127+
/// use predicates::prelude::*;
128128
///
129-
/// let predicate_fn = lt(5);
129+
/// let predicate_fn = predicate::lt(5);
130130
/// assert_eq!(true, predicate_fn.eval(&4));
131131
/// assert_eq!(false, predicate_fn.eval(&6));
132132
/// ```
@@ -146,9 +146,9 @@ where
146146
/// # Examples
147147
///
148148
/// ```
149-
/// use predicates::predicate::*;
149+
/// use predicates::prelude::*;
150150
///
151-
/// let predicate_fn = le(5);
151+
/// let predicate_fn = predicate::le(5);
152152
/// assert_eq!(true, predicate_fn.eval(&4));
153153
/// assert_eq!(true, predicate_fn.eval(&5));
154154
/// assert_eq!(false, predicate_fn.eval(&6));
@@ -169,9 +169,9 @@ where
169169
/// # Examples
170170
///
171171
/// ```
172-
/// use predicates::predicate::*;
172+
/// use predicates::prelude::*;
173173
///
174-
/// let predicate = ge(5);
174+
/// let predicate = predicate::ge(5);
175175
/// assert_eq!(false, predicate.eval(&4));
176176
/// assert_eq!(true, predicate.eval(&5));
177177
/// assert_eq!(true, predicate.eval(&6));
@@ -192,9 +192,9 @@ where
192192
/// # Examples
193193
///
194194
/// ```
195-
/// use predicates::predicate::*;
195+
/// use predicates::prelude::*;
196196
///
197-
/// let predicate_fn = gt(5);
197+
/// let predicate_fn = predicate::gt(5);
198198
/// assert_eq!(false, predicate_fn.eval(&4));
199199
/// assert_eq!(false, predicate_fn.eval(&5));
200200
/// assert_eq!(true, predicate_fn.eval(&6));

src/predicate/path/existence.rs renamed to src/path/existence.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ impl Predicate for ExistencePredicate {
3232
///
3333
/// ```
3434
/// use std::path::Path;
35-
/// use predicates::predicate::*;
35+
/// use predicates::prelude::*;
3636
///
37-
/// let predicate_fn = path::exists();
37+
/// let predicate_fn = predicate::path::exists();
3838
/// assert_eq!(true, predicate_fn.eval(Path::new("Cargo.toml")));
3939
/// ```
4040
pub fn exists() -> ExistencePredicate {
@@ -47,9 +47,9 @@ pub fn exists() -> ExistencePredicate {
4747
///
4848
/// ```
4949
/// use std::path::Path;
50-
/// use predicates::predicate::*;
50+
/// use predicates::prelude::*;
5151
///
52-
/// let predicate_fn = path::missing();
52+
/// let predicate_fn = predicate::path::missing();
5353
/// assert_eq!(true, predicate_fn.eval(Path::new("non-existent-file.foo")));
5454
/// ```
5555
pub fn missing() -> ExistencePredicate {

src/predicate/path/ft.rs renamed to src/path/ft.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ impl Predicate for FileTypePredicate {
7070
///
7171
/// ```
7272
/// use std::path::Path;
73-
/// use predicates::predicate::*;
73+
/// use predicates::prelude::*;
7474
///
75-
/// let predicate_fn = path::is_file();
75+
/// let predicate_fn = predicate::path::is_file();
7676
/// assert_eq!(true, predicate_fn.eval(Path::new("Cargo.toml")));
7777
/// assert_eq!(false, predicate_fn.eval(Path::new("src")));
7878
/// assert_eq!(false, predicate_fn.eval(Path::new("non-existent-file.foo")));
@@ -90,9 +90,9 @@ pub fn is_file() -> FileTypePredicate {
9090
///
9191
/// ```
9292
/// use std::path::Path;
93-
/// use predicates::predicate::*;
93+
/// use predicates::prelude::*;
9494
///
95-
/// let predicate_fn = path::is_dir();
95+
/// let predicate_fn = predicate::path::is_dir();
9696
/// assert_eq!(false, predicate_fn.eval(Path::new("Cargo.toml")));
9797
/// assert_eq!(true, predicate_fn.eval(Path::new("src")));
9898
/// assert_eq!(false, predicate_fn.eval(Path::new("non-existent-file.foo")));
@@ -110,9 +110,9 @@ pub fn is_dir() -> FileTypePredicate {
110110
///
111111
/// ```
112112
/// use std::path::Path;
113-
/// use predicates::predicate::*;
113+
/// use predicates::prelude::*;
114114
///
115-
/// let predicate_fn = path::is_symlink();
115+
/// let predicate_fn = predicate::path::is_symlink();
116116
/// assert_eq!(false, predicate_fn.eval(Path::new("Cargo.toml")));
117117
/// assert_eq!(false, predicate_fn.eval(Path::new("src")));
118118
/// assert_eq!(false, predicate_fn.eval(Path::new("non-existent-file.foo")));
File renamed without changes.

0 commit comments

Comments
 (0)