Move get_tags() from BM module to module utilities

This commit is contained in:
Matthias Beyer 2015-12-05 18:04:49 +01:00
parent 4ebe4916cb
commit dad856ff2a
3 changed files with 33 additions and 22 deletions

View file

@ -14,6 +14,7 @@ use ui::file::{FilePrinter, TablePrinter};
pub fn add_command(module: &Module, env: CommandEnv) -> CommandResult { pub fn add_command(module: &Module, env: CommandEnv) -> CommandResult {
use url::Url; use url::Url;
use module::helpers::utils::cli::get_tags;
let url = env.matches.value_of("url").unwrap(); let url = env.matches.value_of("url").unwrap();
@ -123,6 +124,8 @@ fn get_filtered_files_from_backend<'a>(module: &'a Module,
env: &CommandEnv) env: &CommandEnv)
-> Result<IntoIter<File<'a>>, ModuleError> -> Result<IntoIter<File<'a>>, ModuleError>
{ {
use module::helpers::utils::cli::get_tags;
fn check_tags(tags: &Vec<String>, file: &File) -> bool { fn check_tags(tags: &Vec<String>, file: &File) -> bool {
if tags.len() != 0 { if tags.len() != 0 {
debug!("Checking tags of: {:?}", file.id()); debug!("Checking tags of: {:?}", file.id());
@ -159,28 +162,6 @@ fn get_filtered_files_from_backend<'a>(module: &'a Module,
}) })
} }
fn get_tags<'a>(rt: &Runtime, sub: &ArgMatches<'a, 'a>) -> Vec<String> {
fn reject_if_with_spaces(e: &String) -> bool {
if e.contains(" ") {
warn!("Tag contains spaces: '{}'", e);
false
} else {
true
}
}
debug!("Fetching tags from commandline");
sub.value_of("tags").and_then(|tags| {
Some(tags.split(",")
.into_iter()
.map(|s| s.to_string())
.filter(|e| reject_if_with_spaces(e))
.collect()
)
}).or(Some(vec![])).unwrap()
}
fn get_matcher<'a>(rt: &Runtime, sub: &ArgMatches<'a, 'a>) -> Option<Regex> { fn get_matcher<'a>(rt: &Runtime, sub: &ArgMatches<'a, 'a>) -> Option<Regex> {
debug!("Fetching matcher from commandline"); debug!("Fetching matcher from commandline");
if let Some(s) = sub.value_of("match") { if let Some(s) = sub.value_of("match") {

View file

@ -1 +1,2 @@
pub mod header; pub mod header;
pub mod utils;

View file

@ -0,0 +1,29 @@
pub mod cli {
use clap::ArgMatches;
use regex::Regex;
use runtime::Runtime;
pub fn get_tags<'a>(rt: &Runtime, sub: &ArgMatches<'a, 'a>) -> Vec<String> {
fn reject_if_with_spaces(e: &String) -> bool {
if e.contains(" ") {
warn!("Tag contains spaces: '{}'", e);
false
} else {
true
}
}
debug!("Fetching tags from commandline");
sub.value_of("tags").and_then(|tags| {
Some(tags.split(",")
.into_iter()
.map(|s| s.to_string())
.filter(|e| reject_if_with_spaces(e))
.collect()
)
}).or(Some(vec![])).unwrap()
}
}