Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::collections::BTreeMap;
- #[derive(Debug, PartialEq)]
- pub struct Service {
- pub name: String,
- pub fields: BTreeMap<String, String>,
- }
- named!(parse_service<&str, Service>, do_parse!(
- tag!("service") >>
- take_while1!(char::is_whitespace) >>
- name: take_while1!(char::is_alphanumeric) >>
- // FIXME parse fields
- take_while!(char::is_whitespace) >>
- char!('{') >>
- take_while!(char::is_whitespace) >>
- // fields: parse_fields() >>
- //take_while!(char::is_whitespace) >>
- char!('}') >>
- (Service { name: name.to_string(), fields: BTreeMap::new() })
- ));
- #[test]
- fn test_parse_service() {
- let contents = [
- "service Pinger{}",
- "service Pinger {}",
- "service Pinger{ }",
- "service Pinger { }",
- ];
- for content in contents.iter() {
- assert_eq!(
- parse_service(content),
- Ok(("", Service {
- name: "Pinger".to_string(),
- fields: BTreeMap::new(),
- }))
- );
- }
- }
Add Comment
Please, Sign In to add comment