use vb6parse::io::{Comparator, SourceStream};
const VB6_CODE: &str = r#"Private Sub Form_Load()
Dim x As Integer
Dim message As String
x = 42
message = "Hello, World!"
MsgBox message
End Sub
' This is a comment
Public Function Calculate(a As Integer, b As Integer) As Integer
Calculate = a + b
End Function"#;
fn main() {
let mut stream = SourceStream::new("example.bas", VB6_CODE);
println!("=== SourceStream Example ===");
println!("File: {}", stream.file_name());
println!("================================");
println!();
println!("{VB6_CODE}");
println!();
println!("================================");
println!();
println!("Content length: {} characters", stream.contents.len());
println!("Initial offset: {}\n", stream.offset());
println!();
println!("=== Basic Navigation Example ===");
if let Some(peek_text) = stream.peek(7) {
println!("Peeking at first 7 characters: '{peek_text}'");
}
if let Some(private_text) = stream.peek_text("Private", Comparator::CaseSensitive) {
println!("Found 'Private' at current position: '{private_text}'");
stream.forward(7); }
println!("Offset after moving past 'Private': {}", stream.offset());
if let Some(whitespace) = stream.take_ascii_whitespaces() {
println!("Consumed whitespace: '{whitespace:?}'");
}
if let Some(sub_keyword) = stream.take_ascii_alphabetics() {
println!("Found keyword: '{sub_keyword}'");
}
println!();
}