WIP
This commit is contained in:
parent
d39f8aad4e
commit
290eb8e519
5 changed files with 11 additions and 11 deletions
|
@ -128,7 +128,7 @@ peg::parser!(pub grammar parse() for str {
|
||||||
// result = r#""foo\\bar""#
|
// result = r#""foo\\bar""#
|
||||||
// For the typical case, string_normal_chars will match multiple, leading to a single-element vec.
|
// For the typical case, string_normal_chars will match multiple, leading to a single-element vec.
|
||||||
pub rule raw_text() -> String = "\"" t:((string_special_char() / string_normal_chars())*) "\""
|
pub rule raw_text() -> String = "\"" t:((string_special_char() / string_normal_chars())*) "\""
|
||||||
{ t.join(&"") }
|
{ t.join("") }
|
||||||
|
|
||||||
pub rule text() -> SpannedValue
|
pub rule text() -> SpannedValue
|
||||||
= v:raw_text() { SpannedValue::Text(v) }
|
= v:raw_text() { SpannedValue::Text(v) }
|
||||||
|
@ -153,16 +153,16 @@ peg::parser!(pub grammar parse() for str {
|
||||||
"#instmicros" whitespace()+ d:$( digit()+ ) {
|
"#instmicros" whitespace()+ d:$( digit()+ ) {
|
||||||
let micros = d.parse::<i64>().unwrap();
|
let micros = d.parse::<i64>().unwrap();
|
||||||
let seconds: i64 = micros / 1_000_000;
|
let seconds: i64 = micros / 1_000_000;
|
||||||
let nanos: u32 = ((micros % 1_000_000).abs() as u32) * 1000;
|
let nanos: u32 = ((micros % 1_000_000).unsigned_abs() as u32) * 1000;
|
||||||
Utc.timestamp(seconds, nanos)
|
Utc.timestamp_opt(seconds, nanos).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
rule inst_millis() -> DateTime<Utc> =
|
rule inst_millis() -> DateTime<Utc> =
|
||||||
"#instmillis" whitespace()+ d:$( digit()+ ) {
|
"#instmillis" whitespace()+ d:$( digit()+ ) {
|
||||||
let millis = d.parse::<i64>().unwrap();
|
let millis = d.parse::<i64>().unwrap();
|
||||||
let seconds: i64 = millis / 1000;
|
let seconds: i64 = millis / 1000;
|
||||||
let nanos: u32 = ((millis % 1000).abs() as u32) * 1_000_000;
|
let nanos: u32 = ((millis % 1000).unsigned_abs() as u32) * 1_000_000;
|
||||||
Utc.timestamp(seconds, nanos)
|
Utc.timestamp_opt(seconds, nanos).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
rule inst() -> SpannedValue = t:(inst_millis() / inst_micros() / inst_string())
|
rule inst() -> SpannedValue = t:(inst_millis() / inst_micros() / inst_string())
|
||||||
|
|
|
@ -121,7 +121,7 @@ impl NamespaceableName {
|
||||||
if name.starts_with('_') {
|
if name.starts_with('_') {
|
||||||
Self::new(self.namespace(), &name[1..])
|
Self::new(self.namespace(), &name[1..])
|
||||||
} else {
|
} else {
|
||||||
Self::new(self.namespace(), &format!("_{}", name))
|
Self::new(self.namespace(), format!("_{}", name))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1123,14 +1123,14 @@ impl OrJoin {
|
||||||
(self.clauses, self.unify_vars, vars)
|
(self.clauses, self.unify_vars, vars)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn mentioned_variables<'a>(&'a mut self) -> &'a BTreeSet<Variable> {
|
pub fn mentioned_variables(mut self) -> BTreeSet<Variable> {
|
||||||
if self.mentioned_vars.is_none() {
|
if self.mentioned_vars.is_none() {
|
||||||
let m = self.collect_mentioned_variables();
|
let m = self.collect_mentioned_variables();
|
||||||
self.mentioned_vars = Some(m);
|
self.mentioned_vars = Some(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(ref mentioned) = self.mentioned_vars {
|
if let Some(ref mentioned) = self.mentioned_vars {
|
||||||
mentioned
|
mentioned.clone()
|
||||||
} else {
|
} else {
|
||||||
unreachable!()
|
unreachable!()
|
||||||
}
|
}
|
||||||
|
|
|
@ -668,7 +668,7 @@ pub trait FromMicros {
|
||||||
|
|
||||||
impl FromMicros for DateTime<Utc> {
|
impl FromMicros for DateTime<Utc> {
|
||||||
fn from_micros(ts: i64) -> Self {
|
fn from_micros(ts: i64) -> Self {
|
||||||
Utc.timestamp(ts / 1_000_000, ((ts % 1_000_000).abs() as u32) * 1_000)
|
Utc.timestamp_opt(ts / 1_000_000, ((ts % 1_000_000).unsigned_abs() as u32) * 1_000).unwrap()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -690,7 +690,7 @@ pub trait FromMillis {
|
||||||
|
|
||||||
impl FromMillis for DateTime<Utc> {
|
impl FromMillis for DateTime<Utc> {
|
||||||
fn from_millis(ts: i64) -> Self {
|
fn from_millis(ts: i64) -> Self {
|
||||||
Utc.timestamp(ts / 1_000, ((ts % 1_000).abs() as u32) * 1_000)
|
Utc.timestamp_opt(ts / 1_000, ((ts % 1_000).abs() as u32) * 1_000).unwrap()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ pub fn merge(left: &Value, right: &Value) -> Option<Value> {
|
||||||
match (left, right) {
|
match (left, right) {
|
||||||
(&Value::Map(ref l), &Value::Map(ref r)) => {
|
(&Value::Map(ref l), &Value::Map(ref r)) => {
|
||||||
let mut result = l.clone();
|
let mut result = l.clone();
|
||||||
result.extend(r.clone().into_iter());
|
result.extend(r.clone());
|
||||||
Some(Value::Map(result))
|
Some(Value::Map(result))
|
||||||
}
|
}
|
||||||
_ => None,
|
_ => None,
|
||||||
|
|
Loading…
Reference in a new issue