1use xee_name::VariableNames;
2
3use crate::ast;
4use crate::{Namespaces, ParserError};
5
6#[derive(Debug, Default)]
7pub struct XPathParserContext {
8 pub namespaces: Namespaces,
9 pub variable_names: VariableNames,
10}
11
12impl XPathParserContext {
13 pub fn new(namespaces: Namespaces, variable_names: VariableNames) -> Self {
18 Self {
19 namespaces,
20 variable_names,
21 }
22 }
23
24 pub fn parse_xpath(&self, s: &str) -> Result<ast::XPath, ParserError> {
29 ast::XPath::parse(s, &self.namespaces, &self.variable_names)
30 }
31
32 pub fn parse_pattern(&self, s: &str) -> Result<crate::Pattern<ast::ExprS>, ParserError> {
34 crate::Pattern::parse(s, &self.namespaces, &self.variable_names)
35 }
36
37 pub fn parse_value_template_xpath(&self, s: &str) -> Result<ast::XPath, ParserError> {
40 ast::XPath::parse_value_template(s, &self.namespaces, &self.variable_names)
41 }
42}