mirror of
https://github.com/Ed94/Odin.git
synced 2026-06-13 01:21:38 -07:00
Add string caching example documentation
This commit is contained in:
@@ -111,6 +111,48 @@ constructing a table, you can use `aligned_row_of_values` or
|
||||
table.aligned_row_of_values(tbl, .Center, "Foo", "Bar")
|
||||
table.row_of_aligned_values(tbl, {{.Center, "Foo"}, {.Right, "Bar"}})
|
||||
|
||||
**Caching Results:**
|
||||
|
||||
If you only need to build a table once but display it potentially many times,
|
||||
it may be more efficient to cache the results of your write into a string.
|
||||
|
||||
Here's an example of how you can do that:
|
||||
|
||||
package main
|
||||
|
||||
import "core:fmt"
|
||||
import "core:strings"
|
||||
import "core:text/table"
|
||||
|
||||
main :: proc() {
|
||||
string_buffer := strings.builder_make()
|
||||
defer strings.builder_destroy(&string_buffer)
|
||||
|
||||
{
|
||||
tbl: table.Table
|
||||
table.init(&tbl)
|
||||
defer table.destroy(&tbl)
|
||||
table.caption(&tbl, "Hellope!")
|
||||
table.row(&tbl, "Hellope", "World")
|
||||
|
||||
builder_writer := strings.to_writer(&string_buffer)
|
||||
|
||||
// The written table will be cached into the string builder after this call.
|
||||
table.write_plain_table(builder_writer, &tbl)
|
||||
}
|
||||
// The table is inaccessible, now that we're back in the first-level scope.
|
||||
|
||||
// But now the results are stored in the string builder, which can be converted to a string.
|
||||
my_table_string := strings.to_string(string_buffer)
|
||||
|
||||
// Remember that the string's allocated backing data lives in the
|
||||
// builder and must still be freed.
|
||||
//
|
||||
// The deferred call to `builder_destroy` will take care of that for us
|
||||
// in this simple example.
|
||||
fmt.println(my_table_string)
|
||||
}
|
||||
|
||||
**Regarding `Width_Procs`:**
|
||||
|
||||
If you know ahead of time that all the text you're parsing is ASCII, instead of
|
||||
|
||||
Reference in New Issue
Block a user