csvpp/
lib.rs

1#![warn(clippy::pedantic)]
2#![deny(warnings)]
3
4mod ast;
5mod cell;
6mod cell_options;
7mod cli_args;
8mod compiler;
9mod config;
10mod date_time;
11mod error;
12mod logger;
13mod module;
14mod module_loader;
15mod module_path;
16mod output;
17mod parser;
18mod rgb;
19mod row;
20mod scope;
21mod source_code;
22mod spreadsheet;
23mod target;
24
25pub(crate) use cell::Cell;
26pub use cli_args::CliArgs;
27pub use compiler::Compiler;
28pub(crate) use config::Config;
29pub use date_time::DateTime;
30pub(crate) use error::EvalResult;
31pub use error::{Error, EvalError, ParseError, Result};
32pub use module::Module;
33pub(crate) use module_loader::ModuleLoader;
34pub use module_path::ModulePath;
35pub(crate) use output::Output;
36pub use rgb::Rgb;
37pub use row::Row;
38pub use scope::Scope;
39pub(crate) use source_code::ArcSourceCode;
40pub use source_code::{CharOffset, LineNumber, SourceCode};
41pub use spreadsheet::Spreadsheet;
42pub(crate) use target::CompilationTarget;
43
44use log::{error, info, warn};
45
46// test_utils should only be included in tests, never referenced by release code (or built into the
47// release)
48#[cfg(test)]
49mod test_utils;
50
51pub(crate) fn compiler_error<S: std::fmt::Display>(message: S) -> ! {
52    error!(
53        "csv++ ran into an unexpected error while compiling.
54Please run with `-vvvv` as a CLI flag and share a copy of the output and your source code at:
55https://github.com/patrickomatic/csv-plus-plus/issues"
56    );
57    panic!("{message}")
58}
59
60pub(crate) fn deprecated_feature<S: std::fmt::Display>(message: S, to_fix: S) {
61    warn!("Deprecation warning: {message}");
62    info!("To fix: {to_fix}");
63}