diff options
| author | Jonas Maier <> | 2026-03-08 13:35:08 +0100 |
|---|---|---|
| committer | Jonas Maier <> | 2026-03-08 13:35:08 +0100 |
| commit | 5cf5f57ce8aa303936fec70a61acb436825f52c7 (patch) | |
| tree | 21174d855f8a32dd75b74991c60d04607200ed74 | |
| parent | 5ea3c6c960947b8d82ab9e85c4345b9f78b488bb (diff) | |
| download | pish-5cf5f57ce8aa303936fec70a61acb436825f52c7.tar.gz | |
tilde
| -rw-r--r-- | src/parse/mod.rs | 8 | ||||
| -rw-r--r-- | src/parse/test.rs | 8 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/parse/mod.rs b/src/parse/mod.rs index 8fa2e23..9cd894e 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -528,7 +528,13 @@ impl Parse for ExpString { continue; } - add_char(p, x); + if delim == b' ' && x == b'~' { + p.push(StringPart::Var(VarName { + name: b"HOME".to_vec(), + })); + } else { + add_char(p, x); + } if delim == b' ' { already_parsed = true; diff --git a/src/parse/test.rs b/src/parse/test.rs index 6f49ed4..9e2d7a8 100644 --- a/src/parse/test.rs +++ b/src/parse/test.rs @@ -70,3 +70,11 @@ fn unclosed_single_quote() { fn unclosed_double_quote() { assert!(do_parse(b"x\"").is_err()) } + +#[test] +fn tilde() { + parse_test( + parse(b"echo ~"), + pipes([cmd([estr(b"echo"), str([var(b"HOME")])])]), + ); +} |
