275 |i| cmdc_single_arg(i, "WATCH", u32_line, Watch), |
275 |i| cmdc_single_arg(i, "WATCH", u32_line, Watch), |
276 |i| cmdc_single_arg(i, "VOTE", yes_no_line, Vote), |
276 |i| cmdc_single_arg(i, "VOTE", yes_no_line, Vote), |
277 |i| cmdc_single_arg(i, "FORCE", yes_no_line, ForceVote), |
277 |i| cmdc_single_arg(i, "FORCE", yes_no_line, ForceVote), |
278 |i| cmdc_single_arg(i, "INFO", a_line, Info), |
278 |i| cmdc_single_arg(i, "INFO", a_line, Info), |
279 |i| cmdc_single_arg(i, "MAXTEAMS", u8_line, MaxTeams), |
279 |i| cmdc_single_arg(i, "MAXTEAMS", u8_line, MaxTeams), |
280 |i| cmdc_single_arg(i, "CALLVOTE", |i| opt!(i, voting), CallVote), |
280 |i| cmdc_single_arg(i, "CALLVOTE", voting, |v| CallVote(Some(v))), |
281 ))(input) |
281 ))(input) |
282 } |
282 } |
283 |
283 |
284 precededc( |
284 precededc( |
285 input, |
285 input, |
286 hw_tag("CMD\n"), |
286 hw_tag("CMD\n"), |
287 alt(( |
287 alt(( |
288 cmd_no_arg_message, |
288 cmd_no_arg_message, |
289 cmd_single_arg_message, |
289 cmd_single_arg_message, |
|
290 |i| tag_no_case("CALLVOTE")(i).map(|(i, _)| (i, CallVote(None))), |
290 |i| { |
291 |i| { |
291 precededc(i, hw_tag_no_case("GREETING"), opt_space_arg) |
292 precededc(i, hw_tag_no_case("GREETING"), opt_space_arg) |
292 .map(|(i, s)| (i, Greeting(s))) |
293 .map(|(i, s)| (i, Greeting(s))) |
293 }, |
294 }, |
294 |i| precededc(i, hw_tag_no_case("PART"), opt_space_arg).map(|(i, s)| (i, Part(s))), |
295 |i| precededc(i, hw_tag_no_case("PART"), opt_space_arg).map(|(i, s)| (i, Part(s))), |
558 ) |
559 ) |
559 }, |
560 }, |
560 ) |
561 ) |
561 } |
562 } |
562 |
563 |
563 fn extract_messages(input: &[u8]) -> HwResult<Vec<HwProtocolMessage>> { |
|
564 many0(message)(input) |
|
565 } |
|
566 |
|
567 #[cfg(test)] |
564 #[cfg(test)] |
568 mod test { |
565 mod test { |
569 use super::{extract_messages, message}; |
566 use super::message; |
570 use crate::protocol::parser::HwProtocolError; |
567 use crate::protocol::{ |
571 use crate::protocol::{messages::HwProtocolMessage::*, test::gen_proto_msg}; |
568 messages::HwProtocolMessage::*, parser::HwProtocolError, test::gen_proto_msg, |
|
569 }; |
572 use proptest::{proptest, proptest_helper}; |
570 use proptest::{proptest, proptest_helper}; |
573 |
571 |
574 #[cfg(test)] |
572 #[cfg(test)] |
575 proptest! { |
573 proptest! { |
576 #[test] |
574 #[test] |