218 { |
218 { |
219 map(preceded(tag(name), parser), constructor) |
219 map(preceded(tag(name), parser), constructor) |
220 } |
220 } |
221 |
221 |
222 alt(( |
222 alt(( |
223 message("NICK\n", a_line, Nick), |
|
224 message("INFO\n", a_line, Info), |
223 message("INFO\n", a_line, Info), |
225 message("CHAT\n", a_line, Chat), |
224 message("CHAT\n", a_line, Chat), |
226 message("PART", opt_arg, Part), |
225 message("PART", opt_arg, Part), |
227 message("FOLLOW\n", a_line, Follow), |
226 message("FOLLOW\n", a_line, Follow), |
228 message("KICK\n", a_line, Kick), |
227 message("KICK\n", a_line, Kick), |
493 map(peek(end_of_message), |_| None), |
492 map(peek(end_of_message), |_| None), |
494 map(preceded(newline, separated_list0(newline, a_line)), Some), |
493 map(preceded(newline, separated_list0(newline, a_line)), Some), |
495 )), |
494 )), |
496 ), |
495 ), |
497 |values| CheckedOk(values.unwrap_or_default()), |
496 |values| CheckedOk(values.unwrap_or_default()), |
|
497 ), |
|
498 preceded( |
|
499 tag("NICK\n"), |
|
500 map(pair(a_line, opt_arg), |(nick, token)| Nick(nick, token)), |
498 ), |
501 ), |
499 ))(input) |
502 ))(input) |
500 } |
503 } |
501 |
504 |
502 pub fn malformed_message(input: &[u8]) -> HwResult<()> { |
505 pub fn malformed_message(input: &[u8]) -> HwResult<()> { |