Skip to content

Commit 962196d

Browse files
committed
Update FluentBundle to the latest API
1 parent dc3a8da commit 962196d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+2691
-1980
lines changed

fluent-bundle/Cargo.toml

+6-3
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ readme = "README.md"
1717
keywords = ["localization", "l10n", "i18n", "intl", "internationalization"]
1818
categories = ["localization", "internationalization"]
1919

20-
[dev-dependencies]
21-
criterion = "^0.2"
22-
2320
[dependencies]
2421
fluent-locale = "^0.4.1"
2522
fluent-syntax = "^0.9"
@@ -29,6 +26,12 @@ intl_pluralrules = "^1.0"
2926
rental = "^0.5.4"
3027
smallvec = "0.6.10"
3128

29+
[dev-dependencies]
30+
criterion = "^0.2"
31+
serde = { version = "^1.0", features = ["derive"] }
32+
serde_yaml = "^0.8"
33+
rand = "^0.7.0"
34+
3235
[[bench]]
3336
name = "resolver"
3437
harness = false

fluent-bundle/benches/resolver.rs

+22-12
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,23 @@ fn get_ids(res: &FluentResource) -> Vec<String> {
3838
.collect()
3939
}
4040

41-
fn get_args(name: &str) -> Option<HashMap<&'static str, FluentValue>> {
41+
fn get_args(name: &str) -> Option<HashMap<String, FluentValue>> {
4242
match name {
4343
"preferences" => {
4444
let mut prefs_args = HashMap::new();
45-
prefs_args.insert("name", FluentValue::from("John"));
46-
prefs_args.insert("tabCount", FluentValue::from(5));
47-
prefs_args.insert("count", FluentValue::from(3));
48-
prefs_args.insert("version", FluentValue::from("65.0"));
49-
prefs_args.insert("path", FluentValue::from("/tmp"));
50-
prefs_args.insert("num", FluentValue::from(4));
51-
prefs_args.insert("email", FluentValue::from("[email protected]"));
52-
prefs_args.insert("value", FluentValue::from(4.5));
53-
prefs_args.insert("unit", FluentValue::from("mb"));
54-
prefs_args.insert("service-name", FluentValue::from("Mozilla Disk"));
45+
prefs_args.insert("name".to_string(), FluentValue::from("John"));
46+
prefs_args.insert("tabCount".to_string(), FluentValue::from(5));
47+
prefs_args.insert("count".to_string(), FluentValue::from(3));
48+
prefs_args.insert("version".to_string(), FluentValue::from("65.0"));
49+
prefs_args.insert("path".to_string(), FluentValue::from("/tmp"));
50+
prefs_args.insert("num".to_string(), FluentValue::from(4));
51+
prefs_args.insert("email".to_string(), FluentValue::from("[email protected]"));
52+
prefs_args.insert("value".to_string(), FluentValue::from(4.5));
53+
prefs_args.insert("unit".to_string(), FluentValue::from("mb"));
54+
prefs_args.insert(
55+
"service-name".to_string(),
56+
FluentValue::from("Mozilla Disk"),
57+
);
5558
Some(prefs_args)
5659
}
5760
_ => None,
@@ -91,7 +94,14 @@ fn resolver_bench(c: &mut Criterion) {
9194

9295
b.iter(|| {
9396
for id in &ids {
94-
let (_msg, errors) = bundle.compound(id, args.as_ref()).expect("Message found");
97+
let msg = bundle.get_message(id).expect("Message found");
98+
let mut errors = vec![];
99+
if let Some(value) = msg.value {
100+
let _ = bundle.format_pattern(value, args.as_ref(), &mut errors);
101+
}
102+
for (_, value) in msg.attributes {
103+
let _ = bundle.format_pattern(value, args.as_ref(), &mut errors);
104+
}
95105
assert!(errors.len() == 0, "Resolver errors: {:#?}", errors);
96106
}
97107
})

fluent-bundle/examples/external_arguments.rs

+21-14
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,30 @@ unread-emails =
2020
.expect("Failed to add FTL resources to the bundle.");
2121

2222
let mut args = HashMap::new();
23-
args.insert("name", FluentValue::from("John"));
23+
args.insert("name".to_string(), FluentValue::from("John"));
2424

25-
match bundle.format("hello-world", Some(&args)) {
26-
Some((value, _)) => println!("{}", value),
27-
_ => println!("None"),
28-
}
25+
let msg = bundle
26+
.get_message("hello-world")
27+
.expect("Message doesn't exist.");
28+
let mut errors = vec![];
29+
let pattern = msg.value.expect("Message has no value.");
30+
let value = bundle.format_pattern(&pattern, Some(&args), &mut errors);
31+
println!("{}", value);
2932

30-
match bundle.format("ref", Some(&args)) {
31-
Some((value, _)) => println!("{}", value),
32-
_ => println!("None"),
33-
}
33+
let msg = bundle.get_message("ref").expect("Message doesn't exist.");
34+
let mut errors = vec![];
35+
let pattern = msg.value.expect("Message has no value.");
36+
let value = bundle.format_pattern(&pattern, Some(&args), &mut errors);
37+
println!("{}", value);
3438

3539
let mut args = HashMap::new();
36-
args.insert("emailCount", FluentValue::into_number("1.0"));
40+
args.insert("emailCount".to_string(), FluentValue::into_number("1.0"));
3741

38-
match bundle.format("unread-emails", Some(&args)) {
39-
Some((value, _)) => println!("{}", value),
40-
None => println!("None"),
41-
}
42+
let msg = bundle
43+
.get_message("unread-emails")
44+
.expect("Message doesn't exist.");
45+
let mut errors = vec![];
46+
let pattern = msg.value.expect("Message has no value.");
47+
let value = bundle.format_pattern(&pattern, Some(&args), &mut errors);
48+
println!("{}", value);
4249
}

fluent-bundle/examples/functions.rs

+20-11
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ fn main() {
2828
}
2929
}
3030

31-
FluentValue::None()
31+
FluentValue::None
3232
})
3333
.expect("Failed to add a function to the bundle.");
3434

