Compare commits
2 Commits
770645cfde
...
4ec6e32357
Author | SHA1 | Date |
---|---|---|
leca | 4ec6e32357 | |
leca | e84484111c |
|
@ -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);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
|
@ -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();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue