diff --git a/gen.odin b/gen.odin index 6295b2e..3fdac6a 100644 --- a/gen.odin +++ b/gen.odin @@ -1,6 +1,6 @@ +#+vet explicit-allocators package main - import "core:fmt" import "core:os" import "core:strings" @@ -25,7 +25,7 @@ BLOG_BACK_MD := ` ` generate_blog_md_file :: proc(path: string, allocator := context.allocator) { - blog_list := make([dynamic]string) + blog_list := make([dynamic]string, allocator) sb := strings.builder_make(allocator) blog_md_file := strings.builder_make(allocator) @@ -34,23 +34,27 @@ generate_blog_md_file :: proc(path: string, allocator := context.allocator) { blog_dir := strings.to_string(sb) //os.write_string(file, BLOG_START) - blogs := walk_tree_and_get_md_names(blog_dir) + blogs := walk_tree_and_get_md_names(blog_dir, allocator) for blog in blogs { - b := strings.split(blog, blog_dir) + b := strings.split(blog, blog_dir, allocator) trim_b := strings.trim_right(b[1], ".md") if trim_b == "index" {continue} if trim_b == "index_non_blank" {continue} if trim_b == "test" {continue} if trim_b == "test_blog" {continue} + if trim_b == "2026-03-16-Test" {continue} if strings.starts_with(trim_b, "!") {continue} append(&blog_list, blog) } for blog_entry in blog_list { - b := strings.split(blog_entry, blog_dir) + b := strings.split(blog_entry, blog_dir, allocator) trim_b := strings.trim_right(b[1], ".md") - strings.write_string(&blog_md_file, fmt.aprintf("* [%s](./%s.html)", trim_b, trim_b)) + strings.write_string( + &blog_md_file, + fmt.aprintf("* [%s](./%s.html)", trim_b, trim_b, allocator = allocator), + ) strings.write_string(&blog_md_file, "\n") } diff --git a/main.odin b/main.odin index 94b143f..c8949b1 100644 --- a/main.odin +++ b/main.odin @@ -1,9 +1,9 @@ +#+vet explicit-allocators package main import "core:fmt" import vmem "core:mem/virtual" import "core:os" -import "core:sort" import "core:strings" import "core:time" @@ -13,6 +13,12 @@ print_usage :: proc() { } main :: proc() { + arena: vmem.Arena + arena_err := vmem.arena_init_growing(&arena) + ensure(arena_err == nil) + arena_alloc := vmem.arena_allocator(&arena) + defer vmem.arena_destroy(&arena) //clean up everything! + if len(os.args) <= 2 || len(os.args) > 3 { print_usage() return @@ -21,12 +27,6 @@ main :: proc() { directory := os.args[1] output_dir := os.args[2] - arena: vmem.Arena - arena_err := vmem.arena_init_growing(&arena) - ensure(arena_err == nil) - arena_alloc := vmem.arena_allocator(&arena) - defer vmem.arena_destroy(&arena) //clean - start := time.tick_now() //start timer for footer generate_blog_md_file(directory, arena_alloc) @@ -41,7 +41,7 @@ main :: proc() { fmt.eprintfln("ERROR: Could not open file %s: %s", file, os.error_string(parse_err)) } - filename := strings.split(file, directory) + filename := strings.split(file, directory, arena_alloc) //fmt.printfln("INFO: filename: %s", filename) trimmed_filename := strings.trim_right(filename[1], ".md") //fmt.printfln("INFO: trimmed_filename: %s", trimmed_filename) @@ -71,12 +71,21 @@ main :: proc() { end := time.tick_since(start) os.write_string(file, "

") } - //fmt.printfln("INFO: Wrote %s into HTML!", md_files[i]) } } diff --git a/parse.odin b/parse.odin index e952b30..bef0262 100644 --- a/parse.odin +++ b/parse.odin @@ -1,3 +1,4 @@ +#+vet explicit-allocators package main import "core:fmt" @@ -9,12 +10,14 @@ MD_SUFFIX :: ".md" UTF8_PREFIX :: "\n" CSS_PREFIX :: "\n" +FAVICON_PREFIX :: "\n" MASTODON_PREFIX :: "\n" write_prefixs_to_html_file :: proc(file: ^os.File) { os.write_string(file, UTF8_PREFIX) os.write_string(file, CSS_PREFIX) + os.write_string(file, FAVICON_PREFIX) os.write_string(file, MASTODON_PREFIX) }