summaryrefslogtreecommitdiff
path: root/src/repo/profile/package/parsers.rs
blob: 74d9acc9e2c877ca2bf2a4c1bfa06f5eeb723e3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
use mon::{Parser, tag};

use crate::{Parseable, atom::Atom, repo::profile::package::Package};

impl<'a> Parseable<'a, &'a str> for Package {
    type Parser = impl Parser<&'a str, Output = Self>;

    fn parser() -> Self::Parser {
        Atom::parser()
            .map(Package::Add)
            .or(Atom::parser().preceded_by(tag("-")).map(Package::Remove))
    }
}