Skip to content

traits Rust

Parser trait and related types for language-agnostic parsing.

This module defines the Parser trait which provides a common interface for parsing source code from different languages.

Enums

enum ParserLanguage pub

Language identifier for parsers.

Variants

  • Rust - Rust programming language
  • Python - Python programming language

enum Module pub

A parsed module, either Rust or Python.

This enum allows parsers to return a unified type while preserving the specific module information for each language.

Variants

  • Rust - A parsed Rust module
  • Python - A parsed Python module

Functions

fn create_parser

pub

fn create_parser (language : ParserLanguage) -> Box < dyn Parser >

Create a parser for the given language.

Examples:

use plissken_core::parser::{create_parser, ParserLanguage};

let mut parser = create_parser(ParserLanguage::Python);
let module = parser.parse_file(Path::new("module.py"))?;
Source
pub fn create_parser(language: ParserLanguage) -> Box<dyn Parser> {
    match language {
        ParserLanguage::Rust => Box::new(super::RustParser::new()),
        ParserLanguage::Python => Box::new(super::PythonParser::new()),
    }
}

fn parser_for_extension

pub

fn parser_for_extension (ext : & str) -> Option < Box < dyn Parser > >

Get a parser for the given file extension.

Returns None if the extension is not recognized.

Examples:

use plissken_core::parser::parser_for_extension;

if let Some(mut parser) = parser_for_extension("py") {
    let module = parser.parse_file(Path::new("module.py"))?;
}
Source
pub fn parser_for_extension(ext: &str) -> Option<Box<dyn Parser>> {
    match ext.to_lowercase().as_str() {
        "rs" => Some(Box::new(super::RustParser::new())),
        "py" | "pyi" => Some(Box::new(super::PythonParser::new())),
        _ => None,
    }
}