Impl missing traits.
This commit is contained in:
parent
c475dce6da
commit
b7a5dd48ea
@ -12,7 +12,7 @@ use nom::Slice;
|
|||||||
pub struct OrgSource<'s> {
|
pub struct OrgSource<'s> {
|
||||||
full_source: &'s str,
|
full_source: &'s str,
|
||||||
start: usize,
|
start: usize,
|
||||||
end: usize, //exclusive
|
end: usize, // exclusive
|
||||||
preceding_line_break: Option<usize>,
|
preceding_line_break: Option<usize>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ impl<'s> std::fmt::Display for OrgSource<'s> {
|
|||||||
|
|
||||||
impl<'s> InputLength for OrgSource<'s> {
|
impl<'s> InputLength for OrgSource<'s> {
|
||||||
fn input_len(&self) -> usize {
|
fn input_len(&self) -> usize {
|
||||||
todo!()
|
self.end - self.start
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,28 +125,28 @@ impl<'s> InputIter for OrgSource<'s> {
|
|||||||
type IterElem = <&'s str as InputIter>::IterElem;
|
type IterElem = <&'s str as InputIter>::IterElem;
|
||||||
|
|
||||||
fn iter_indices(&self) -> Self::Iter {
|
fn iter_indices(&self) -> Self::Iter {
|
||||||
todo!()
|
Into::<&str>::into(self).char_indices()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn iter_elements(&self) -> Self::IterElem {
|
fn iter_elements(&self) -> Self::IterElem {
|
||||||
todo!()
|
Into::<&str>::into(self).iter_elements()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn position<P>(&self, predicate: P) -> Option<usize>
|
fn position<P>(&self, predicate: P) -> Option<usize>
|
||||||
where
|
where
|
||||||
P: Fn(Self::Item) -> bool,
|
P: Fn(Self::Item) -> bool,
|
||||||
{
|
{
|
||||||
todo!()
|
Into::<&str>::into(self).position(predicate)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn slice_index(&self, count: usize) -> Result<usize, nom::Needed> {
|
fn slice_index(&self, count: usize) -> Result<usize, nom::Needed> {
|
||||||
todo!()
|
Into::<&str>::into(self).slice_index(count)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'s> Offset for OrgSource<'s> {
|
impl<'s> Offset for OrgSource<'s> {
|
||||||
fn offset(&self, second: &Self) -> usize {
|
fn offset(&self, second: &Self) -> usize {
|
||||||
todo!()
|
second.start - self.start
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,7 +160,10 @@ impl<'s> InputTakeAtPosition for OrgSource<'s> {
|
|||||||
where
|
where
|
||||||
P: Fn(Self::Item) -> bool,
|
P: Fn(Self::Item) -> bool,
|
||||||
{
|
{
|
||||||
todo!()
|
match Into::<&str>::into(self).position(predicate) {
|
||||||
|
Some(idx) => Ok(self.take_split(idx)),
|
||||||
|
None => Err(nom::Err::Incomplete(nom::Needed::new(1))),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn split_at_position1<P, E: nom::error::ParseError<Self>>(
|
fn split_at_position1<P, E: nom::error::ParseError<Self>>(
|
||||||
@ -171,7 +174,11 @@ impl<'s> InputTakeAtPosition for OrgSource<'s> {
|
|||||||
where
|
where
|
||||||
P: Fn(Self::Item) -> bool,
|
P: Fn(Self::Item) -> bool,
|
||||||
{
|
{
|
||||||
todo!()
|
match Into::<&str>::into(self).position(predicate) {
|
||||||
|
Some(0) => Err(nom::Err::Error(E::from_error_kind(self.clone(), e))),
|
||||||
|
Some(idx) => Ok(self.take_split(idx)),
|
||||||
|
None => Err(nom::Err::Incomplete(nom::Needed::new(1))),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn split_at_position_complete<P, E: nom::error::ParseError<Self>>(
|
fn split_at_position_complete<P, E: nom::error::ParseError<Self>>(
|
||||||
@ -181,7 +188,10 @@ impl<'s> InputTakeAtPosition for OrgSource<'s> {
|
|||||||
where
|
where
|
||||||
P: Fn(Self::Item) -> bool,
|
P: Fn(Self::Item) -> bool,
|
||||||
{
|
{
|
||||||
todo!()
|
match self.split_at_position(predicate) {
|
||||||
|
Err(nom::Err::Incomplete(_)) => Ok(self.take_split(self.input_len())),
|
||||||
|
res => res,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn split_at_position1_complete<P, E: nom::error::ParseError<Self>>(
|
fn split_at_position1_complete<P, E: nom::error::ParseError<Self>>(
|
||||||
@ -192,7 +202,18 @@ impl<'s> InputTakeAtPosition for OrgSource<'s> {
|
|||||||
where
|
where
|
||||||
P: Fn(Self::Item) -> bool,
|
P: Fn(Self::Item) -> bool,
|
||||||
{
|
{
|
||||||
todo!()
|
let window = Into::<&str>::into(self);
|
||||||
|
match window.position(predicate) {
|
||||||
|
Some(0) => Err(nom::Err::Error(E::from_error_kind(self.clone(), e))),
|
||||||
|
Some(n) => Ok(self.take_split(n)),
|
||||||
|
None => {
|
||||||
|
if window.input_len() == 0 {
|
||||||
|
Err(nom::Err::Error(E::from_error_kind(self.clone(), e)))
|
||||||
|
} else {
|
||||||
|
Ok(self.take_split(self.input_len()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user