generated from ElnuDev/rust-project
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
4.3 KiB
134 lines
4.3 KiB
use codes_iso_639::part_2::LanguageCode;
|
|
use serde::{Serialize, Deserialize};
|
|
|
|
use crate::serial::*;
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
#[serde(rename_all(deserialize = "PascalCase"), deny_unknown_fields)]
|
|
pub struct Jmdict {
|
|
pub entries: Vec<JmdictEntry>,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
#[serde(rename_all(deserialize = "PascalCase"), deny_unknown_fields)]
|
|
pub struct JmdictEntry {
|
|
pub sequence: i32,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub kanji: Vec<JmdictKanji>,
|
|
pub readings: Vec<JmdictReading>,
|
|
pub sense: Vec<JmdictSense>,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
#[serde(rename_all(deserialize = "PascalCase"), deny_unknown_fields)]
|
|
pub struct JmdictExample {
|
|
// Always empty with latest version of JMdict
|
|
#[serde(default, skip_serializing, deserialize_with = "err_if_not_blank")]
|
|
srcaswdfa: serde::de::IgnoredAny,
|
|
pub sentences: Vec<JmdictExampleSentence>,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
#[serde(rename_all(deserialize = "PascalCase"), deny_unknown_fields)]
|
|
pub struct JmdictExampleSentence {
|
|
#[serde(deserialize_with = "lang")]
|
|
pub lang: LanguageCode,
|
|
pub text: String,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
#[serde(rename_all(deserialize = "PascalCase"), deny_unknown_fields)]
|
|
pub enum JmdictExampleSourceSrcType {
|
|
Amogus,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
#[serde(rename_all(deserialize = "PascalCase"), deny_unknown_fields)]
|
|
pub struct JmdictGlossary {
|
|
pub content: String,
|
|
#[serde(deserialize_with = "lang_default_eng")]
|
|
pub language: LanguageCode,
|
|
// Always empty with latest version of JMdict
|
|
#[serde(default, skip_serializing, deserialize_with = "err_if_not_blank")]
|
|
gender: serde::de::IgnoredAny,
|
|
pub r#type: Option<JmdictGlossaryType>,
|
|
}
|
|
|
|
// https://github.com/FooSoft/yomichan/issues/2057
|
|
#[derive(Serialize, Deserialize)]
|
|
pub enum JmdictGlossaryType {
|
|
#[serde(rename = "lit")]
|
|
Literal,
|
|
#[serde(rename = "fig")]
|
|
Figurative, // ?
|
|
#[serde(rename = "expl")]
|
|
Explanatory,
|
|
#[serde(rename = "tm")]
|
|
Trademark,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
#[serde(rename_all(deserialize = "PascalCase"), deny_unknown_fields)]
|
|
pub struct JmdictKanji {
|
|
pub expression: String,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub information: Vec<String>,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub priorities: Vec<String>,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
#[serde(rename_all(deserialize = "PascalCase"), deny_unknown_fields)]
|
|
pub struct JmdictReading {
|
|
pub reading: String,
|
|
// Always empty with latest version of JMdict
|
|
#[serde(default, skip_serializing, deserialize_with = "err_if_not_blank")]
|
|
no_kanji: serde::de::IgnoredAny,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub restrictions: Vec<String>,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub information: Vec<String>,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub priorities: Vec<String>,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
#[serde(rename_all(deserialize = "PascalCase"), deny_unknown_fields)]
|
|
pub struct JmdictSense {
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub restricted_kanji: Vec<String>,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub restricted_readings: Vec<String>,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub references: Vec<String>,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub antonyms: Vec<String>,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub parts_of_speech: Vec<String>,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub fields: Vec<String>,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub misc: Vec<String>,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub source_languages: Vec<JmdictSource>,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub dialects: Vec<String>,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub information: Vec<String>,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub glossary: Vec<JmdictGlossary>,
|
|
#[serde(deserialize_with = "nullable_list")]
|
|
pub examples: Vec<JmdictExample>,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
#[serde(rename_all(deserialize = "PascalCase"), deny_unknown_fields)]
|
|
pub struct JmdictSource {
|
|
pub content: String,
|
|
#[serde(deserialize_with = "lang_default_eng")]
|
|
pub language: LanguageCode,
|
|
pub r#type: Option<String>,
|
|
#[serde(deserialize_with = "wasei")]
|
|
pub wasei: bool,
|
|
}
|