File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11use globwalk:: GlobError ;
2- use requirements:: { self , Requirement } ;
2+ use requirements:: { self , parse } ;
33use std:: { env, fs, path:: Path } ;
44use walkdir:: DirEntry ;
55
@@ -17,16 +17,14 @@ fn main() {
1717
1818fn parse_requirements ( path : & Path ) {
1919 let content = fs:: read_to_string ( & path) . expect ( "Cannot read file" ) ;
20- let requirement_file: Vec < Requirement > = requirements:: parse_str ( & content) . unwrap ( ) ;
21-
22- for requirement in requirement_file. into_iter ( ) {
20+ for requirement in parse ( & content) . unwrap ( ) {
2321 if let Some ( name) = requirement. name {
2422 print ! ( "{} " , name) ;
2523 }
2624 if let Some ( comment) = requirement. comment {
2725 print ! ( "({}) " , comment)
2826 }
29- for ( comparison, version) in requirement. specs . into_iter ( ) {
27+ for ( comparison, version) in & requirement. specs {
3028 print ! ( "{}{} " , comparison, version) ;
3129 }
3230 println ! ( ) ;
Original file line number Diff line number Diff line change @@ -24,12 +24,12 @@ mod parser;
2424pub mod enums;
2525mod requirements;
2626
27- use parser:: parse;
27+ pub use parser:: parse;
2828pub use crate :: requirements:: Requirement ;
2929
3030/// Parses requirements from a string
3131pub fn parse_str ( content : & str ) -> Result < Vec < Requirement > , String > {
32- parse ( content)
32+ Ok ( parse ( content) . map ( Iterator :: collect ) ? )
3333}
3434
3535// TODO: Add file loading code (recursive?) here.
Original file line number Diff line number Diff line change @@ -76,18 +76,15 @@ fn parse_package(parsed: Pair<'_, Rule>) -> Requirement<'_> {
7676 package
7777}
7878
79- pub fn parse ( unparsed_file : & str ) -> Result < Vec < Requirement > , String > {
79+ pub fn parse ( unparsed_file : & str ) -> Result < impl Iterator < Item = Requirement > , String > {
8080 let req_file = match RequirementParser :: parse ( Rule :: requirement_file, unparsed_file) {
8181 Ok ( mut rules) => rules. next ( ) . unwrap ( ) ,
8282 Err ( _) => return Err ( String :: from ( "Failed to parse requirements" ) )
8383 } ;
8484
85- let requirements : Vec < Requirement > = req_file
85+ Ok ( req_file
8686 . into_inner ( )
8787 . filter ( |pair| pair. as_rule ( ) == Rule :: line)
88- . map ( parse_package)
89- . collect ( ) ;
90-
91- Ok ( requirements)
88+ . map ( parse_package) )
9289}
9390
You can’t perform that action at this time.
0 commit comments