Skip to content

Commit 7063d12

Browse files
Datagen API polish (#3951)
1 parent cfd9e22 commit 7063d12

File tree

18 files changed

+426
-251
lines changed

18 files changed

+426
-251
lines changed

provider/blob/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ log = { version = "0.4", optional = true }
3131

3232
[dev-dependencies]
3333
icu_locid = { workspace = true, features = ["serde"] }
34-
icu_datagen = { workspace = true }
34+
icu_datagen = { workspace = true, features = ["networking"] }
3535

3636
[features]
3737
std = ["icu_provider/std"]

provider/blob/src/export/mod.rs

+6-14
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
//!
2020
//! // Export something
2121
//! DatagenDriver::new()
22-
//! .with_keys([icu_provider::hello_world::HelloWorldV1Marker::KEY])
23-
//! .export(&DatagenProvider::latest_tested(), exporter)
24-
//! .unwrap();
22+
//! .with_keys([icu_provider::hello_world::HelloWorldV1Marker::KEY])
23+
//! .export(&DatagenProvider::latest_tested(), exporter)
24+
//! .unwrap();
2525
//!
2626
//! // communicate the blob to the client application (network, disk, etc.)
2727
//! ```
@@ -42,18 +42,10 @@
4242
//! BlobDataProvider::try_new_from_blob(blob.into_boxed_slice())
4343
//! .expect("Should successfully read from blob");
4444
//!
45-
//! // Read the key from the blob
46-
//! let response: DataPayload<HelloWorldV1Marker> = provider
47-
//! .as_deserializing()
48-
//! .load(DataRequest {
49-
//! locale: &langid!("en").into(),
50-
//! metadata: Default::default(),
51-
//! })
52-
//! .unwrap()
53-
//! .take_payload()
54-
//! .unwrap();
45+
//! // Use the provider as a `BufferProvider`
46+
//! let formatter = HelloWorldFormatter::try_new_with_buffer_provider(&provider, &langid!("en").into()).unwrap();
5547
//!
56-
//! assert_eq!(response.get().message, "Hello World");
48+
//! assert_eq!(formatter.format_to_string(), "Hello World");
5749
//! ```
5850
5951
mod blob_exporter;

provider/datagen/Cargo.toml

+14-6
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,11 @@ postcard = "1"
101101
simple_logger = { version = "4.1.0", default-features = false }
102102

103103
[features]
104-
default = ["bin", "use_wasm", "networking", "legacy_api", "rayon"]
105-
provider_baked = ["dep:crlify", "dep:databake", "dep:syn"]
106-
provider_blob = ["dep:icu_provider_blob"]
107-
provider_fs = ["dep:icu_provider_fs"]
108-
legacy_api = ["provider_fs", "provider_blob", "provider_baked"]
104+
default = ["bin", "use_wasm", "networking", "legacy_api", "rayon", "fs_exporter", "blob_exporter", "baked_exporter"]
105+
baked_exporter = ["dep:crlify", "dep:databake", "dep:syn"]
106+
blob_exporter = ["dep:icu_provider_blob"]
107+
fs_exporter = ["dep:icu_provider_fs"]
108+
legacy_api = ["fs_exporter", "blob_exporter", "baked_exporter"]
109109
bin = ["dep:clap", "dep:eyre", "dep:simple_logger"]
110110
rayon = ["dep:rayon"]
111111
# Use wasm for building codepointtries
@@ -124,6 +124,14 @@ icu_relativetime = ["dep:icu_relativetime"]
124124
icu_singlenumberformatter = ["dep:icu_singlenumberformatter"]
125125
icu_transliteration = ["dep:icu_transliteration", "dep:icu_transliterator_parser"]
126126
icu_unitsconversion = ["dep:icu_unitsconversion"]
127+
experimental_components = [
128+
"icu_compactdecimal",
129+
"icu_displaynames",
130+
"icu_relativetime",
131+
"icu_singlenumberformatter",
132+
"icu_transliteration",
133+
"icu_unitsconversion"
134+
]
127135

128136
[[bin]]
129137
name = "icu4x-datagen"
@@ -133,7 +141,7 @@ required-features = ["bin"]
133141
[[test]]
134142
name = "make-testdata"
135143
path = "tests/make-testdata.rs"
136-
required-features = ["provider_fs", "use_wasm"]
144+
required-features = ["fs_exporter", "use_wasm"]
137145

138146
[package.metadata.cargo-all-features]
139147
# We don't need working CPT builders for check

provider/datagen/README.md

+88-11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provider/datagen/src/baked_exporter.rs

+9-15
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,21 @@
99
//! # Examples
1010
//!
1111
//! ```
12-
//! use icu_datagen::prelude::*;
1312
//! use icu_datagen::baked_exporter::*;
13+
//! use icu_datagen::prelude::*;
1414
//!
1515
//! let demo_path = std::env::temp_dir().join("icu4x_baked_demo");
1616
//! # let _ = std::fs::remove_dir_all(&demo_path);
1717
//!
1818
//! // Set up the exporter
19-
//! let mut exporter = BakedExporter::new(demo_path.clone(), Default::default()).unwrap();
19+
//! let mut exporter =
20+
//! BakedExporter::new(demo_path.clone(), Default::default()).unwrap();
2021
//!
2122
//! // Export something
2223
//! DatagenDriver::new()
23-
//! .with_keys([icu_provider::hello_world::HelloWorldV1Marker::KEY])
24-
//! .export(&DatagenProvider::latest_tested(), exporter)
25-
//! .unwrap();
24+
//! .with_keys([icu_provider::hello_world::HelloWorldV1Marker::KEY])
25+
//! .export(&DatagenProvider::latest_tested(), exporter)
26+
//! .unwrap();
2627
//! #
2728
//! # let _ = std::fs::remove_dir_all(&demo_path);
2829
//! ```
@@ -51,21 +52,14 @@
5152
//! # }
5253
//! # }
5354
//! # }
54-
//! include!("/path/to/mod/");
55+
//! include!("/path/to/mod.rs");
5556
//! impl_data_provider!(super::MyDataProvider);
5657
//! }
5758
//!
5859
//! # fn main() {
59-
//! let response: DataPayload<HelloWorldV1Marker> = MyDataProvider
60-
//! .load(DataRequest {
61-
//! locale: &langid!("en").into(),
62-
//! metadata: Default::default(),
63-
//! })
64-
//! .unwrap()
65-
//! .take_payload()
66-
//! .unwrap();
60+
//! let formatter = HelloWorldFormatter::try_new_unstable(&MyDataProvider, &langid!("en").into()).unwrap();
6761
//!
68-
//! assert_eq!(response.get().message, "Hello World");
62+
//! assert_eq!(formatter.format_to_string(), "Hello World");
6963
//! # }
7064
//! ```
7165

0 commit comments

Comments
 (0)