ligen_python_parser/function/method/
mod.rs

1pub mod validator;
2
3use ligen::parser::ParserConfig;
4use rustpython_parser::ast::{StmtAsyncFunctionDef, StmtFunctionDef};
5use ligen::ir::{Method, Mutability};
6use crate::parser::PythonParser;
7use crate::prelude::*;
8
9impl Parser<WithSource<StmtFunctionDef>> for PythonParser {
10    type Output = Method;
11    fn parse(&self, input: WithSource<StmtFunctionDef>, config: &ParserConfig) -> Result<Self::Output> {
12        let function = self.function_parser.parse(input, config)?;
13        let attributes = function.attributes;
14        let visibility = function.visibility;
15        let synchrony = function.synchrony;
16        let identifier = function.identifier;
17        let inputs = function.inputs;
18        let output = function.output;
19        let mutability = Mutability::Mutable;
20        Ok(Self::Output { attributes, visibility, synchrony, mutability, identifier, inputs, output })
21    }
22}
23
24impl Parser<WithSource<StmtAsyncFunctionDef>> for PythonParser {
25    type Output = Method;
26    fn parse(&self, input: WithSource<StmtAsyncFunctionDef>, config: &ParserConfig) -> Result<Self::Output> {
27        let function = self.function_parser.parse(input, config)?;
28        let attributes = function.attributes;
29        let visibility = function.visibility;
30        let synchrony = function.synchrony;
31        let identifier = function.identifier;
32        let inputs = function.inputs;
33        let output = function.output;
34        let mutability = Mutability::Mutable;
35        Ok(Self::Output { attributes, visibility, synchrony, mutability, identifier, inputs, output })
36    }
37}