pub mod builder;
mod kdoc;
pub mod kt_tokens;
pub mod parsing;
pub mod token_set;
use ktrs_syntax::Parse;
pub use builder::ChameleonCache;
pub use parsing::kotlin_parser::{
parse_block_code_fragment, parse_block_expression, parse_expression_code_fragment, parse_lambda_expression,
parse_type_code_fragment,
};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum FileKind {
Source,
Script,
}
impl FileKind {
pub fn from_file_name(name: &str) -> FileKind {
let base = name.rsplit(['/', '\\']).next().unwrap_or(name);
match base.rsplit_once('.') {
None => FileKind::Source,
Some((_, "kt")) | Some((_, "")) => FileKind::Source,
Some(_) => FileKind::Script,
}
}
}
pub fn parse_file(text: &str, kind: FileKind) -> Parse {
parsing::kotlin_parser::parse(text, kind)
}
pub fn parse_file_cached(text: &str, kind: FileKind, cache: &mut ChameleonCache) -> Parse {
parsing::kotlin_parser::parse_cached(text, kind, cache)
}