diff options
Diffstat (limited to 'src/makefile/functions.rs')
| -rw-r--r-- | src/makefile/functions.rs | 9 | 
1 files changed, 9 insertions, 0 deletions
| diff --git a/src/makefile/functions.rs b/src/makefile/functions.rs index 51bf0f9..feb0e54 100644 --- a/src/makefile/functions.rs +++ b/src/makefile/functions.rs @@ -52,6 +52,10 @@ pub fn expand_call(              assert_eq!(args.len(), 1);              text::words(macros, &args[0])          } +        "firstword" => { +            assert_eq!(args.len(), 1); +            text::firstword(macros, &args[0]) +        }          "lastword" => {              assert_eq!(args.len(), 1);              text::lastword(macros, &args[0]) @@ -266,6 +270,11 @@ mod text {          Ok(words.split_whitespace().count().to_string())      } +    pub fn firstword(macros: &MacroSet, words: &TokenString) -> Result<String> { +        let words = macros.expand(words)?; +        Ok(words.split_whitespace().nth(0).unwrap_or("").to_owned()) +    } +      pub fn lastword(macros: &MacroSet, words: &TokenString) -> Result<String> {          let words = macros.expand(words)?;          Ok(words.split_whitespace().last().unwrap_or("").to_owned()) |