diff options
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | Cargo.toml | 6 | ||||
-rw-r--r-- | src/main.rs | 41 |
3 files changed, 50 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..70e3cae --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ + +/target +**/*.rs.bk diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..393abb5 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "wordfreq" +version = "0.1.0" +authors = ["Lars Wirzenius <liw@liw.fi>"] + +[dependencies] diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..b0d0d03 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,41 @@ +use std::env; +use std::fs::File; +use std::io; +use std::io::BufRead; + + + +fn main() -> io::Result<()> { + for filename in env::args().skip(1) { + let mut f = File::open(&filename)?; + let mut reader = io::BufReader::new(f); + print_words(&mut reader)?; + } + Ok(()) +} + + +fn print_words(reader: &mut io::BufReader<File>) -> io::Result<()> { + for line in reader.lines() { + let line = line?; + print_words_in_line(&line); + } + Ok(()) +} + + +fn print_words_in_line(line: &str) { + let mut was_in_word = false; + for c in line.chars() { + let letter = c.is_alphabetic(); + if letter { + was_in_word = true; + print!("{}", c); + } else { + if was_in_word { + println!(""); + } + was_in_word = false; + } + } +} |