pinyin_zhuyin 0.1.2

Convert between pinyin forms or zhuyin
Documentation
extern crate phf_codegen;

use std::env;
use std::fs::File;
use std::io::{BufWriter, Write};
use std::path::Path;

fn main() {
    let path = Path::new(&env::var("OUT_DIR").unwrap()).join("codegen.rs");
    let mut file = BufWriter::new(File::create(&path).unwrap());

    // Pinyin to Zhuyin
    write!(&mut file, "static MAP_P2Z: phf::Map<&str, &str> = ").unwrap();
    phf_codegen::Map::new()
        .entry("b", "\"\"").entry("d", "\"\"").entry("g", "\"\"")
        .entry("p", "\"\"").entry("t", "\"\"").entry("k", "\"\"")
        .entry("m", "\"\"").entry("n", "\"\"").entry("h", "\"\"")
        .entry("f", "\"\"").entry("l", "\"\"")

        .entry("j", "\"\"").entry("zh", "\"\"").entry("z", "\"\"")
        .entry("q", "\"\"").entry("ch", "\"\"").entry("c", "\"\"")
        .entry("x", "\"\"").entry("sh", "\"\"").entry("s", "\"\"")
                             .entry("r" , "\"\"")

        .entry("i", "\"\"").entry("a", "\"\"").entry("ai", "\"\"").entry("an" , "\"\"")
        .entry("u", "\"\"").entry("o", "\"\"").entry("ei", "\"\"").entry("en" , "\"\"")
        .entry("v", "\"\"").entry("e", "\"\"").entry("ao", "\"\"").entry("ang", "\"\"")
                                          .entry("ou", "\"\"").entry("eng", "\"\"")

        .entry("ia" , "\"ㄧㄚ\"").entry("ua" , "\"ㄨㄚ\"").entry("ing", "\"ㄧㄥ\"").entry("iang", "\"ㄧㄤ\"")
        .entry("ie" , "\"ㄧㄝ\"").entry("uo" , "\"ㄨㄛ\"").entry("ong", "\"ㄨㄥ\"").entry("uang", "\"ㄨㄤ\"")
        .entry("iao", "\"ㄧㄠ\"").entry("uai", "\"ㄨㄞ\"").entry("ue" , "\"ㄩㄝ\"").entry("iong", "\"ㄩㄥ\"")
        .entry("iu" , "\"ㄧㄡ\"").entry("ui" , "\"ㄨㄟ\"").entry("ve" , "\"ㄩㄝ\"")
        .entry("ian", "\"ㄧㄢ\"").entry("uan", "\"ㄨㄢ\"").entry("van", "\"ㄩㄢ\"")
        .entry("in" , "\"ㄧㄣ\"").entry("un" , "\"ㄨㄣ\"").entry("vn" , "\"ㄩㄣ\"")

        .entry("er", "\"\"")
        .entry("y", "\"\"").entry("w", "\"\"")

        .build(&mut file)
        .unwrap();
    write!(&mut file, ";\n").unwrap();

    // Zhuyin to Pinyin
    write!(&mut file, "static MAP_Z2P: phf::Map<&str, &str> = ").unwrap();
    phf_codegen::Map::new()
        .entry("", "\"b\"").entry("", "\"d\"").entry("", "\"g\"")
        .entry("", "\"p\"").entry("", "\"t\"").entry("", "\"k\"")
        .entry("", "\"m\"").entry("", "\"n\"").entry("", "\"h\"")
        .entry("", "\"f\"").entry("", "\"l\"")

        .entry("", "\"j\"").entry("", "\"zh\"").entry("", "\"z\"")
        .entry("", "\"q\"").entry("", "\"ch\"").entry("", "\"c\"")
        .entry("", "\"x\"").entry("", "\"sh\"").entry("", "\"s\"")
                             .entry("", "\"r\"")

        .entry("", "\"i\"").entry("", "\"a\"").entry("", "\"ai\"").entry("", "\"an\"")
        .entry("", "\"u\"").entry("", "\"o\"").entry("", "\"ei\"").entry("", "\"en\"")
        .entry("", "\"v\"").entry("", "\"e\"").entry("", "\"ao\"").entry("", "\"ang\"")
                             .entry("", "\"e\"").entry("", "\"ou\"").entry("", "\"eng\"")

        .entry("ㄧㄚ", "\"ia\"") .entry("ㄨㄚ", "\"ua\"") .entry("ㄧㄥ", "\"ing\"").entry("ㄧㄤ", "\"iang\"")
        .entry("ㄧㄝ", "\"ie\"") .entry("ㄨㄛ", "\"uo\"") .entry("ㄨㄥ", "\"ong\"").entry("ㄨㄤ", "\"uang\"")
        .entry("ㄧㄠ", "\"iao\"").entry("ㄨㄞ", "\"uai\"").entry("ㄩㄝ", "\"ve\"") .entry("ㄩㄥ", "\"iong\"")
        .entry("ㄧㄡ", "\"iu\"") .entry("ㄨㄟ", "\"ui\"")
        .entry("ㄧㄢ", "\"ian\"").entry("ㄨㄢ", "\"uan\"").entry("ㄩㄢ", "\"van\"")
        .entry("ㄧㄣ", "\"in\"") .entry("ㄨㄣ", "\"un\"") .entry("ㄩㄣ", "\"vn\"")

        .entry("", "\"er\"")

        .build(&mut file)
        .unwrap();
    write!(&mut file, ";\n").unwrap();
}