Skip to content

Commit

Permalink
add get_env function to yuck (#779)
Browse files Browse the repository at this point in the history
* added basic get_env function to yuck

* added get_env to changelog

* added get_env to docs

* changed key to string in doc

* changed suggested code

* credit myself in CHANGELOG.md
  • Loading branch information
RegenJacob authored Mar 20, 2024
1 parent 4ce4245 commit f1ec00a
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 8 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ All notable changes to eww will be listed here, starting at changes since versio
- Remove `eww windows` command, replace with `eww active-windows` and `eww list-windows`

### Features
- Add `get_env` function (By: RegenJacob)
- Add `:namespace` window option
- Default to building with x11 and wayland support simultaneously
- Add `truncate-left` property on `label` widgets (By: kawaki-san)
Expand Down
7 changes: 7 additions & 0 deletions crates/simplexpr/src/eval.rs
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,13 @@ impl SimplExpr {

fn call_expr_function(name: &str, args: Vec<DynVal>) -> Result<DynVal, EvalError> {
match name {
"get_env" => match args.as_slice() {
[var_name] => {
let var = std::env::var(var_name.as_string()?).unwrap_or_default();
Ok(DynVal::from(var))
}
_ => Err(EvalError::WrongArgCount(name.to_string())),
},
"round" => match args.as_slice() {
[num, digits] => {
let num = num.as_f64()?;
Expand Down
17 changes: 9 additions & 8 deletions docs/src/expression_language.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,12 @@ Supported currently are the following features:
- `arraylength(value)`: Gets the length of the array
- `objectlength(value)`: Gets the amount of entries in the object
- `jq(value, jq_filter_string)`: run a [jq](https://stedolan.github.io/jq/manual/) style command on a json value. (Uses [jaq](https://crates.io/crates/jaq) internally).
- `formattime(unix_timestamp, format_str, timezone)`: Gets the time in a given format from UNIX timestamp.
Check [chrono's documentation](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) for more
information about format string and [chrono-tz's documentation](https://docs.rs/chrono-tz/latest/chrono_tz/enum.Tz.html)
for available time zones.
- `formattime(unix_timestamp, format_str)`: Gets the time in a given format from UNIX timestamp.
Same as other `formattime`, but does not accept timezone. Instead, it uses system's local timezone.
Check [chrono's documentation](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) for more
information about format string.
- `get_env(string)`: Gets the specified enviroment variable
- `formattime(unix_timestamp, format_str, timezone)`: Gets the time in a given format from UNIX timestamp.
Check [chrono's documentation](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) for more
information about format string and [chrono-tz's documentation](https://docs.rs/chrono-tz/latest/chrono_tz/enum.Tz.html)
for available time zones.
- `formattime(unix_timestamp, format_str)`: Gets the time in a given format from UNIX timestamp.
Same as other `formattime`, but does not accept timezone. Instead, it uses system's local timezone.
Check [chrono's documentation](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) for more
information about format string.

0 comments on commit f1ec00a

Please sign in to comment.