///|
pub fn compress(uncompressed : String) -> String {
  _compress(uncompressed, 16, code => char_from_code_unit(code))
}

///|
pub fn decompress(compressed : String) -> String? {
  if compressed == "" {
    None
  } else {
    let length = compressed.length()
    _decompress(length, 32768, idx => {
      if idx < length {
        compressed.code_unit_at(idx).to_int()
      } else {
        0
      }
    })
  }
}