Skip to main content

cynic_parser/schema_coordinates/
argument.rs

1use std::fmt;
2
3use crate::Span;
4
5use super::{MemberCoordinate, Name};
6
7#[derive(Clone, Debug, PartialEq, Eq, Hash, Ord, PartialOrd)]
8pub struct ArgumentCoordinate {
9    pub(super) member: MemberCoordinate,
10    pub(super) name: Name,
11}
12
13impl ArgumentCoordinate {
14    pub fn new(
15        ty: impl Into<String>,
16        field: impl Into<String>,
17        argument: impl Into<String>,
18    ) -> Self {
19        Self {
20            member: MemberCoordinate::new(ty, field),
21            name: Name::new(argument.into()),
22        }
23    }
24
25    pub fn member(&self) -> &MemberCoordinate {
26        &self.member
27    }
28
29    pub fn span(&self) -> Span {
30        self.name.span
31    }
32
33    pub fn name(&self) -> &str {
34        &self.name.value
35    }
36}
37
38impl fmt::Display for ArgumentCoordinate {
39    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
40        write!(f, "{}({}:)", self.member, self.name.value)
41    }
42}