mirror of
https://github.com/minagawah/mikaboshi.git
synced 2026-03-27 08:28:29 +07:00
feat: Importing other Feng-Shui related JSON data
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "mikaboshi"
|
||||
version = "0.4.0"
|
||||
version = "0.4.1"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
|
||||
110
json/bagua.json
Normal file
110
json/bagua.json
Normal file
@@ -0,0 +1,110 @@
|
||||
[
|
||||
{
|
||||
"num": 1,
|
||||
"name": {
|
||||
"en": "kan",
|
||||
"zh_cn": ["坎", "kǎn"],
|
||||
"zh_cn": ["坎", "kǎn"],
|
||||
"ja": ["かん", "kan"],
|
||||
"vi": []
|
||||
},
|
||||
"direction": "n",
|
||||
"element": 4
|
||||
},
|
||||
{
|
||||
"num": 2,
|
||||
"name": {
|
||||
"en": "kun",
|
||||
"zh_cn": ["坤", "kūn"],
|
||||
"zh_tw": ["坤", "kūn"],
|
||||
"ja": ["こん", "kon"],
|
||||
"vi": []
|
||||
},
|
||||
"direction": "sw",
|
||||
"element": 2
|
||||
},
|
||||
{
|
||||
"num": 3,
|
||||
"name": {
|
||||
"en": "zhen",
|
||||
"zh_cn": ["震", "zhèn"],
|
||||
"zh_tw": ["震", "zhèn"],
|
||||
"ja": ["しん", "shin"],
|
||||
"vi": []
|
||||
},
|
||||
"direction": "e",
|
||||
"element": 0
|
||||
},
|
||||
{
|
||||
"num": 4,
|
||||
"name": {
|
||||
"en": "xun",
|
||||
"zh_cn": ["巽", "xùn"],
|
||||
"zh_tw": ["巽", "xùn"],
|
||||
"ja": ["そん", "son"],
|
||||
"vi": []
|
||||
},
|
||||
"direction": "se",
|
||||
"element": 0
|
||||
},
|
||||
{
|
||||
"num": 5,
|
||||
"name": {
|
||||
"en": "zhong",
|
||||
"zh_cn": ["中", "zhōng"],
|
||||
"zh_tw": ["中", "zhōng"],
|
||||
"ja": ["中", "chu"],
|
||||
"vi": []
|
||||
},
|
||||
"direction": "",
|
||||
"element": 2
|
||||
},
|
||||
{
|
||||
"num": 6,
|
||||
"name": {
|
||||
"en": "qian",
|
||||
"zh_cn": ["乾", "qián"],
|
||||
"zh_tw": ["乾", "qián"],
|
||||
"ja": ["けん", "ken"],
|
||||
"vi": []
|
||||
},
|
||||
"direction": "nw",
|
||||
"element": 3
|
||||
},
|
||||
{
|
||||
"num": 7,
|
||||
"name": {
|
||||
"en": "dui",
|
||||
"zh_cn": ["兌", "duì"],
|
||||
"zh_tw": ["兌", "duì"],
|
||||
"ja": ["だ", "da"],
|
||||
"vi": []
|
||||
},
|
||||
"direction": "e",
|
||||
"element": 3
|
||||
},
|
||||
{
|
||||
"num": 8,
|
||||
"name": {
|
||||
"en": "gen",
|
||||
"zh_cn": ["艮", "gèn"],
|
||||
"zh_tw": ["艮", "gèn"],
|
||||
"ja": ["ごん", "gon"],
|
||||
"vi": []
|
||||
},
|
||||
"direction": "ne",
|
||||
"element": 2
|
||||
},
|
||||
{
|
||||
"num": 9,
|
||||
"name": {
|
||||
"en": "li",
|
||||
"zh_cn": ["離", "lí"],
|
||||
"zh_tw": ["離", "lí"],
|
||||
"ja": ["り", "ri"],
|
||||
"vi": []
|
||||
},
|
||||
"direction": "s",
|
||||
"element": 1
|
||||
}
|
||||
]
|
||||
128
json/jiuxing.json
Normal file
128
json/jiuxing.json
Normal file
@@ -0,0 +1,128 @@
|
||||
[
|
||||
{
|
||||
"num": 1,
|
||||
"direction": "n",
|
||||
"name": {
|
||||
"en": "1 White",
|
||||
"zh_cn": ["一白水星", "yī bái shuǐ xīng"],
|
||||
"zh_tw": ["一白水星", "yī bái shuǐ xīng"],
|
||||
"ja": ["いっぱくすいせい", "ippaku suisei"],
|
||||
"vi": []
|
||||
},
|
||||
"color": "white",
|
||||
"element": 4,
|
||||
"planet": 2
|
||||
},
|
||||
{
|
||||
"num": 2,
|
||||
"direction": "sw",
|
||||
"name": {
|
||||
"en": "2 Black",
|
||||
"zh_cn": ["二黒土星", "èr hēi tǔ xīng"],
|
||||
"zh_tw": ["二黒土星", "èr hēi tǔ xīng"],
|
||||
"ja": ["じこくどせい", "jikoku dosei"],
|
||||
"vi": []
|
||||
},
|
||||
"color": "black",
|
||||
"element": 2,
|
||||
"planet": 7
|
||||
},
|
||||
{
|
||||
"num": 3,
|
||||
"direction": "e",
|
||||
"name": {
|
||||
"en": "3 Jade",
|
||||
"zh_cn": ["三碧木星", "sān bì mù xīng"],
|
||||
"zh_tw": ["三碧木星", "sān bì mù xīng"],
|
||||
"ja": ["さんぺきもくせい", "sanpeki mokusei"],
|
||||
"vi": []
|
||||
},
|
||||
"color": "jade",
|
||||
"element": 0,
|
||||
"planet": 6
|
||||
},
|
||||
{
|
||||
"num": 4,
|
||||
"direction": "se",
|
||||
"name": {
|
||||
"en": "4 Green",
|
||||
"zh_cn": ["四緑木星", "sì lǜ mù xīng"],
|
||||
"zh_tw": ["四緑木星", "sì lǜ mù xīng"],
|
||||
"ja": ["しろくもくせい", "shiroku mokusei"],
|
||||
"vi": []
|
||||
},
|
||||
"color": "jade",
|
||||
"element": 0,
|
||||
"planet": 6
|
||||
},
|
||||
{
|
||||
"num": 5,
|
||||
"direction": null,
|
||||
"name": {
|
||||
"en": "5 Green",
|
||||
"zh_cn": ["五黄土星", "wǔ huáng tǔ xīng"],
|
||||
"zh_tw": ["五黄土星", "wǔ huáng tǔ xīng"],
|
||||
"ja": ["ごおうどせい", "go-ou dosei"],
|
||||
"vi": []
|
||||
},
|
||||
"color": "yellow",
|
||||
"element": 2,
|
||||
"planet": 7
|
||||
},
|
||||
{
|
||||
"num": 6,
|
||||
"direction": "nw",
|
||||
"name": {
|
||||
"en": "6 White",
|
||||
"zh_cn": ["六白金星", "liù bái jīn xīng"],
|
||||
"zh_tw": ["六白金星", "liù bái jīn xīng"],
|
||||
"ja": ["ろっぱくきんせい", "roppaku kinsei"],
|
||||
"vi": []
|
||||
},
|
||||
"color": "white",
|
||||
"element": 3,
|
||||
"planet": 3
|
||||
},
|
||||
{
|
||||
"num": 7,
|
||||
"direction": "w",
|
||||
"name": {
|
||||
"en": "7 Red",
|
||||
"zh_cn": ["七赤金星", "qī chì jīn xīng"],
|
||||
"zh_tw": ["七赤金星", "qī chì jīn xīng"],
|
||||
"ja": ["しちせききんせい", "shichiseki kinsei"],
|
||||
"vi": []
|
||||
},
|
||||
"color": "red",
|
||||
"element": 3,
|
||||
"planet": 3
|
||||
},
|
||||
{
|
||||
"num": 8,
|
||||
"direction": "ne",
|
||||
"name": {
|
||||
"en": "8 White",
|
||||
"zh_cn": ["八白土星", "bā bái tǔ xīng"],
|
||||
"zh_tw": ["八白土星", "bā bái tǔ xīng"],
|
||||
"ja": ["はっぱくどせい", "happaku dosei"],
|
||||
"vi": []
|
||||
},
|
||||
"color": "white",
|
||||
"element": 2,
|
||||
"planet": 7
|
||||
},
|
||||
{
|
||||
"num": 9,
|
||||
"direction": "s",
|
||||
"name": {
|
||||
"en": "9 Purple",
|
||||
"zh_cn": ["九紫火星", "Jiǔ Zǐ"],
|
||||
"zh_tw": ["九紫火星", "Jiǔ Zǐ"],
|
||||
"ja": ["きゅうしかせい", "kyushi kasei"],
|
||||
"vi": []
|
||||
},
|
||||
"color": "purple",
|
||||
"element": 1,
|
||||
"planet": 5
|
||||
}
|
||||
]
|
||||
79
json/planet.json
Normal file
79
json/planet.json
Normal file
@@ -0,0 +1,79 @@
|
||||
[
|
||||
{
|
||||
"en": "earth",
|
||||
"zh_cn": ["地球", "dì qiú"],
|
||||
"zh_tw": ["地球", "dì qiú"],
|
||||
"ja": ["ちきゅう", "chikyu"],
|
||||
"vi": []
|
||||
},
|
||||
{
|
||||
"en": "moon",
|
||||
"zh_cn": ["月", ""],
|
||||
"zh_tw": ["月", ""],
|
||||
"ja": ["つき", "tsuki"],
|
||||
"vi": []
|
||||
},
|
||||
{
|
||||
"en": "mercury"
|
||||
"zh_cn": ["水星", "shuǐ xīng"],
|
||||
"zh_tw": ["水星", "shuǐ xīng"],
|
||||
"ja": ["すいせい", "suisei"],
|
||||
"vi": []
|
||||
},
|
||||
{
|
||||
"en": "venus",
|
||||
"zh_cn": ["金星", "jīn xīng"],
|
||||
"zh_tw": ["金星", "jīn xīng"],
|
||||
"ja": ["きんせい", "kinsei"],
|
||||
"vi": []
|
||||
},
|
||||
{
|
||||
"en": "sun",
|
||||
"zh_cn": ["太陽", ""],
|
||||
"zh_tw": ["太陽", ""],
|
||||
"ja": ["たいよう", "taiyo"],
|
||||
"vi": []
|
||||
},
|
||||
{
|
||||
"en": "mars",
|
||||
"zh_cn": ["火星", "huǒ xīng"],
|
||||
"zh_tw": ["火星", "huǒ xīng"],
|
||||
"ja": ["かせい", "kasei"],
|
||||
"vi": []
|
||||
},
|
||||
{
|
||||
"en": "jupiter",
|
||||
"zh_cn": ["木星", "mù xīng"],
|
||||
"zh_tw": ["木星", "mù xīng"],
|
||||
"ja": ["もくせい", "mokusei"],
|
||||
"vi": []
|
||||
},
|
||||
{
|
||||
"en": "saturn",
|
||||
"zh_cn": ["土星", "tǔ xīng"],
|
||||
"zh_tw": ["土星", "tǔ xīng"],
|
||||
"ja": ["どせい", "dosei"],
|
||||
"vi": []
|
||||
},
|
||||
{
|
||||
"en": "uranus",
|
||||
"zh_cn": ["天王星", "tiānwáng xīng"],
|
||||
"zh_tw": ["天王星", "tiānwáng xīng"],
|
||||
"ja": ["てんのうせい", ""],
|
||||
"vi": []
|
||||
},
|
||||
{
|
||||
"en": "neptune",
|
||||
"zh_cn": ["海王星", "hǎiwáng xīng"],
|
||||
"zh_tw": ["海王星", "hǎiwáng xīng"],
|
||||
"ja": ["かいおうせい", "kaiosei"],
|
||||
"vi": []
|
||||
},
|
||||
{
|
||||
"en": "pluto",
|
||||
"zh_cn": ["冥王星", "míngwáng xīng"],
|
||||
"zh_tw": ["冥王星", "míngwáng xīng"],
|
||||
"ja": ["めいおうせい", "meiosei"],
|
||||
"vi": []
|
||||
}
|
||||
]
|
||||
37
json/wuxing.json
Normal file
37
json/wuxing.json
Normal file
@@ -0,0 +1,37 @@
|
||||
[
|
||||
{
|
||||
"en": "wood",
|
||||
"zh_cn": ["木", "mù"],
|
||||
"zh_tw": ["木", "mù"],
|
||||
"ja": ["もく", "moku", "ki"],
|
||||
"vi": []
|
||||
},
|
||||
{
|
||||
"en": "fire",
|
||||
"zh_cn": ["火", "huǒ"],
|
||||
"zh_tw": ["火", "huǒ"],
|
||||
"ja": ["か", "ka", "hi"],
|
||||
"vi": []
|
||||
},
|
||||
{
|
||||
"en": "earth",
|
||||
"zh_cn": ["土", "tǔ"],
|
||||
"zh_tw": ["土", "tǔ"],
|
||||
"ja": ["ど", "do"],
|
||||
"vi": []
|
||||
},
|
||||
{
|
||||
"en": "metal",
|
||||
"zh_cn": ["金", "jīn"],
|
||||
"zh_tw": ["金", "jīn"],
|
||||
"ja": ["ごん", "gon"],
|
||||
"vi": []
|
||||
},
|
||||
{
|
||||
"en": "water",
|
||||
"zh_cn": ["水", "shuǐ"],
|
||||
"zh_tw": ["水", "shuǐ"],
|
||||
"ja": ["すい", "sui"],
|
||||
"vi": []
|
||||
}
|
||||
]
|
||||
17
src/bagua.rs
Normal file
17
src/bagua.rs
Normal file
@@ -0,0 +1,17 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::language::{Language, LanguageTrait};
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct Bagua {
|
||||
pub num: u8,
|
||||
pub name: Language,
|
||||
pub direction: String,
|
||||
pub element: u8,
|
||||
}
|
||||
|
||||
impl LanguageTrait for Bagua {
|
||||
fn name(&self) -> Box<Language> {
|
||||
Box::new(self.name.clone())
|
||||
}
|
||||
}
|
||||
@@ -1,55 +1,26 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde::{Deserialize};
|
||||
|
||||
use crate::ganzhi::{Branch, Stem};
|
||||
use crate::language::{Language, LanguageDetails};
|
||||
use crate::solar_terms::SolarTerm;
|
||||
use crate::ganzhi::{Stem, Branch, StemData, BranchData};
|
||||
use crate::language::NameDataTrait;
|
||||
use crate::solar_terms::{SolarTerm, SolarTermData};
|
||||
use crate::wuxing::{WuXing, WuXingData};
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct LanguageData {
|
||||
pub en: String,
|
||||
pub ja: Vec<String>,
|
||||
pub vi: Vec<String>,
|
||||
pub zh_cn: Vec<String>,
|
||||
pub zh_tw: Vec<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct SolarTermData {
|
||||
pub id: u8,
|
||||
pub name: LanguageData,
|
||||
pub angle: u16,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct StemData {
|
||||
pub no: u8,
|
||||
pub name: LanguageData,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct BranchData {
|
||||
pub no: u8,
|
||||
pub name: LanguageData,
|
||||
fn get_json<'a, T: Deserialize<'a>>(json: &'a str) -> Vec<T> {
|
||||
match serde_json::from_str(json) {
|
||||
Ok(json) => json,
|
||||
Err(err) => panic!("Error: {}", err),
|
||||
}
|
||||
}
|
||||
|
||||
lazy_static! {
|
||||
pub static ref SOLAR_TERMS: Vec<SolarTerm> = {
|
||||
let json = &include_str!("../json/solar_terms.json");
|
||||
let data: Vec<SolarTermData> = match serde_json::from_str(json) {
|
||||
Ok(json) => json,
|
||||
Err(err) => panic!("Error: {}", err),
|
||||
};
|
||||
let data: Vec<SolarTermData> = get_json::<SolarTermData>(json);
|
||||
data.iter().map(|item| {
|
||||
let item = item.clone();
|
||||
SolarTerm {
|
||||
id: item.id,
|
||||
name: Language {
|
||||
en: item.name.en,
|
||||
ja: LanguageDetails::new(&item.name.ja[0], &item.name.ja[1]),
|
||||
vi: LanguageDetails::new(&item.name.vi[0], &item.name.vi[1]),
|
||||
zh_cn: LanguageDetails::new(&item.name.zh_cn[0], &item.name.zh_cn[1]),
|
||||
zh_tw: LanguageDetails::new(&item.name.zh_tw[0], &item.name.zh_tw[1]),
|
||||
},
|
||||
name: item.language_from_data(),
|
||||
angle: item.angle,
|
||||
}
|
||||
}).collect()
|
||||
@@ -68,43 +39,36 @@ lazy_static! {
|
||||
|
||||
pub static ref STEMS: Vec<Stem> = {
|
||||
let json = &include_str!("../json/ganzhi_stems.json");
|
||||
let data: Vec<StemData> = match serde_json::from_str(json) {
|
||||
Ok(json) => json,
|
||||
Err(err) => panic!("Error: {}", err),
|
||||
};
|
||||
let data: Vec<StemData> = get_json::<StemData>(json);
|
||||
data.iter().map(|item| {
|
||||
let item = item.clone();
|
||||
Stem {
|
||||
no: item.no,
|
||||
name: Language {
|
||||
en: item.name.en,
|
||||
ja: LanguageDetails::new(&item.name.ja[0], &item.name.ja[1]),
|
||||
vi: LanguageDetails::new(&item.name.vi[0], &item.name.vi[1]),
|
||||
zh_cn: LanguageDetails::new(&item.name.zh_cn[0], &item.name.zh_cn[1]),
|
||||
zh_tw: LanguageDetails::new(&item.name.zh_tw[0], &item.name.zh_tw[1]),
|
||||
},
|
||||
name: item.language_from_data(),
|
||||
}
|
||||
}).collect()
|
||||
};
|
||||
|
||||
pub static ref BRANCHES: Vec<Branch> = {
|
||||
let json = &include_str!("../json/ganzhi_branches.json");
|
||||
let data: Vec<BranchData> = match serde_json::from_str(json) {
|
||||
Ok(json) => json,
|
||||
Err(err) => panic!("Error: {}", err),
|
||||
};
|
||||
|
||||
let data: Vec<BranchData> = get_json::<BranchData>(json);
|
||||
data.iter().map(|item| {
|
||||
let item = item.clone();
|
||||
Branch {
|
||||
no: item.no,
|
||||
name: Language {
|
||||
en: item.name.en,
|
||||
ja: LanguageDetails::new(&item.name.ja[0], &item.name.ja[1]),
|
||||
vi: LanguageDetails::new(&item.name.vi[0], &item.name.vi[1]),
|
||||
zh_cn: LanguageDetails::new(&item.name.zh_cn[0], &item.name.zh_cn[1]),
|
||||
zh_tw: LanguageDetails::new(&item.name.zh_tw[0], &item.name.zh_tw[1]),
|
||||
},
|
||||
name: item.language_from_data(),
|
||||
}
|
||||
}).collect()
|
||||
};
|
||||
|
||||
pub static ref WUXING: Vec<WuXing> = {
|
||||
let json = &include_str!("../json/wuxing.json");
|
||||
let data: Vec<WuXingData> = get_json::<WuXingData>(json);
|
||||
data.iter().map(|item| {
|
||||
let item = item.clone();
|
||||
WuXing {
|
||||
no: item.no,
|
||||
name: item.language_from_data(),
|
||||
}
|
||||
}).collect()
|
||||
};
|
||||
|
||||
@@ -7,7 +7,7 @@ use sowngwala::time::{
|
||||
};
|
||||
|
||||
use crate::constants::{BRANCHES, GANZHI_SEXAGESIMAL, HOUR_STEM_TABLE, STEMS};
|
||||
use crate::language::{Language, LanguageTrait};
|
||||
use crate::language::{Language, LanguageData, LanguageTrait, NameDataTrait};
|
||||
use crate::solar_terms::get_lichun;
|
||||
use crate::time::ut_from_local;
|
||||
use crate::utils::longitude_of_the_sun_from_date;
|
||||
@@ -24,6 +24,30 @@ pub struct Branch {
|
||||
pub name: Language,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct StemData {
|
||||
pub no: u8,
|
||||
pub name: LanguageData,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct BranchData {
|
||||
pub no: u8,
|
||||
pub name: LanguageData,
|
||||
}
|
||||
|
||||
impl NameDataTrait for StemData {
|
||||
fn name(&self) -> Box<LanguageData> {
|
||||
Box::new(self.name.clone())
|
||||
}
|
||||
}
|
||||
|
||||
impl NameDataTrait for BranchData {
|
||||
fn name(&self) -> Box<LanguageData> {
|
||||
Box::new(self.name.clone())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
pub struct GanZhi<'a> {
|
||||
pub stem: &'a Stem,
|
||||
|
||||
18
src/jiuxing.rs
Normal file
18
src/jiuxing.rs
Normal file
@@ -0,0 +1,18 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::language::{Language, LanguageTrait};
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct JiuXing {
|
||||
pub num: u8,
|
||||
pub name: Language,
|
||||
pub color: String,
|
||||
pub element: u8,
|
||||
pub planet: u8,
|
||||
}
|
||||
|
||||
impl LanguageTrait for JiuXing {
|
||||
fn name(&self) -> Box<Language> {
|
||||
Box::new(self.name.clone())
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,15 @@ pub struct Language {
|
||||
pub zh_tw: LanguageDetails,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct LanguageData {
|
||||
pub en: String,
|
||||
pub ja: Vec<String>,
|
||||
pub vi: Vec<String>,
|
||||
pub zh_cn: Vec<String>,
|
||||
pub zh_tw: Vec<String>,
|
||||
}
|
||||
|
||||
impl LanguageDetails {
|
||||
pub fn new(alphabet: &str, phonetic: &str) -> Self {
|
||||
LanguageDetails {
|
||||
@@ -42,3 +51,17 @@ pub trait LanguageTrait {
|
||||
self.name().ja.alphabet
|
||||
}
|
||||
}
|
||||
|
||||
pub trait NameDataTrait {
|
||||
fn name(&self) -> Box<LanguageData>;
|
||||
|
||||
fn language_from_data(&self) -> Language {
|
||||
Language {
|
||||
en: self.name().en,
|
||||
ja: LanguageDetails::new(&self.name().ja[0], &self.name().ja[1]),
|
||||
vi: LanguageDetails::new(&self.name().vi[0], &self.name().vi[1]),
|
||||
zh_cn: LanguageDetails::new(&self.name().zh_cn[0], &self.name().zh_cn[1]),
|
||||
zh_tw: LanguageDetails::new(&self.name().zh_tw[0], &self.name().zh_tw[1]),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,3 +7,4 @@ pub mod language;
|
||||
pub mod solar_terms;
|
||||
pub mod time;
|
||||
pub mod utils;
|
||||
pub mod wuxing;
|
||||
|
||||
18
src/planet.rs
Normal file
18
src/planet.rs
Normal file
@@ -0,0 +1,18 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::language::{Language, LanguageTrait};
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct Planet {
|
||||
pub num: u8,
|
||||
pub name: Language,
|
||||
pub color: String,
|
||||
pub element: u8,
|
||||
pub planet: u8,
|
||||
}
|
||||
|
||||
impl LanguageTrait for Planet {
|
||||
fn name(&self) -> Box<Language> {
|
||||
Box::new(self.name.clone())
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sowngwala::time::{add_date, Date, Month};
|
||||
|
||||
use crate::language::{Language, LanguageTrait};
|
||||
use crate::language::{Language, LanguageData, LanguageTrait, NameDataTrait};
|
||||
use crate::utils::longitude_of_the_sun_from_date;
|
||||
|
||||
#[derive(Debug)]
|
||||
@@ -10,12 +11,25 @@ pub struct SolarTerm {
|
||||
pub angle: u16,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct SolarTermData {
|
||||
pub id: u8,
|
||||
pub name: LanguageData,
|
||||
pub angle: u16,
|
||||
}
|
||||
|
||||
impl LanguageTrait for SolarTerm {
|
||||
fn name(&self) -> Box<Language> {
|
||||
Box::new(self.name.clone())
|
||||
}
|
||||
}
|
||||
|
||||
impl NameDataTrait for SolarTermData {
|
||||
fn name(&self) -> Box<LanguageData> {
|
||||
Box::new(self.name.clone())
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(clippy::many_single_char_names)]
|
||||
pub fn get_last_term(date: &Date) -> (f64, Date) {
|
||||
let lng_0: f64 = longitude_of_the_sun_from_date(&date);
|
||||
|
||||
27
src/wuxing.rs
Normal file
27
src/wuxing.rs
Normal file
@@ -0,0 +1,27 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::language::{Language, LanguageData, LanguageTrait, NameDataTrait};
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct WuXing {
|
||||
pub no: u8,
|
||||
pub name: Language,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct WuXingData {
|
||||
pub no: u8,
|
||||
pub name: LanguageData,
|
||||
}
|
||||
|
||||
impl LanguageTrait for WuXing {
|
||||
fn name(&self) -> Box<Language> {
|
||||
Box::new(self.name.clone())
|
||||
}
|
||||
}
|
||||
|
||||
impl NameDataTrait for WuXingData {
|
||||
fn name(&self) -> Box<LanguageData> {
|
||||
Box::new(self.name.clone())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user