Skip to main content

luaur_analyze_cli/methods/
cli_file_resolver_read_source.rs

1use crate::records::cli_file_resolver::CliFileResolver;
2use luaur_analysis::enums::type_file_resolver::Type;
3use luaur_analysis::records::source_code::SourceCode;
4use luaur_analysis::type_aliases::module_name_file_resolver::ModuleName;
5use luaur_cli_lib::functions::read_file::read_file;
6use luaur_cli_lib::functions::read_stdin::read_stdin;
7
8impl CliFileResolver {
9    pub unsafe fn read_source(&mut self, name: &ModuleName) -> Option<SourceCode> {
10        let source_type: Type;
11        let source: Option<alloc::string::String>;
12
13        // If the module name is "-", then read source from stdin
14        if name == "-" {
15            source = read_stdin();
16            source_type = Type::Script;
17        } else {
18            source = read_file(name);
19            source_type = Type::Module;
20        }
21
22        if let Some(source_str) = source {
23            Some(SourceCode {
24                source: source_str,
25                r#type: source_type,
26            })
27        } else {
28            None
29        }
30    }
31}