formatjs_icu_messageformat_parser 0.2.4

ICU MessageFormat parser implementation in Rust
Documentation
load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library", "rust_shared_library", "rust_test")
load("@rules_rust_wasm_bindgen//:defs.bzl", "rust_wasm_bindgen")
load("//tools:index.bzl", "generate_src_file")

exports_files(
    [
        "Cargo.toml",
        "date_time_pattern_generator.rs",
        "error.rs",
        "lib.rs",
        "manipulator.rs",
        "parser.rs",
        "printer.rs",
        "regex_generated.rs",
        "time_data_generated.rs",
        "types.rs",
    ],
    visibility = ["//visibility:public"],
)

generate_src_file(
    name = "time-data",
    src = "time_data_generated.rs",
    tool = "//packages/icu-messageformat-parser/tools:time_data_gen",
)

generate_src_file(
    name = "regex",
    src = "regex_generated.rs",
    tool = "//packages/icu-messageformat-parser/tools:regex_gen",
)

rust_library(
    name = "icu_messageformat_parser",
    srcs = [
        "date_time_pattern_generator.rs",
        "error.rs",
        "lib.rs",
        "manipulator.rs",
        "parser.rs",
        "printer.rs",
        "regex_generated.rs",
        "time_data_generated.rs",
        "types.rs",
    ],
    crate_name = "formatjs_icu_messageformat_parser",
    visibility = ["//visibility:public"],
    deps = [
        "//crates/icu_skeleton_parser",
        "@crates//:icu",
        "@crates//:indexmap",
        "@crates//:once_cell",
        "@crates//:regex",
        "@crates//:serde",
    ],
)

rust_test(
    name = "icu_messageformat_parser_test",
    crate = ":icu_messageformat_parser",
)

rust_binary(
    name = "parser_bench",
    srcs = ["benches/parser_bench.rs"],
    crate_name = "parser_bench",
    deps = [
        ":icu_messageformat_parser",
        "@crates//:criterion",
    ],
)

rust_binary(
    name = "comparison_bench",
    srcs = ["benches/comparison_bench.rs"],
    crate_name = "comparison_bench",
    deps = [
        ":icu_messageformat_parser",
        "@crates//:criterion",
        "@crates//:swc_icu_messageformat_parser",
    ],
)

# WASM binary using platform parameter
rust_shared_library(
    name = "_wasm_lib",
    srcs = ["lib_wasm.rs"],
    crate_name = "formatjs_icu_messageformat_parser",
    crate_root = "lib_wasm.rs",
    platform = "@rules_rust//rust/platform:wasm",
    deps = [
        ":icu_messageformat_parser",
        "@crates//:icu",
        "@crates//:serde",
        "@crates//:serde-wasm-bindgen",
        "@crates//:serde_json",
        "@crates//:wasm-bindgen",
    ],
)

# Generate JS glue code with wasm-bindgen
rust_wasm_bindgen(
    name = "formatjs_icu_messageformat_parser_wasm",
    target = "web",
    visibility = ["//visibility:public"],
    wasm_file = ":_wasm_lib",
)