Skip to content

Commit 59da802

Browse files
committed
Upgrade Rust and Regex
1 parent 50a4310 commit 59da802

File tree

2 files changed

+34
-35
lines changed

2 files changed

+34
-35
lines changed

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ repository = "https://github.com/rust-datetime/zoneinfo-compiled"
1111
version = "0.1.4"
1212

1313
[dependencies]
14-
datetime = "0.4.4"
15-
lazy_static = "0.2.1"
16-
regex = "0.1.77"
14+
datetime = "0.4"
15+
lazy_static = "1.4"
16+
regex = "1.3"

src/line.rs

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@
7777
//! })));
7878
//! ```
7979
80-
use std::ascii::AsciiExt;
8180
use std::error::Error as ErrorTrait;
8281
use std::fmt;
8382
use std::str::FromStr;
@@ -217,12 +216,12 @@ impl<'line> Rule<'line> {
217216
/// Attempts to parse the given string into a value of this type.
218217
pub fn from_str(input: &str) -> Result<Rule, Error> {
219218
if let Some(caps) = RULE_LINE.captures(input) {
220-
let name = caps.name("name").unwrap();
221-
let from_year = try!(caps.name("from").unwrap().parse());
219+
let name = caps.name("name").unwrap().as_str();
220+
let from_year = try!(caps.name("from").unwrap().as_str().parse());
222221

223222
// The end year can be ‘only’ to indicate that this rule only
224223
// takes place on that year.
225-
let to_year = match caps.name("to").unwrap() {
224+
let to_year = match caps.name("to").unwrap().as_str() {
226225
"only" => None,
227226
to => Some(try!(to.parse())),
228227
};
@@ -231,16 +230,16 @@ impl<'line> Rule<'line> {
231230
// should be “-”, so throw an error if it isn’t. (It only exists
232231
// for compatibility with old versions that used to contain year
233232
// types.) Sometimes “‐”, a Unicode hyphen, is used as well.
234-
let t = caps.name("type").unwrap();
233+
let t = caps.name("type").unwrap().as_str();
235234
if t != "-" && t != "\u{2010}" {
236235
return Err(Error::Fail);
237236
}
238237

239-
let month = try!(caps.name("in").unwrap().parse());
240-
let day = try!(caps.name("on").unwrap().parse());
241-
let time = try!(caps.name("at").unwrap().parse());
242-
let time_to_add = try!(caps.name("save").unwrap().parse());
243-
let letters = match caps.name("letters").unwrap() {
238+
let month = try!(caps.name("in").unwrap().as_str().parse());
239+
let day = try!(caps.name("on").unwrap().as_str().parse());
240+
let time = try!(caps.name("at").unwrap().as_str().parse());
241+
let time_to_add = try!(caps.name("save").unwrap().as_str().parse());
242+
let letters = match caps.name("letters").unwrap().as_str() {
244243
"-" => None,
245244
l => Some(l),
246245
};
@@ -297,7 +296,7 @@ impl<'line> Zone<'line> {
297296
/// Attempts to parse the given string into a value of this type.
298297
pub fn from_str(input: &str) -> Result<Zone, Error> {
299298
if let Some(caps) = ZONE_LINE.captures(input) {
300-
let name = caps.name("name").unwrap();
299+
let name = caps.name("name").unwrap().as_str();
301300
let info = try!(ZoneInfo::from_captures(caps));
302301

303302
Ok(Zone {
@@ -334,18 +333,18 @@ pub struct ZoneInfo<'line> {
334333

335334
impl<'line> ZoneInfo<'line> {
336335
fn from_captures(caps: Captures<'line>) -> Result<ZoneInfo<'line>, Error> {
337-
let utc_offset = try!(caps.name("gmtoff").unwrap().parse());
338-
let saving = try!(Saving::from_str(caps.name("rulessave").unwrap()));
339-
let format = caps.name("format").unwrap();
336+
let utc_offset = try!(caps.name("gmtoff").unwrap().as_str().parse());
337+
let saving = try!(Saving::from_str(caps.name("rulessave").unwrap().as_str()));
338+
let format = caps.name("format").unwrap().as_str();
340339

341340
// The year, month, day, and time fields are all optional, meaning
342341
// that it should be impossible to, say, have a defined month but not
343342
// a defined year.
344343
let time = match (caps.name("year"), caps.name("month"), caps.name("day"), caps.name("time")) {
345-
(Some(y), Some(m), Some(d), Some(t)) => Some(ChangeTime::UntilTime (try!(y.parse()), try!(m.parse()), try!(d.parse()), try!(t.parse()))),
346-
(Some(y), Some(m), Some(d), _ ) => Some(ChangeTime::UntilDay (try!(y.parse()), try!(m.parse()), try!(d.parse()))),
347-
(Some(y), Some(m), _ , _ ) => Some(ChangeTime::UntilMonth (try!(y.parse()), try!(m.parse()))),
348-
(Some(y), _ , _ , _ ) => Some(ChangeTime::UntilYear (try!(y.parse()))),
344+
(Some(y), Some(m), Some(d), Some(t)) => Some(ChangeTime::UntilTime (try!(y.as_str().parse()), try!(m.as_str().parse()), try!(d.as_str().parse()), try!(t.as_str().parse()))),
345+
(Some(y), Some(m), Some(d), _ ) => Some(ChangeTime::UntilDay (try!(y.as_str().parse()), try!(m.as_str().parse()), try!(d.as_str().parse()))),
346+
(Some(y), Some(m), _ , _ ) => Some(ChangeTime::UntilMonth (try!(y.as_str().parse()), try!(m.as_str().parse()))),
347+
(Some(y), _ , _ , _ ) => Some(ChangeTime::UntilYear (try!(y.as_str().parse()))),
349348
(None , None , None , None ) => None,
350349
_ => unreachable!("Out-of-order capturing groups!"),
351350
};
@@ -466,8 +465,8 @@ impl<'line> Link<'line> {
466465
/// Attempts to parse the given string into a value of this type.
467466
pub fn from_str(input: &str) -> Result<Link, Error> {
468467
if let Some(caps) = LINK_LINE.captures(input) {
469-
let target = caps.name("target").unwrap();
470-
let name = caps.name("name").unwrap();
468+
let target = caps.name("target").unwrap().as_str();
469+
let name = caps.name("name").unwrap().as_str();
471470
Ok(Link { existing: target, new: name })
472471
}
473472
else {
@@ -643,10 +642,10 @@ impl FromStr for DaySpec {
643642

644643
// Check if it’s a relative expression with the regex.
645644
else if let Some(caps) = DAY_FIELD.captures(input) {
646-
let weekday = caps.name("weekday").unwrap().parse().unwrap();
647-
let day = caps.name("day").unwrap().parse().unwrap();
645+
let weekday = caps.name("weekday").unwrap().as_str().parse().unwrap();
646+
let day = caps.name("day").unwrap().as_str().parse().unwrap();
648647

649-
match caps.name("sign").unwrap() {
648+
match caps.name("sign").unwrap().as_str() {
650649
"<=" => Ok(DaySpec::LastOnOrBefore(weekday, day)),
651650
">=" => Ok(DaySpec::FirstOnOrAfter(weekday, day)),
652651
_ => unreachable!("The regex only matches one of those two!"),
@@ -720,20 +719,20 @@ impl FromStr for TimeSpecAndType {
720719
Ok(TimeSpecAndType(TimeSpec::Hours(input.parse().unwrap()), TimeType::Wall))
721720
}
722721
else if let Some(caps) = HM_FIELD.captures(input) {
723-
let sign : i8 = if caps.name("sign").unwrap() == "-" { -1 } else { 1 };
724-
let hour : i8 = caps.name("hour").unwrap().parse().unwrap();
725-
let minute : i8 = caps.name("minute").unwrap().parse().unwrap();
726-
let flag = caps.name("flag").and_then(|c| parse_time_type(&c[0..1]))
722+
let sign : i8 = if caps.name("sign").unwrap().as_str() == "-" { -1 } else { 1 };
723+
let hour : i8 = caps.name("hour").unwrap().as_str().parse().unwrap();
724+
let minute : i8 = caps.name("minute").unwrap().as_str().parse().unwrap();
725+
let flag = caps.name("flag").and_then(|c| parse_time_type(&c.as_str()[0..1]))
727726
.unwrap_or(TimeType::Wall);
728727

729728
Ok(TimeSpecAndType(TimeSpec::HoursMinutes(hour * sign, minute * sign), flag))
730729
}
731730
else if let Some(caps) = HMS_FIELD.captures(input) {
732-
let sign : i8 = if caps.name("sign").unwrap() == "-" { -1 } else { 1 };
733-
let hour : i8 = caps.name("hour").unwrap().parse().unwrap();
734-
let minute : i8 = caps.name("minute").unwrap().parse().unwrap();
735-
let second : i8 = caps.name("second").unwrap().parse().unwrap();
736-
let flag = caps.name("flag").and_then(|c| parse_time_type(&c[0..1]))
731+
let sign : i8 = if caps.name("sign").unwrap().as_str() == "-" { -1 } else { 1 };
732+
let hour : i8 = caps.name("hour").unwrap().as_str().parse().unwrap();
733+
let minute : i8 = caps.name("minute").unwrap().as_str().parse().unwrap();
734+
let second : i8 = caps.name("second").unwrap().as_str().parse().unwrap();
735+
let flag = caps.name("flag").and_then(|c| parse_time_type(&c.as_str()[0..1]))
737736
.unwrap_or(TimeType::Wall);
738737

739738
Ok(TimeSpecAndType(TimeSpec::HoursMinutesSeconds(hour * sign, minute * sign, second * sign), flag))

0 commit comments

Comments
 (0)