Skip to content

Commit 3d67d34

Browse files
author
Zibi Braniecki
committed
Fix the privateuse matching by blocking it for now
1 parent 8456f11 commit 3d67d34

File tree

13 files changed

+59
-94
lines changed

13 files changed

+59
-94
lines changed

.travis.yml

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,23 @@
1-
sudo: false
21
language: rust
2+
sudo: required
33
cache: cargo
4+
dist: trusty
45
rust:
56
- stable
67
- beta
78
- nightly
8-
# Dependencies of kcov, used by coverage
99
addons:
10-
apt:
11-
packages:
12-
- libcurl4-openssl-dev
13-
- libelf-dev
14-
- libdw-dev
15-
- binutils-dev
16-
- cmake
17-
sources:
18-
- kalakris-cmake
10+
apt:
11+
packages:
12+
- libssl-dev
1913

20-
before_script:
21-
- |
22-
cargo install cargo-travis || echo "cargo-travis already installed"
23-
export PATH=$HOME/.cargo/bin:$PATH
24-
25-
# the main build
2614
script:
27-
- |
28-
cargo build &&
29-
cargo test &&
30-
cargo doc
15+
- cargo build
16+
- cargo test
17+
- cargo doc
3118

32-
after_success:
33-
# measure code coverage and upload to coveralls.io
34-
- cargo coveralls
19+
after_success: |
20+
if [[ "$TRAVIS_RUST_VERSION" == stable ]]; then
21+
RUSTFLAGS="--cfg procmacro2_semver_exempt" cargo install cargo-tarpaulin
22+
cargo tarpaulin --ciserver travis-ci --coveralls $TRAVIS_JOB_ID
23+
fi

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ categories = ["internationalization", "localization"]
1313

1414
[badges]
1515
travis-ci = { repository = "projectfluent/fluent-locale-rs" }
16+
coveralls = { repository = "projectfluent/fluent-locale-rs", branch = "master", service = "github" }
17+
18+
maintenance = { status = "actively-developed" }
1619

1720
[dependencies]
1821

benches/lib.rs

Lines changed: 10 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,54 +3,30 @@
33
extern crate fluent_locale;
44
extern crate test;
55

6-
use test::Bencher;
7-
use fluent_locale::Locale;
86
use fluent_locale::negotiate_languages;
7+
use fluent_locale::Locale;
8+
use test::Bencher;
99

