ligen_python_parser/interface/
mod.rs1pub 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}