arch_pkg_text/value/dependency_and_reason.rs
1use super::{Dependency, DependencyAndReason, DependencyReason};
2
3impl<'a> DependencyAndReason<'a> {
4 /// Extract [`Dependency`] and [`DependencyReason`].
5 ///
6 /// ```
7 /// # use arch_pkg_text::value::{Dependency, DependencyAndReason, DependencyReason};
8 /// # use pretty_assertions::assert_eq;
9 /// let depend_and_reason = DependencyAndReason("lldb: rust-lldb script");
10 /// let (depend, reason) = depend_and_reason.components();
11 /// assert_eq!(depend, Dependency("lldb"));
12 /// assert_eq!(reason, Some(DependencyReason("rust-lldb script")));
13 /// ```
14 pub fn components(&self) -> (Dependency<'a>, Option<DependencyReason<'a>>) {
15 // split with ": " instead of ':' because of epoch in version
16 match self.split_once(": ") {
17 Some((depend, reason)) => (
18 Dependency(depend.trim()),
19 Some(DependencyReason(reason.trim())),
20 ),
21 None => (Dependency(self.trim()), None),
22 }
23 }
24}