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

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

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

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