harn-vm 0.5.50

Async bytecode virtual machine for the Harn programming language
Documentation
// std/json — JSON utility patterns
//
// Import with: import "std/json"

/// Pretty-print a value as indented JSON (2-space indent).
/// pretty.
pub fn pretty(value) {
  return json_stringify(value)
}

/// Safely parse JSON, returning nil on failure instead of throwing.
/// safe_parse.
pub fn safe_parse(text) {
  let result = try { json_parse(text) }
  if is_ok(result) {
    return unwrap(result)
  }
  return nil
}

/// Merge two dicts (shallow). Keys in b override keys in a.
/// merge.
pub fn merge(a, b) {
  var result = a
  for entry in b {
    result = result + {[entry.key]: entry.value}
  }
  return result
}

/// Pick specific keys from a dict.
/// pick.
pub fn pick(data, keys) {
  var result = {}
  for k in keys {
    if data[k] != nil {
      result = result + {[k]: data[k]}
    }
  }
  return result
}

/// Omit specific keys from a dict.
/// omit.
pub fn omit(data, keys) {
  let exclude = set(keys)
  var result = {}
  for entry in data {
    if !set_contains(exclude, entry.key) {
      result = result + {[entry.key]: entry.value}
    }
  }
  return result
}