ligen_python_parser/interface/
mod.rs

1pub mod validator;
2
3use crate::prelude::*;
4use ligen::parser::ParserConfig;
5use rustpython_parser::ast::StmtClassDef;
6use ligen::ir::Interface;
7use crate::identifier::IdentifierParser;
8use crate::parser::PythonParser;
9
10impl Parser<WithSource<&StmtClassDef>> for PythonParser {
11    type Output = Interface;
12    fn parse(&self, input: WithSource<&StmtClassDef>, config: &ParserConfig) -> Result<Self::Output> {
13        let scope = self.parse(input.sub(input.ast.body.as_slice()), config)?;
14        let identifier = IdentifierParser::new().parse(input.ast.name.as_str(), config)?;
15        let objects = scope.objects;
16        let functions = scope.functions;
17        let methods = scope.methods;
18        Ok(Interface { identifier, objects, functions, methods, .. Default::default() })
19    }
20}