mirror of
https://github.com/0x5eal/chrono-lc.git
synced 2024-12-12 12:50:36 +00:00
Allow to localise AM and PM and rename en to C
This commit is contained in:
parent
770653e2a1
commit
d4c00f1892
5 changed files with 36 additions and 33 deletions
47
build.rs
47
build.rs
|
@ -18,6 +18,7 @@ pub struct Locale {
|
|||
long_months: Option<Vec<String>>,
|
||||
short_weekdays: Option<Vec<String>>,
|
||||
long_weekdays: Option<Vec<String>>,
|
||||
ampm: Option<Vec<String>>,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
@ -32,38 +33,8 @@ fn main() {
|
|||
long_months: HashMap::new(),
|
||||
short_weekdays: HashMap::new(),
|
||||
long_weekdays: HashMap::new(),
|
||||
ampm: HashMap::new(),
|
||||
};
|
||||
|
||||
res.short_months.insert(
|
||||
"C".into(),
|
||||
vec!["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
||||
);
|
||||
|
||||
res.long_months.insert(
|
||||
"C".into(),
|
||||
vec![
|
||||
"January",
|
||||
"February",
|
||||
"March",
|
||||
"April",
|
||||
"May",
|
||||
"June",
|
||||
"July",
|
||||
"August",
|
||||
"September",
|
||||
"October",
|
||||
"November",
|
||||
"December",
|
||||
],
|
||||
);
|
||||
|
||||
res.short_weekdays
|
||||
.insert("C".into(), vec!["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]);
|
||||
|
||||
res.long_weekdays.insert(
|
||||
"C".into(),
|
||||
vec!["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
|
||||
);
|
||||
"#####.as_bytes());
|
||||
|
||||
println!("Building...");
|
||||
|
@ -139,6 +110,20 @@ fn main() {
|
|||
).as_bytes()).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(ampm) = locale_data.ampm {
|
||||
if ampm.len() == 2 {
|
||||
let _ = f.write_all(format!(
|
||||
"res.ampm.insert(\"{}\".into(), vec![{}]);\n",
|
||||
locale_name,
|
||||
ampm
|
||||
.iter()
|
||||
.map(|s| format!("\"{}\"", s))
|
||||
.collect::<Vec<String>>()
|
||||
.join(",")
|
||||
).as_bytes()).unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -44,5 +44,9 @@
|
|||
"Friday",
|
||||
"Saturday",
|
||||
"Sunday"
|
||||
],
|
||||
"ampm": [
|
||||
"am",
|
||||
"pm"
|
||||
]
|
||||
}
|
|
@ -44,5 +44,9 @@
|
|||
"Venerdí",
|
||||
"Sabato",
|
||||
"Domenica"
|
||||
],
|
||||
"ampm": [
|
||||
"am",
|
||||
"pm"
|
||||
]
|
||||
}
|
||||
|
|
13
src/lib.rs
13
src/lib.rs
|
@ -191,8 +191,8 @@ where
|
|||
LongMonthName => date.map(|d| write!(w, "{}", long_month(d.month0() as usize, locale))),
|
||||
ShortWeekdayName => date.map(|d| write!(w, "{}", short_weekday(d.weekday().num_days_from_monday() as usize, locale))),
|
||||
LongWeekdayName => date.map(|d| write!(w, "{}", long_weekday(d.weekday().num_days_from_monday() as usize, locale))),
|
||||
LowerAmPm => time.map(|t| write!(w, "{}", if t.hour12().0 { "pm" } else { "am" })),
|
||||
UpperAmPm => time.map(|t| write!(w, "{}", if t.hour12().0 { "PM" } else { "AM" })),
|
||||
LowerAmPm => time.map(|t| write!(w, "{}", ampm(t.hour12().0 as usize, locale))),
|
||||
UpperAmPm => time.map(|t| write!(w, "{}", ampm(t.hour12().0 as usize, locale).to_uppercase())),
|
||||
Nanosecond => time.map(|t| {
|
||||
let nano = t.nanosecond() % 1_000_000_000;
|
||||
if nano == 0 {
|
||||
|
@ -306,3 +306,12 @@ fn long_weekday(day: usize, locale: &str) -> String {
|
|||
.and_then(|res| res.get(day).map(|v| v.to_string()))
|
||||
.unwrap_or_else(|| format!("{}", day))
|
||||
}
|
||||
|
||||
fn ampm(spec: usize, locale: &str) -> String {
|
||||
locales::LOCALES
|
||||
.ampm
|
||||
.get(locale)
|
||||
.or_else(|| locales::LOCALES.ampm.get("C"))
|
||||
.and_then(|res| res.get(spec).map(|v| v.to_string()))
|
||||
.unwrap_or_else(|| format!("{}", spec))
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ pub struct Locales {
|
|||
pub long_months: HashMap<String, Vec<&'static str>>,
|
||||
pub short_weekdays: HashMap<String, Vec<&'static str>>,
|
||||
pub long_weekdays: HashMap<String, Vec<&'static str>>,
|
||||
pub ampm: HashMap<String, Vec<&'static str>>,
|
||||
}
|
||||
|
||||
include!(concat!(env!("OUT_DIR"), "/locales.rs"));
|
||||
|
|
Loading…
Reference in a new issue