Compare commits

..

No commits in common. "4ec6e32357ba93226f0ae0050c1d57d198f5db1a" and "770645cfdea5dcacd74f37aa084b3d69f7ff870b" have entirely different histories.

3 changed files with 28 additions and 31 deletions

View File

@ -1,19 +1,21 @@
use std::fs; use std::fs;
use std::fs::OpenOptions;
use std::io::prelude::*;
#[derive(PartialEq)] #[derive(PartialEq)]
pub struct DictionaryEntry { struct Entry {
hieroglyph: String, hieroglyph: String,
reading: String, reading: String,
translation: String, translation: String,
} }
impl std::clone::Clone for DictionaryEntry { impl std::clone::Clone for Entry {
fn clone(&self) -> Self { fn clone(&self) -> Self {
Self { hieroglyph: self.hieroglyph.clone(), reading: self.reading.clone(), translation: self.translation.clone() } Self { hieroglyph: self.hieroglyph.clone(), reading: self.reading.clone(), translation: self.translation.clone() }
} }
} }
impl std::fmt::Display for DictionaryEntry { impl std::fmt::Display for Entry {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!( write!(
f, f,
@ -33,8 +35,8 @@ fn get_sym_pos_or_panic(path: &String, line: &str, sym: &str, line_number: usize
} }
} }
fn read_and_parse(path: &String) -> Vec<DictionaryEntry> { fn read_and_parse(path: &String) -> Vec<Entry> {
let mut result: Vec<DictionaryEntry> = Vec::new(); let mut result: Vec<Entry> = Vec::new();
let content = fs::read_to_string(path).unwrap(); let content = fs::read_to_string(path).unwrap();
let content: Vec<&str> = content.split('\n').collect(); let content: Vec<&str> = content.split('\n').collect();
@ -59,7 +61,7 @@ fn read_and_parse(path: &String) -> Vec<DictionaryEntry> {
}; };
let translation = line[translation_start..translation_end].to_string(); let translation = line[translation_start..translation_end].to_string();
let entry = DictionaryEntry { let entry = Entry {
hieroglyph, hieroglyph,
reading, reading,
translation, translation,
@ -70,9 +72,9 @@ fn read_and_parse(path: &String) -> Vec<DictionaryEntry> {
result result
} }
fn deduplicate (entries: &Vec<DictionaryEntry>) -> Vec<DictionaryEntry>{ fn deduplicate (entries: &Vec<Entry>) -> Vec<Entry>{
let mut deduplicated:Vec<DictionaryEntry> = Vec::new(); let mut deduplicated:Vec<Entry> = Vec::new();
for entry in entries.iter() { for entry in entries.iter() {
let mut is_dup = false; let mut is_dup = false;
@ -95,26 +97,21 @@ fn deduplicate (entries: &Vec<DictionaryEntry>) -> Vec<DictionaryEntry>{
deduplicated deduplicated
} }
pub fn import(path: &String) -> Vec<DictionaryEntry>{ pub fn import(path: &String) {
let mut output = OpenOptions::new()
.write(true)
.append(true)
.open("./reparsed-test.txt")
.unwrap();
let dictionary = read_and_parse(path); let dictionary = read_and_parse(path);
let dictionary = deduplicate(&dictionary); let dictionary = deduplicate(&dictionary);
dictionary for entry in dictionary {
if let Err(e) = writeln!(
output,
"({}) [{}] {{{}}}",
entry.hieroglyph, entry.reading, entry.translation
) {
eprintln!("Couldn't write to file: {}", e);
}
}
} }
// pub fn write_to_file(path: &String, dict: &Vec<Entry>) {
// let mut output = OpenOptions::new()
// .write(true)
// .append(true)
// .open("./reparsed-test.txt")
// .unwrap();
// for entry in dict {
// if let Err(e) = writeln!(
// output,
// "({}) [{}] {{{}}}",
// entry.hieroglyph, entry.reading, entry.translation
// ) {
// eprintln!("Couldn't write to file: {}", e);
// }
// }
// }

View File

@ -10,7 +10,7 @@ mod db;
mod game; mod game;
mod ui; mod ui;
mod widgets; mod widgets;
mod dictionary; mod import;
use crate::ui::menu::MenuScene; use crate::ui::menu::MenuScene;
@ -39,9 +39,9 @@ const APP_ID: &str = "org.foxarmy.learn-hieroglyph";
fn main() -> glib::ExitCode { fn main() -> glib::ExitCode {
gio::resources_register_include!("compiled.gresource").expect("Cannot include gresources"); gio::resources_register_include!("compiled.gresource").expect("Cannot include gresources");
db::init(); // Create database if not exists, create program's home if not exists, etc... db::init();
dictionary::import(&String::from("./reparsed.txt")); // import::import(&String::from("./reparsed.txt"));
let app: Application = Application::builder().application_id(APP_ID).build(); let app: Application = Application::builder().application_id(APP_ID).build();