diff --git a/Cargo.toml b/Cargo.toml index ebd5720..95a0ce2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,4 +7,5 @@ edition = "2021" [dependencies] ncurses = "5.101.0" -termsize = "0.1" \ No newline at end of file +termsize = "0.1" +epub = "1.2.2" \ No newline at end of file diff --git a/pg8800.epub b/pg8800.epub new file mode 100644 index 0000000..7d99ea7 Binary files /dev/null and b/pg8800.epub differ diff --git a/src/main.rs b/src/main.rs index fe6e483..f526f0a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,119 +2,36 @@ Program: Bibliofile Language: Rustc 1.68.0 ide: Visual Studio Code -Operating system: Linux Mint 21.1 +Operating system: Purpose: ncurses based ereader and library manager for Linux terminal environments. -Last edited: 10:18 PM 3/16/23 +Last edited: 9:55 PM 5/1/23 */ -use std::fs::File; +use epub::doc::EpubDoc; use std::fs; use std::io::prelude::*; use std::env; -extern crate ncurses; -extern crate termsize; +extern crate ncurses; //display framework +extern crate termsize; //makes sure ncurses border maches term size //initial function. Reads the ebook passed by argument. //TODO: add visual library to pull up ebooks. fn main() { - //let args: Vec = env::args().collect(); - //let filename = &args[1]; - menu(); - -} - - - -//Gets files in directory and returns string with contents. -fn get_directory() -> String{ - - - - - let mut dir: String = "".to_string(); - let mut hold: String; - let paths = fs::read_dir("./").unwrap(); - for path in paths { - hold = path.unwrap().path().display().to_string(); - dir.push_str(&hold); - dir.push_str("\n"); - } - println!("{}", &dir); - return dir; -} - - -//Generates menu screen -fn menu(){ - let termsize::Size {mut rows, mut cols} = termsize::get().unwrap(); - - - println!("height: {} \nwidth: {} \n", rows, cols); - rows -= 5; - cols -= 5; - ncurses::initscr(); - ncurses::clear(); - let win = ncurses::newwin(rows as i32, cols as i32, 0, 0); - ncurses::wprintw(win, &get_directory()); - ncurses::refresh(); - ncurses::box_(win, 0, 0); - ncurses::wrefresh(win); - ncurses::getch(); - ncurses::endwin(); - - -} - -//screen init function -fn screen(line: &str){ - - ncurses::initscr(); - ncurses::clear(); - ncurses::addstr(line); - ncurses::refresh(); - ncurses::getch(); - ncurses::endwin(); - -} - - - -//parses UTF8 files. Does not work if it has BOM or CRLF line terminators. Currently searching for fix. -fn text(filename: &str) -> std::io::Result<()>{ - - - let mut file = File::open(filename).expect("cannot open file."); - let mut contents = String::new(); - file.read_to_string(&mut contents).expect("unreadable file."); - - - screen(&contents); - Ok(()) - - -} - - -//parses pdf files -fn pdf(){ - - -} - - -//parses mobi files -fn mobi(){ - - + let args: Vec = env::args().collect(); + let filename = &args[1]; + epub(filename); } //parses epub files -fn epub(){ - +fn epub(epub_file: &str){ + println!("{}", epub_file); + let doc = EpubDoc::new(&epub_file); + assert!(doc.is_ok()); + let doc = doc.unwrap(); }