MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / parse_trailing_i64

Function parse_trailing_i64

nodedb-sql/src/parser/preprocess/temporal.rs:405–420  ·  view source on GitHub ↗

Parse an optionally-signed integer starting at `offset` in `sql`, skipping leading whitespace. Returns `(value, end_offset_exclusive)`.

(sql: &str, offset: usize)

Source from the content-addressed store, hash-verified

403/// Parse an optionally-signed integer starting at `offset` in `sql`, skipping
404/// leading whitespace. Returns `(value, end_offset_exclusive)`.
405fn parse_trailing_i64(sql: &str, offset: usize) -> Result<(i64, usize), TemporalParseError> {
406 let rest = &sql[offset..];
407 let trimmed = rest.trim_start();
408 let leading = rest.len() - trimmed.len();
409 let end_rel = trimmed
410 .char_indices()
411 .take_while(|(i, c)| c.is_ascii_digit() || (*i == 0 && *c == '-'))
412 .map(|(i, c)| i + c.len_utf8())
413 .last()
414 .ok_or_else(|| TemporalParseError(format!("expected integer at offset {offset}")))?;
415 let num_str = &trimmed[..end_rel];
416 let v: i64 = num_str
417 .parse()
418 .map_err(|_| TemporalParseError(format!("not an i64: {num_str}")))?;
419 Ok((v, offset + leading + end_rel))
420}
421
422#[cfg(test)]
423mod tests {

Callers 2

strip_system_time_as_ofFunction · 0.85
strip_valid_timeFunction · 0.85

Calls 4

TemporalParseErrorClass · 0.85
lenMethod · 0.45
lastMethod · 0.45
parseMethod · 0.45

Tested by

no test coverage detected