hko 1.13.0

Rust library for Hong Kong Observatory Open Data API
Documentation
// Copyright (c) 2021 - 2025 GreenYun Organization
// SPDX-License-Identifier: MIT

use super::{Code, WarningStatementCode, WarningSubtypeCode};
use crate::{
    common::{EnumNameDesc, Lang},
    internal::enum_lang_matches,
};

impl EnumNameDesc for WarningStatementCode {
    fn name(&self, lang: Lang) -> String {
        enum_lang_matches! {
            self, lang,
            WarningStatementCode::WFIRE =>
                "Fire Danger Warning",
                "火災危險警告",
                "火灾危险警告",
            WarningStatementCode::WFROST =>
                "Frost Warning",
                "霜凍警告",
                "霜冻警告",
            WarningStatementCode::WHOT =>
                "Hot Weather Warning",
                "酷熱天氣警告",
                "酷热天气警告",
            WarningStatementCode::WCOLD =>
                "Cold Weather Warning",
                "寒冷天氣警告",
                "寒冷天气警告",
            WarningStatementCode::WMSGNL =>
                "Strong Monsoon Signal",
                "強烈季候風信號",
                "强烈季候风信号",
            WarningStatementCode::WTCPRE8 =>
                "Pre-no.8 Special Announcement",
                "預警八號熱帶氣旋警告信號之特別報告",
                "预警八号热带气旋警告信号之特别报告",
            WarningStatementCode::WRAIN =>
                "Rainstorm Warning Signal",
                "暴雨警告信號",
                "暴雨警告信号",
            WarningStatementCode::WFNTSA =>
                "Special Announcement on Flooding in the northern New Territories",
                "新界北部水浸特別報告",
                "新界北部水浸特别报告",
            WarningStatementCode::WL =>
                "Landslip Warning",
                "山泥傾瀉警告",
                "山泥倾泻警告",
            WarningStatementCode::WTCSGNL =>
                "Tropical Cyclone Warning Signal",
                "熱帶氣旋警告信號",
                "热带气旋警告信号",
            WarningStatementCode::WTMW =>
                "Tsunami Warning",
                "海嘯警告",
                "海啸警告",
            WarningStatementCode::WTS =>
                "Thunderstorm Warning",
                "雷暴警告",
                "雷暴警告",
        }
        .to_owned()
    }

    fn desc(&self, lang: Lang) -> String {
        self.name(lang)
    }
}

impl EnumNameDesc for WarningSubtypeCode {
    fn name(&self, lang: Lang) -> String {
        enum_lang_matches! {
            self, lang,
            WarningSubtypeCode::WFIREY =>
                "Yellow Fire Danger Warning",
                "黃色火災危險警告",
                "黄色火灾危险警告",
            WarningSubtypeCode::WFIRER =>
                "Red Fire Danger Warning",
                "紅色火災危險警告",
                "红色火灾危险警告",
            WarningSubtypeCode::WRAINA =>
                "Amber Rainstorm Warning Signal",
                "黃色暴雨警告信號",
                "黄色暴雨警告信号",
            WarningSubtypeCode::WRAINR =>
                "Red Rainstorm Warning Signal",
                "紅色暴雨警告信號",
                "红色暴雨警告信号",
            WarningSubtypeCode::WRAINB =>
                "Black Rainstorm Warning Signal",
                "黑色暴雨警告信號",
                "黑色暴雨警告信号",
            WarningSubtypeCode::TC1 =>
                "Standby Signal No. 1",
                "一號戒備信號",
                "一号戒备信号",
            WarningSubtypeCode::TC3 =>
                "Strong Wind Signal No. 3",
                "三號強風信號",
                "三号强风信号",
            WarningSubtypeCode::TC8NE =>
                "No. 8 Northeast Gale or Storm Signal",
                "八號東北烈風或暴風信號",
                "八号东北烈风或暴风信号",
            WarningSubtypeCode::TC8SE =>
                "No. 8 Southeast Gale or Storm Signal",
                "八號東南烈風或暴風信號",
                "八号东南烈风或暴风信号",
            WarningSubtypeCode::TC8SW =>
                "No. 8 Southwest Gale or Storm Signal",
                "八號西南烈風或暴風信號",
                "八号西南烈风或暴风信号",
            WarningSubtypeCode::TC8NW =>
                "No. 8 Northwest Gale or Storm Signal",
                "八號西北烈風或暴風信號",
                "八号西北烈风或暴风信号",
            WarningSubtypeCode::TC9 =>
                "Increasing Gale or Storm Signal No. 9",
                "九號烈風或暴風風力增強信號",
                "九号烈风或暴风风力增强信号",
            WarningSubtypeCode::TC10 =>
                "Hurricane Signal No. 10",
                "十號颶風信號",
                "十号飓风信号",
            WarningSubtypeCode::CANCEL =>
                "Cancel All Signals",
                "取消所有熱帶氣旋警告信號",
                "取消所有热带气旋警告信号",
        }
        .to_owned()
    }

    fn desc(&self, lang: Lang) -> String {
        self.name(lang)
    }
}

impl EnumNameDesc for Code {
    fn name(&self, lang: Lang) -> String {
        match self {
            Self::WarningStatement(w) => w.name(lang),
            Self::WarningSubType(w) => w.name(lang),
        }
    }

    fn desc(&self, lang: Lang) -> String {
        match self {
            Self::WarningStatement(w) => w.desc(lang),
            Self::WarningSubType(w) => w.desc(lang),
        }
    }
}