capnweb_core/protocol/
parser.rs

1// Expression parser for Cap'n Web protocol
2// This module is responsible for parsing JSON values into typed expressions
3
4use super::expression::Expression;
5use serde_json::Value as JsonValue;
6
7pub struct ExpressionParser;
8
9impl ExpressionParser {
10    /// Parse a JSON value into an Expression
11    pub fn parse(value: &JsonValue) -> Result<Expression, ParseError> {
12        Expression::from_json(value).map_err(ParseError::ExpressionError)
13    }
14}
15
16#[derive(Debug, thiserror::Error)]
17pub enum ParseError {
18    #[error("Expression parsing error: {0}")]
19    ExpressionError(#[from] super::expression::ExpressionError),
20
21    #[error("Invalid JSON structure")]
22    InvalidJson,
23
24    #[error("Unknown expression type")]
25    UnknownType,
26}