1010
#[bench]
1111
fn bench_locale(b: &mut Bencher) {
1212
let locales = [
13-
"en-US",
14-
"fr",
15-
"de",
16-
"en-GB",
17-
"it",
18-
"pl",
19-
"ru",
20-
"sr-Cyrl",
21-
"sr-Latn",
22-
"zh-Hant",
23-
"zh-Hans",
24-
"ja-JP",
25-
"he-IL",
26-
"de-DE",
27-
"de-IT",
13+
"en-US", "fr", "de", "en-GB", "it", "pl", "ru", "sr-Cyrl", "sr-Latn", "zh-Hant", "zh-Hans",
14+
"ja-JP", "he-IL", "de-DE", "de-IT",
2815
];
2916

30-
b.iter(|| for locale in &locales {
31-
let _ = Locale::new(*locale, None);
17+
b.iter(|| {
18+
for locale in &locales {
19+
let _ = Locale::new(*locale, None);
20+
}
3221
});
3322
}
3423

3524
#[bench]
3625
fn bench_negotiate(b: &mut Bencher) {
3726
let requested = vec!["de", "it", "ru"];
3827
let available = vec![
39-
"en-US",
40-
"fr",
41-
"de",
42-
"en-GB",
43-
"it",
44-
"pl",
45-
"ru",
46-
"sr-Cyrl",
47-
"sr-Latn",
48-
"zh-Hant",
49-
"zh-Hans",
50-
"ja-JP",
51-
"he-IL",
52-
"de-DE",
53-
"de-IT",
28+
"en-US", "fr", "de", "en-GB", "it", "pl", "ru", "sr-Cyrl", "sr-Latn", "zh-Hant", "zh-Hans",
29+
"ja-JP", "he-IL", "de-DE", "de-IT",
5430
];
5531

5632
b.iter(|| {

examples/locale.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
extern crate fluent_locale;
22

3-
use std::collections::BTreeMap;
43
use fluent_locale::Locale;
4+
use std::collections::BTreeMap;
55

66
fn main() {
77
let locale = Locale::from("en-US");
@@ -14,17 +14,13 @@ fn main() {
1414
println!("region: {:?}", locale.get_region());
1515
println!("======\n\n");
1616

17-
18-
1917
let mut locale = Locale::from("de-DE");
2018
locale.set_region("AT").unwrap();
2119

2220
println!("======");
2321
println!("Locale: {}", locale);
2422
println!("======\n\n");
2523

26-
27-
2824
let mut options = BTreeMap::new();
2925
options.insert("hour-cycle", "h12");
3026

examples/negotiate.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
extern crate fluent_locale;
22

3-
use fluent_locale::negotiate_languages;
43
use fluent_locale::negotiate::NegotiationStrategy;
4+
use fluent_locale::negotiate_languages;
55

66
fn main() {
77
let supported = negotiate_languages(

src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
//! but is arguably a better option for use cases involving operations on
1616
//! language tags and for language negotiation.
1717
18+
pub mod accepted_languages;
1819
pub mod locale;
1920
pub mod negotiate;
20-
pub mod accepted_languages;
2121

22+
pub use accepted_languages::parse as parse_accepted_languages;
2223
pub use locale::Locale;
2324
pub use negotiate::negotiate_languages;
2425
pub use negotiate::NegotiationStrategy;
25-
pub use accepted_languages::parse as parse_accepted_languages;

src/locale/mod.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
use std::fmt;
21
use std::collections::BTreeMap;
2+
use std::fmt;
33

4-
mod parser;
54
mod options;
5+
mod parser;
66

77
/// A Locale object.
88
///
@@ -170,6 +170,10 @@ impl Locale {
170170
self.variants = None;
171171
}
172172

173+
pub fn has_privateuse(&self) -> bool {
174+
!self.privateuse.is_empty()
175+
}
176+
173177
pub fn get_extensions(&self) -> BTreeMap<String, &BTreeMap<String, String>> {
174178
self.extensions.as_ref().map_or(BTreeMap::new(), |map| {
175179
map.iter()
@@ -192,6 +196,10 @@ impl Locale {
192196
}
193197

194198
pub fn matches(&self, other: &Locale, available_range: bool, requested_range: bool) -> bool {
199+
if !self.privateuse.is_empty() || other.has_privateuse() {
200+
return false;
201+
}
202+
195203
if (!available_range || !self.language.is_none())
196204
&& (!requested_range || !other.get_language().is_empty())
197205
&& self.get_language() != other.get_language()

src/locale/options.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use std::collections::BTreeMap;
21
use super::Locale;
2+
use std::collections::BTreeMap;
33

44
pub fn option_name_for_key(key: &str) -> &'static str {
55
match key {
@@ -17,7 +17,6 @@ pub fn option_key_for_name(key: &str) -> &'static str {
1717
}
1818
}
1919

20-
2120
pub fn apply_options(loc: &mut Locale, opts: BTreeMap<&str, &str>) {
2221
for (key, value) in opts {
2322
match key {
@@ -26,7 +25,8 @@ pub fn apply_options(loc: &mut Locale, opts: BTreeMap<&str, &str>) {
2625
"region" => loc.region = Some(value.to_owned()),
2726

2827
_ => if let Some(ref mut exts) = loc.extensions {
29-
let uext = exts.entry("unicode".to_owned())
28+
let uext = exts
29+
.entry("unicode".to_owned())
3030
.or_insert_with(BTreeMap::new);
3131
uext.insert(key.to_owned(), value.to_owned());
3232
} else {

src/locale/parser.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1+
use super::options;
2+
use super::Locale;
13
use std::collections::BTreeMap;
2-
use std::fmt::{self, Display};
34
use std::error::Error as ErrorTrait;
4-
use super::Locale;
5-
use super::options;
5+
use std::fmt::{self, Display};
66

77
pub type Result<T> = ::std::result::Result<T, Error>;
88

@@ -168,7 +168,8 @@ pub fn parse_language_tag(t: &str) -> Result<Locale> {
168168
} else {
169169
position = 2;
170170
}
171-
} else if position == 1 && slen == 3
171+
} else if position == 1
172+
&& slen == 3
172173
&& subtag.chars().all(|c| c.is_ascii_alphabetic())
173174
{
174175
// extlangs
@@ -177,7 +178,8 @@ pub fn parse_language_tag(t: &str) -> Result<Locale> {
177178
} else {
178179
locale.extlangs = Some(vec![subtag.to_owned()]);
179180
}
180-
} else if position <= 2 && slen == 4
181+
} else if position <= 2
182+
&& slen == 4
181183
&& subtag.chars().all(|c| c.is_ascii_alphabetic())
182184
{
183185
// Script

src/negotiate/likely_subtags.rs

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,7 @@
11
use locale::Locale;
22

33
static REGION_MATCHING_KEYS: &[&str] = &[
4-
"az",
5-
"bg",
6-
"cs",
7-
"de",
8-
"es",
9-
"fi",
10-
"fr",
11-
"hu",
12-
"it",
13-
"lt",
14-
"lv",
15-
"nl",
16-
"pl",
17-
"ro",
18-
"ru",
4+
"az", "bg", "cs", "de", "es", "fi", "fr", "hu", "it", "lt", "lv", "nl", "pl", "ro", "ru",
195
];
206

217
pub fn add(loc: &str) -> Option<String> {

0 commit comments

Comments
 (0)