///|
/// Escape a measurement.
pub fn escape_measurement(value : String) -> String {
  value
  .replace_all(old="\\", new="\\\\")
  .replace_all(old=",", new="\\,")
  .replace_all(old=" ", new="\\ ")
}

///|
/// Escape a tag key, tag value, or field key.
pub fn escape_key_like(value : String) -> String {
  escape_measurement(value).replace_all(old="=", new="\\=")
}

///|
/// Escape a string field value.
pub fn escape_string_field(value : String) -> String {
  value.replace_all(old="\\", new="\\\\").replace_all(old="\"", new="\\\"")
}

///|
/// Remove InfluxDB key-like escapes.
pub fn unescape_key_like(value : String) -> String {
  unescape_protocol(value)
}

///|
/// Remove InfluxDB measurement escapes.
pub fn unescape_measurement(value : String) -> String {
  unescape_protocol(value)
}

///|
/// Remove string-field escapes.
pub fn unescape_string_field(value : String) -> String {
  let out = StringBuilder()
  let mut escaped = false
  for i in 0.. String {
  let out = StringBuilder()
  let mut escaped = false
  for i in 0..