harn-stdlib 0.8.2

Embedded Harn standard library source catalog
Documentation
// std/collections — Collection utilities.
// Remove entries from a dict where the value is nil, empty string, or "null" string.
/** filter_nil. */
pub fn filter_nil(d) {
  return d
    .filter(
    { v ->
      if v == nil {
        return false
      }
      if v == "" {
        return false
      }
      if v == "null" {
        return false
      }
      return true
    },
  )
}

/** pick_keys. */
pub fn pick_keys(d, selected_keys, options = nil) {
  if type_of(d) != "dict" {
    return {}
  }
  let opts = options ?? {}
  let drop_nil = opts?.drop_nil ?? false
  var out = {}
  for key in selected_keys {
    if contains(d.keys(), key) {
      let value = d[key]
      if !drop_nil || value != nil {
        out[key] = value
      }
    }
  }
  return out
}

// Check if a store key is stale (older than max_age_seconds).
// Uses store_get/store_set convention: timestamps stored as key + "_ts".
/** store_stale. */
pub fn store_stale(key, max_age_seconds) {
  let ts = store_get(key + "_ts")
  if ts == nil {
    return true
  }
  return timestamp() - ts > max_age_seconds
}

// Refresh a store key's timestamp to now.
/** store_refresh. */
pub fn store_refresh(key) {
  store_set(key + "_ts", timestamp())
}