#![doc(hidden)]
use ::ScanError;
pub fn strip_line_term(s: &str) -> &str {
if s.ends_with("\r\n") {
&s[0..s.len()-2]
} else if s.ends_with("\n") {
&s[0..s.len()-1]
} else if s.ends_with("\r") {
&s[0..s.len()-1]
} else {
s
}
}
pub fn subslice_offset(a: &str, b: &str) -> Option<usize> {
use ::util::StrUtil;
a.subslice_offset_stable(b)
}
pub fn try_scan_runtime<'a, C, S>(cur: C, scan: &mut S) -> Result<(S::Output, C), (ScanError, C)>
where
C: ::input::ScanCursor<'a>,
S: ::scanner::ScanStr<'a>,
{
if scan.wants_leading_junk_stripped() {
cur.try_scan(|s| scan.scan(s))
} else {
cur.try_scan_raw(|s| scan.scan(s))
}
}
pub fn try_scan_static<'a, C, S>(cur: C) -> Result<(S::Output, C), (ScanError, C)>
where
C: ::input::ScanCursor<'a>,
S: ::scanner::ScanFromStr<'a>,
{
if S::wants_leading_junk_stripped() {
cur.try_scan(S::scan_from)
} else {
cur.try_scan_raw(S::scan_from)
}
}
pub fn try_scan_static_self<'a, C, S>(cur: C) -> Result<(S, C), (ScanError, C)>
where
C: ::input::ScanCursor<'a>,
S: ::scanner::ScanSelfFromStr<'a>,
{
if S::wants_leading_junk_stripped() {
cur.try_scan(S::scan_self_from)
} else {
cur.try_scan_raw(S::scan_self_from)
}
}