summaryrefslogtreecommitdiff
path: root/src/repo/profile/package/parsers.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/repo/profile/package/parsers.rs')
-rw-r--r--src/repo/profile/package/parsers.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/repo/profile/package/parsers.rs b/src/repo/profile/package/parsers.rs
new file mode 100644
index 0000000..74d9acc
--- /dev/null
+++ b/src/repo/profile/package/parsers.rs
@@ -0,0 +1,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))
+ }
+}