mirror of
https://github.com/Ed94/Odin.git
synced 2026-06-14 09:52:23 -07:00
42 lines
917 B
Odin
42 lines
917 B
Odin
package odin_format
|
|
|
|
import "core:odin/printer"
|
|
import "core:odin/parser"
|
|
import "core:odin/ast"
|
|
|
|
default_style := printer.default_style;
|
|
|
|
simplify :: proc(file: ^ast.File) {
|
|
|
|
}
|
|
|
|
format :: proc(filepath: string, source: string, config: printer.Config, parser_flags := parser.Flags{}, allocator := context.allocator) -> (string, bool) {
|
|
config := config;
|
|
|
|
pkg := ast.Package {
|
|
kind = .Normal,
|
|
};
|
|
|
|
file := ast.File {
|
|
pkg = &pkg,
|
|
src = source,
|
|
fullpath = filepath,
|
|
};
|
|
|
|
config.newline_limit = clamp(config.newline_limit, 0, 16);
|
|
config.spaces = clamp(config.spaces, 1, 16);
|
|
config.align_length_break = clamp(config.align_length_break, 0, 64);
|
|
|
|
p := parser.default_parser(parser_flags);
|
|
|
|
ok := parser.parse_file(&p, &file);
|
|
|
|
if !ok || file.syntax_error_count > 0 {
|
|
return {}, false;
|
|
}
|
|
|
|
prnt := printer.make_printer(config, allocator);
|
|
|
|
return printer.print(&prnt, &file), true;
|
|
}
|