///|
fn trim_owned(value : String) -> String {
value.trim().to_owned()
}
///|
fn lower_ascii(value : String) -> String {
value.to_lower()
}
///|
fn is_space_code(code : UInt16) -> Bool {
code == ' ' || code == '\t' || code == '\r'
}
///|
fn first_non_space(value : String) -> Int {
for index in 0.. Int {
for index = value.length(); index > 0; index = index - 1 {
if !is_space_code(value[index - 1]) {
return index
}
}
0
}
///|
fn strip_utf8_bom(value : String, first_line : Bool) -> String {
if first_line && value.get_char(0) is Some('\u{FEFF}') {
value[1:].to_owned()
} else {
value
}
}
///|
fn find_unescaped_separator(value : String, allow_colon : Bool) -> Int? {
let mut escaped = false
for index in 0.. String {
let buffer = StringBuilder::new()
let mut escaped = false
for ch in value {
if escaped {
if ch == '=' || ch == ':' || ch == '\\' {
buffer.write_char(ch)
} else {
buffer.write_char('\\')
buffer.write_char(ch)
}
escaped = false
} else if ch == '\\' {
escaped = true
} else {
buffer.write_char(ch)
}
}
if escaped {
buffer.write_char('\\')
}
buffer.to_string()
}
///|
fn json_escape(value : String) -> String {
let buffer = StringBuilder::new()
for ch in value {
match ch {
'"' => buffer.write_string("\\\"")
'\\' => buffer.write_string("\\\\")
'\n' => buffer.write_string("\\n")
'\r' => buffer.write_string("\\r")
'\t' => buffer.write_string("\\t")
_ => buffer.write_char(ch)
}
}
buffer.to_string()
}
///|
fn bool_text(value : Bool) -> String {
if value {
"true"
} else {
"false"
}
}