knave 0.14.2

A Lisp programming language for humans and agents that infers types and ownership and compiles to readable Rust
Documentation
use std::path::Path;

use super::program_file::ProgramFile;
use super::terminal::ModuleOfSources;
use crate::source::SourceId;

pub struct PromptModule {
    anchor: SourceId,
    file: ProgramFile,
}

impl PromptModule {
    pub const PATH: &str = "<prompt>";

    pub fn new(anchor: SourceId, file: ProgramFile) -> Self {
        Self { anchor, file }
    }

    pub fn root(&self) -> &Path {
        self.file.root()
    }

    pub fn of(&self, inputs: Vec<SourceId>) -> ModuleOfSources {
        let mut sources = vec![self.anchor];
        sources.extend(inputs);
        ModuleOfSources {
            file: self.file.clone(),
            sources,
        }
    }
}