resolved conflicts

This commit is contained in:
David Bittner
2020-10-05 14:43:45 -04:00
8 changed files with 167 additions and 34 deletions

View File

@@ -1,9 +1,10 @@
#[cfg(test)]
mod tests;
use crate::{AnsiSequence, Output};
use crate::AnsiSequence;
use std::convert::TryInto;
use core::convert::TryInto;
use heapless::Vec;
use nom::*;
macro_rules! tag_parser {
@@ -105,7 +106,9 @@ named!(
tag!("[") >>
val: parse_int >>
tag!("m") >>
(AnsiSequence::SetGraphicsMode(vec![val]))
val: expr_res!(val.try_into()) >>
conv: expr_res!(Vec::from_slice(&[val])) >>
(AnsiSequence::SetGraphicsMode(conv))
)
);
@@ -117,7 +120,13 @@ named!(
tag!(";") >>
val2: parse_int >>
tag!("m") >>
(AnsiSequence::SetGraphicsMode(vec![val1, val2]))
val1: expr_res!(val1.try_into()) >>
val2: expr_res!(val2.try_into()) >>
conv: expr_res!(Vec::from_slice(&[
val1,
val2,
])) >>
(AnsiSequence::SetGraphicsMode(conv))
)
);
@@ -131,7 +140,15 @@ named!(
tag!(";") >>
val3: parse_int >>
tag!("m") >>
(AnsiSequence::SetGraphicsMode(vec![val1, val2, val3]))
val1: expr_res!(val1.try_into()) >>
val2: expr_res!(val2.try_into()) >>
val3: expr_res!(val3.try_into()) >>
conv: expr_res!(Vec::from_slice(&[
val1,
val2,
val3,
])) >>
(AnsiSequence::SetGraphicsMode(conv))
)
);
@@ -139,11 +156,10 @@ named!(
graphics_mode4<&str, AnsiSequence>,
do_parse!(
tag!("[m") >>
(AnsiSequence::SetGraphicsMode(vec![]))
(AnsiSequence::SetGraphicsMode(Vec::new()))
)
);
named!(
graphics_mode5<&str, AnsiSequence>,
do_parse!(
@@ -158,7 +174,19 @@ named!(
tag!(";") >>
val5: parse_int >>
tag!("m") >>
(AnsiSequence::SetGraphicsMode(vec![val1, val2, val3, val4, val5]))
val1: expr_res!(val1.try_into()) >>
val2: expr_res!(val2.try_into()) >>
val3: expr_res!(val3.try_into()) >>
val4: expr_res!(val4.try_into()) >>
val5: expr_res!(val5.try_into()) >>
conv: expr_res!(Vec::from_slice(&[
val1,
val2,
val3,
val4,
val5,
])) >>
(AnsiSequence::SetGraphicsMode(conv))
)
);
@@ -177,7 +205,7 @@ named!(
named!(
set_mode<&str, AnsiSequence>,
do_parse!(
tag_s!("[=") >>
tag!("[=") >>
mode: parse_int >>
conv: expr_res!(mode.try_into()) >>
tag!("h") >>
@@ -188,7 +216,7 @@ named!(
named!(
reset_mode<&str, AnsiSequence>,
do_parse!(
tag_s!("[=") >>
tag!("[=") >>
mode: parse_int >>
conv: expr_res!(mode.try_into()) >>
tag!("l") >>
@@ -305,10 +333,10 @@ named!(
);
named!(
pub parse_escape<&str, Output>,
pub parse_escape<&str, AnsiSequence>,
do_parse!(
tag_s!("\u{1b}") >>
tag!("\u{1b}") >>
seq: combined >>
(Output::Escape(seq))
(seq)
)
);