aboutsummaryrefslogtreecommitdiff
path: root/src/makefile/functions.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/makefile/functions.rs')
-rw-r--r--src/makefile/functions.rs26
1 files changed, 10 insertions, 16 deletions
diff --git a/src/makefile/functions.rs b/src/makefile/functions.rs
index a78d582..5d5e222 100644
--- a/src/makefile/functions.rs
+++ b/src/makefile/functions.rs
@@ -10,6 +10,7 @@ use super::r#macro::{Macro, Set as MacroSet};
use super::token::TokenString;
use super::ItemSource;
+#[allow(clippy::cognitive_complexity)]
pub fn expand_call(
name: &str,
args: &[TokenString],
@@ -174,17 +175,14 @@ mod text {
let from = macros.expand(from)?;
let to = macros.expand(to)?;
let text = macros.expand(text)?;
- let words = text
- .split_whitespace()
- .map(|word| {
- let pattern_match = r#match(&from, word)?.and_then(|x| x.get(1));
- Ok(if let Some(pm) = pattern_match {
- to.replace('%', pm.as_str())
- } else {
- word.to_owned()
+ let words =
+ text.split_whitespace()
+ .map(|word| {
+ let pattern_match = r#match(&from, word)?.and_then(|x| x.get(1));
+ Ok(pattern_match
+ .map_or_else(|| word.to_owned(), |pm| to.replace('%', pm.as_str())))
})
- })
- .collect::<Result<Vec<_>>>()?;
+ .collect::<Result<Vec<_>>>()?;
Ok(words.join(" "))
}
@@ -273,7 +271,7 @@ mod text {
pub fn firstword(macros: &MacroSet, words: &TokenString) -> Result<String> {
let words = macros.expand(words)?;
- Ok(words.split_whitespace().nth(0).unwrap_or("").to_owned())
+ Ok(words.split_whitespace().next().unwrap_or("").to_owned())
}
pub fn lastword(macros: &MacroSet, words: &TokenString) -> Result<String> {
@@ -419,11 +417,7 @@ mod conditional {
condition.trim_end();
let condition = macros.expand(&condition)?;
if condition.is_empty() {
- if let Some(if_false) = if_false {
- macros.expand(if_false)
- } else {
- Ok(String::new())
- }
+ if_false.map_or_else(|| Ok(String::new()), |if_false| macros.expand(if_false))
} else {
macros.expand(if_true)
}