unicode-writing-script 0.2.0

The package provides detection of writing scripts from Unicode codepoints.
Documentation
use std::collections::BTreeMap;
use std::fs::File;
use std::io::Write;
use std::path::Path;

const DATA: &str = include_str!("vendor/detect-writing-script/data.json");

macro_rules! ok(($result:expr) => ($result.unwrap()));

fn main() {
    let root = ok!(std::env::var("OUT_DIR"));
    let path = Path::new(&root).join("data.rs");
    let mut file = ok!(File::create(&path));
    let data: BTreeMap<String, Vec<[u32; 2]>> = ok!(serde_json::from_str(DATA));
    let data = data
        .into_iter()
        .map(|(name, mut ranges)| {
            ranges.sort();
            let ranges = ranges
                .into_iter()
                .map(|range| format!("({},{})", range[0], range[1]))
                .collect::<Vec<_>>()
                .join(",");
            format!(r#"("{name}", &[{ranges}])"#)
        })
        .collect::<Vec<_>>()
        .join(",");
    ok!(write!(
        file,
        "const DATA: &[(&str, &[(u32, u32)])] = &[{data}];",
    ));
}