Compare commits

...

2 Commits

Author SHA1 Message Date
leca 4ec6e32357 some renaming 2024-04-14 09:16:01 +03:00
leca e84484111c some renaming 2024-04-14 09:15:26 +03:00
3 changed files with 31 additions and 28 deletions

View File

@ -1,21 +1,19 @@
use std::fs; use std::fs;
use std::fs::OpenOptions;
use std::io::prelude::*;
#[derive(PartialEq)] #[derive(PartialEq)]
struct Entry { pub struct DictionaryEntry {
hieroglyph: String, hieroglyph: String,
reading: String, reading: String,
translation: String, translation: String,
} }
impl std::clone::Clone for Entry { impl std::clone::Clone for DictionaryEntry {
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 Entry { impl std::fmt::Display for DictionaryEntry {
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,
@ -35,8 +33,8 @@ fn get_sym_pos_or_panic(path: &String, line: &str, sym: &str, line_number: usize
} }
} }
fn read_and_parse(path: &String) -> Vec<Entry> { fn read_and_parse(path: &String) -> Vec<DictionaryEntry> {
let mut result: Vec<Entry> = Vec::new(); let mut result: Vec<DictionaryEntry> = 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();
@ -61,7 +59,7 @@ fn read_and_parse(path: &String) -> Vec<Entry> {
}; };
let translation = line[translation_start..translation_end].to_string(); let translation = line[translation_start..translation_end].to_string();
let entry = Entry { let entry = DictionaryEntry {
hieroglyph, hieroglyph,
reading, reading,
translation, translation,
@ -72,9 +70,9 @@ fn read_and_parse(path: &String) -> Vec<Entry> {
result result
} }
fn deduplicate (entries: &Vec<Entry>) -> Vec<Entry>{ fn deduplicate (entries: &Vec<DictionaryEntry>) -> Vec<DictionaryEntry>{
let mut deduplicated:Vec<Entry> = Vec::new(); let mut deduplicated:Vec<DictionaryEntry> = Vec::new();
for entry in entries.iter() { for entry in entries.iter() {
let mut is_dup = false; let mut is_dup = false;
@ -97,21 +95,26 @@ fn deduplicate (entries: &Vec<Entry>) -> Vec<Entry>{
deduplicated deduplicated
} }
pub fn import(path: &String) { pub fn import(path: &String) -> Vec<DictionaryEntry>{
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);
for entry in dictionary { 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 import; mod dictionary;
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(); db::init(); // Create database if not exists, create program's home if not exists, etc...
import::import(&String::from("./reparsed.txt")); dictionary::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();