// std/strings — String manipulation and parsing (idiomatic Windjammer API).
//
// Implementation: windjammer_runtime::strings (Rust backend, hidden from users).
// Import: use std::strings
//
// Function-style API maps directly to runtime; no Rust method leakage in user code.
// === CASE CONVERSION ===
fn to_upper(s: string) -> string {
s
}
fn to_lower(s: string) -> string {
s
}
// === WHITESPACE ===
fn trim(s: string) -> string {
s
}
fn trim_start(s: string) -> string {
s
}
fn trim_end(s: string) -> string {
s
}
// === SPLIT / JOIN ===
fn split(s: string, delimiter: string) -> Vec<string> {
vec![s]
}
fn split_lines(text: string) -> Vec<string> {
vec![text]
}
fn split_whitespace(line: string) -> Vec<string> {
vec![line]
}
fn join(parts: Vec<string>, delimiter: string) -> string {
""
}
/// Unicode characters in a string.
fn chars(s: string) -> Vec<char> {
vec![]
}
/// Build a string from character codepoints.
fn from_chars(parts: Vec<char>) -> string {
""
}
/// Substring by character indices `[start, end)`.
fn substring_chars(s: string, start: usize, end: usize) -> string {
""
}
// === PARSING (line-oriented text formats: .wjscene, CSV, config) ===
fn parse_i32(s: string) -> i32 {
0
}
fn parse_f32(s: string) -> f32 {
0.0
}
fn parse_bool(s: string) -> bool {
false
}
/// ASCII byte at character index (for line-oriented parsers).
fn byte_at(s: string, index: usize) -> u8 {
0u8
}
// === CHECKING ===
fn is_empty(s: string) -> bool {
true
}
fn starts_with(s: string, prefix: string) -> bool {
false
}
fn ends_with(s: string, suffix: string) -> bool {
false
}
fn contains(s: string, substring: string) -> bool {
false
}
// === REPLACEMENT ===
fn replace(s: string, from: string, to: string) -> string {
s
}
fn replacen(s: string, from: string, to: string, count: usize) -> string {
s
}
// === LENGTH ===
fn len(s: string) -> usize {
0
}
fn char_count(s: string) -> usize {
0
}
fn substring(s: string, start: usize, end: usize) -> string {
""
}
// === REPEAT ===
fn repeat(s: string, n: usize) -> string {
s
}