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",
],
)
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",
],
)
rust_wasm_bindgen(
name = "formatjs_icu_messageformat_parser_wasm",
target = "web",
visibility = ["//visibility:public"],
wasm_file = ":_wasm_lib",
)