///|
fn main {
// Create a rope from a string
let r = @src.Rope::from_str("Hello, World!\nThis is a rope.\nThird line.")
println("=== Rope Demo ===")
println("Total chars: \{r.len_chars()}")
println("Total lines: \{r.len_lines()}")
// Insert text
let r2 = r.insert(7, "Beautiful ")
println("\nAfter insert:")
println(r2.to_string())
// Remove text
let r3 = r2.remove(7, 17)
println("\nAfter remove:")
println(r3.to_string())
// Iterate lines
println("\nLines:")
let mut i = 0
r
.lines()
.each(fn(line) {
println(" [\{i}] \{line.to_string()}")
i = i + 1
})
// Index conversions
println("\nLine 1 starts at char: \{r.line_to_char(1)}")
println("Char 14 is on line: \{r.char_to_line(14)}")
}