Initial version: Simply print content without formatting

This commit is contained in:
Danilo Bargen 2015-12-29 10:22:37 +01:00
commit ba0283a1e7
4 changed files with 95 additions and 0 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
target
*.swp

12
Cargo.lock generated Normal file
View file

@ -0,0 +1,12 @@
[root]
name = "tldr"
version = "0.1.0"
dependencies = [
"ansi_term 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "ansi_term"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"

7
Cargo.toml Normal file
View file

@ -0,0 +1,7 @@
[package]
name = "tldr"
version = "0.1.0"
authors = ["Danilo Bargen <mail@dbrgn.ch>"]
[dependencies]
ansi_term = "^0.7"

74
src/main.rs Normal file
View file

@ -0,0 +1,74 @@
extern crate ansi_term;
use std::io::{BufRead, BufReader};
use std::fs::File;
use std::{env, process};
enum LineType {
Title(String),
Empty(String),
Description(String),
ExampleText(String),
ExampleCode(String),
}
struct Tokenizer<R: BufRead> {
reader: R,
current_line: String,
}
impl<R> Tokenizer<R> where R: BufRead {
fn new(reader: R) -> Tokenizer<R> {
Tokenizer {
reader: reader,
current_line: String::new(),
}
}
fn next(&mut self) -> Option<&str> {
self.current_line.clear();
let bytes_read = self.reader.read_line(&mut self.current_line).unwrap();
match bytes_read {
0 => None,
_ => Some(&self.current_line),
}
}
}
/// Open file, return a `BufRead` instance
fn get_file_reader(filepath: &str) -> Result<BufReader<File>, String> {
let file = try!(
File::open(filepath)
.map_err(|msg| format!("Could not open file: {}", msg))
);
Ok(BufReader::new(file))
}
fn main() {
// Parse arguments
let args: Vec<_> = env::args().collect();
if args.len() != 2 {
println!("Usage: {} <command>", args[0]);
process::exit(1);
}
// Open file
let reader = get_file_reader(&args[1]).unwrap_or_else(|msg| {
println!("{}", msg);
process::exit(1);
});
// Create tokenizer
let mut tokenizer = Tokenizer::new(reader);
// Tokenize and print output
while let Some(token) = tokenizer.next() {
print!("{}", token);
}
}