@@ -39,7 +39,7 @@ fn main() {
3939
Some(FluentValue::String(ref string)) => {
4040
format!("All your base belong to {}", string).into()
4141
}
42-
_ => FluentValue::None(),
42+
_ => FluentValue::None,
4343
};
4444
})
4545
.expect("Failed to add a function to the bundle.");
@@ -54,18 +54,27 @@ fn main() {
5454
.add_resource(res3)
5555
.expect("Failed to add FTL resources to the bundle.");
5656

57-
let (value, _) = bundle
58-
.format("hello-world", None)
59-
.expect("Failed to format a message.");
57+
let msg = bundle
58+
.get_message("hello-world")
59+
.expect("Message doesn't exist.");
60+
let mut errors = vec![];
61+
let pattern = msg.value.expect("Message has no value.");
62+
let value = bundle.format_pattern(&pattern, None, &mut errors);
6063
assert_eq!(&value, "Hey there! \u{2068}I'm a function!\u{2069}");
6164

62-
let (value, _) = bundle
63-
.format("meaning-of-life", None)
64-
.expect("Failed to format a message.");
65+
let msg = bundle
66+
.get_message("meaning-of-life")
67+
.expect("Message doesn't exist.");
68+
let mut errors = vec![];
69+
let pattern = msg.value.expect("Message has no value.");
70+
let value = bundle.format_pattern(&pattern, None, &mut errors);
6571
assert_eq!(&value, "The answer to life, the universe, and everything");
6672

67-
let (value, _) = bundle
68-
.format("all-your-base", None)
69-
.expect("Failed to format a message.");
73+
let msg = bundle
74+
.get_message("all-your-base")
75+
.expect("Message doesn't exist.");
76+
let mut errors = vec![];
77+
let pattern = msg.value.expect("Message has no value.");
78+
let value = bundle.format_pattern(&pattern, None, &mut errors);
7079
assert_eq!(&value, "All your base belong to us");
7180
}

fluent-bundle/examples/hello.rs

+7-3
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@ fn main() {
77
bundle
88
.add_resource(&res)
99
.expect("Failed to add FTL resources to the bundle.");
10-
let (value, _) = bundle
11-
.format("hello-world", None)
12-
.expect("Failed to format a message.");
10+
11+
let msg = bundle
12+
.get_message("hello-world")
13+
.expect("Message doesn't exist.");
14+
let mut errors = vec![];
15+
let pattern = msg.value.expect("Message has no value.");
16+
let value = bundle.format_pattern(&pattern, None, &mut errors);
1317
assert_eq!(&value, "Hello, world!");
1418
}

fluent-bundle/examples/message_reference.rs

+14-8
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,19 @@ bazbar = { baz } Bar
1515
.add_resource(res)
1616
.expect("Failed to add FTL resources to the bundle.");
1717

