1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//! Fast parser of Python's requirement files
//!
//! `requirements` is a fast and convenient way to parse Python's requirements file. It (will)
//! supports recursively parsing requirements files and resolving and identifying version
//! version constraints to satisfy all dependencies.
//!
//! # Usage
//!
//! Below is a basic example of how to use this library:
//!
//! ```
//! let content = "Django>=3.0.5";
//! let reqs = requirements::parse_str(&content).unwrap();
//!
//! for req in reqs.into_iter() {
//!     println!("{:?}", req);
//! }
//! ```

#[macro_use]
extern crate pest_derive;

mod parser;
pub mod enums;
mod requirements;

use parser::parse;
pub use crate::requirements::Requirement;

/// Parses requirements from a string
pub fn parse_str(content: &str) -> Result<Vec<Requirement>, String> {
    parse(content)
}

// TODO: Add file loading code (recursive?) here.