diff --git a/feed.odin b/feed.odin
index f3a2e10..b76cc3d 100644
--- a/feed.odin
+++ b/feed.odin
@@ -5,13 +5,10 @@ import "core:strings"
import "core:time"
generate_rss :: proc(pages: []Page, config: Site) -> string {
- parts: [dynamic]string
- defer delete(parts)
+ sb := strings.builder_make()
- append(
- &parts,
- fmt.aprintf(
- `
+ strings.write_string(&sb, fmt.aprintf(
+ `
%s
@@ -19,12 +16,11 @@ generate_rss :: proc(pages: []Page, config: Site) -> string {
%s
en-us
`,
- xml_escape(config.title),
- config.base_url,
- xml_escape(config.description),
- config.base_url,
- ),
- )
+ xml_escape(config.title),
+ config.base_url,
+ xml_escape(config.description),
+ config.base_url,
+ ))
for page in pages {
if page.type == .Home {
@@ -36,10 +32,8 @@ generate_rss :: proc(pages: []Page, config: Site) -> string {
pub_date = format_rfc822(page.date)
}
- append(
- &parts,
- fmt.aprintf(
- `-
+ strings.write_string(&sb, fmt.aprintf(
+ `
-
%s
%s%s
%s
@@ -47,42 +41,35 @@ generate_rss :: proc(pages: []Page, config: Site) -> string {
%s
`,
- xml_escape(page.title),
- config.base_url,
- page.permalink,
- pub_date,
- config.base_url,
- page.permalink,
- xml_escape(page.body_html),
- ),
- )
+ xml_escape(page.title),
+ config.base_url,
+ page.permalink,
+ pub_date,
+ config.base_url,
+ page.permalink,
+ xml_escape(page.body_html),
+ ))
}
- append(&parts, " \n")
-
- return strings.join(parts[:], "")
+ strings.write_string(&sb, "\n")
+ return strings.to_string(sb)
}
generate_sitemap :: proc(pages: []Page, base_url: string) -> string {
- parts: [dynamic]string
- defer delete(parts)
+ sb := strings.builder_make()
- append(
- &parts,
- `
+ strings.write_string(&sb, `
-`,
- )
+`)
for page in pages {
lastmod := ""
if page.date != "" {
lastmod = fmt.aprintf("%s", page.date)
}
- append(
- &parts,
- fmt.aprintf("%s%s%s\n", base_url, page.permalink, lastmod),
- )
+ strings.write_string(&sb, fmt.aprintf(
+ "%s%s%s\n", base_url, page.permalink, lastmod,
+ ))
}
// Posts list page
@@ -96,11 +83,12 @@ generate_sitemap :: proc(pages: []Page, base_url: string) -> string {
if posts_lastmod != "" {
posts_lm = fmt.aprintf("%s", posts_lastmod)
}
- append(&parts, fmt.aprintf("%s/posts/%s\n", base_url, posts_lm))
+ strings.write_string(&sb, fmt.aprintf(
+ "%s/posts/%s\n", base_url, posts_lm,
+ ))
- append(&parts, "")
-
- return strings.join(parts[:], "")
+ strings.write_string(&sb, "")
+ return strings.to_string(sb)
}
// TODO: Leaks