18-
match bundle.format("foobar", None) {
19-
Some((value, _)) => println!("{}", value),
20-
_ => println!("None"),
21-
}
18+
let msg = bundle
19+
.get_message("foobar")
20+
.expect("Message doesn't exist.");
21+
let mut errors = vec![];
22+
let pattern = msg.value.expect("Message has no value.");
23+
let value = bundle.format_pattern(&pattern, None, &mut errors);
24+
println!("{}", value);
2225

23-
match bundle.format("bazbar", None) {
24-
Some((value, _)) => println!("{}", value),
25-
_ => println!("None"),
26-
}
26+
let msg = bundle
27+
.get_message("bazbar")
28+
.expect("Message doesn't exist.");
29+
let mut errors = vec![];
30+
let pattern = msg.value.expect("Message has no value.");
31+
let value = bundle.format_pattern(&pattern, None, &mut errors);
32+
println!("{}", value);
2733
}

fluent-bundle/examples/selector.rs

+15-9
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,22 @@ hello-world2 = Hello { $name ->
2121
.add_resource(res)
2222
.expect("Failed to add FTL resources to the bundle.");
2323

24-
match bundle.format("hello-world", None) {
25-
Some((value, _)) => println!("{}", value),
26-
_ => println!("None"),
27-
}
24+
let msg = bundle
25+
.get_message("hello-world")
26+
.expect("Message doesn't exist.");
27+
let mut errors = vec![];
28+
let pattern = msg.value.expect("Message has no value.");
29+
let value = bundle.format_pattern(&pattern, None, &mut errors);
30+
println!("{}", value);
2831

2932
let mut args = HashMap::new();
30-
args.insert("name", FluentValue::from("moon"));
33+
args.insert("name".to_string(), FluentValue::from("moon"));
3134

32-
match bundle.format("hello-world2", Some(&args)) {
33-
Some((value, _)) => println!("{}", value),
34-
_ => println!("None"),
35-
}
35+
let msg = bundle
36+
.get_message("hello-world2")
37+
.expect("Message doesn't exist.");
38+
let mut errors = vec![];
39+
let pattern = msg.value.expect("Message has no value.");
40+
let value = bundle.format_pattern(&pattern, Some(&args), &mut errors);
41+
println!("{}", value);
3642
}

fluent-bundle/examples/simple-app.rs

+22-13
Original file line numberDiff line numberDiff line change
@@ -130,29 +130,38 @@ fn main() {
130130
// 7.2. Construct a map of arguments
131131
// to format the message.
132132
let mut args = HashMap::new();
133-
args.insert("input", FluentValue::from(i));
134-
args.insert("value", FluentValue::from(collatz(i)));
133+
args.insert("input".to_string(), FluentValue::from(i));
134+
args.insert("value".to_string(), FluentValue::from(collatz(i)));
135135
// 7.3. Format the message.
136-
let (value, _) = bundle
137-
.format("response-msg", Some(&args))
138-
.expect("Failed to format a message.");
136+
let mut errors = vec![];
137+
let msg = bundle
138+
.get_message("response-msg")
139+
.expect("Message doesn't exist.");
140+
let pattern = msg.value.expect("Message has no value.");
141+
let value = bundle.format_pattern(&pattern, Some(&args), &mut errors);
139142
println!("{}", value);
140143
}
141144
Err(err) => {
142145
let mut args = HashMap::new();
143-
args.insert("input", FluentValue::from(input.as_str()));
144-
args.insert("reason", FluentValue::from(err.to_string()));
145-
let (value, _) = bundle
146-
.format("input-parse-error-msg", Some(&args))
147-
.expect("Failed to format a message.");
146+
args.insert("input".to_string(), FluentValue::from(input.as_str()));
147+
args.insert("reason".to_string(), FluentValue::from(err.to_string()));
148+
let mut errors = vec![];
149+
let msg = bundle
150+
.get_message("input-parse-error-msg")
151+
.expect("Message doesn't exist.");
152+
let pattern = msg.value.expect("Message has no value.");
153+
let value = bundle.format_pattern(&pattern, Some(&args), &mut errors);
148154
println!("{}", value);
149155
}
150156
}
151157
}
152158
None => {
153-
let (value, _) = bundle
154-
.format("missing-arg-error", None)
155-
.expect("Failed to format a message.");
159+
let mut errors = vec![];
160+
let msg = bundle
161+
.get_message("missing-arg-error")
162+
.expect("Message doesn't exist.");
163+
let pattern = msg.value.expect("Message has no value.");
164+
let value = bundle.format_pattern(&pattern, None, &mut errors);
156165
println!("{}", value);
157166
}
158167
}

0 commit comments

Comments
 (0)