From f42f1cb385b0ce5f010b565f3ba101595c06236e Mon Sep 17 00:00:00 2001 From: David Vogel Date: Wed, 18 Dec 2024 23:20:12 +0100 Subject: [PATCH] Add example for passing go values --- examples/passing-objects/main.go | 45 ++++++++++++++++++ examples/passing-objects/output.pdf | Bin 0 -> 18978 bytes .../passing-objects/template-test-data.typ | 5 ++ examples/passing-objects/template.typ | 33 +++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 examples/passing-objects/main.go create mode 100644 examples/passing-objects/output.pdf create mode 100644 examples/passing-objects/template-test-data.typ create mode 100644 examples/passing-objects/template.typ diff --git a/examples/passing-objects/main.go b/examples/passing-objects/main.go new file mode 100644 index 0000000..3c5c93e --- /dev/null +++ b/examples/passing-objects/main.go @@ -0,0 +1,45 @@ +package main + +import ( + "log" + "os" + "time" + + "github.com/Dadido3/go-typst" +) + +// DataEntry contains fake data to be passed to typst. +type DataEntry struct { + Name string + Size struct{ X, Y, Z float64 } + + Created time.Time + Numbers []int +} + +var TestData = []DataEntry{ + {Name: "Bell", Size: struct{ X, Y, Z float64 }{80, 40, 40}, Created: time.Date(2010, 12, 1, 12, 13, 14, 0, time.UTC), Numbers: []int{1, 2, 3}}, + {Name: "Scissor", Size: struct{ X, Y, Z float64 }{200, 30, 10}, Created: time.Date(2015, 5, 12, 23, 5, 10, 0, time.UTC), Numbers: []int{4, 5, 10, 15}}, + {Name: "Calculator", Size: struct{ X, Y, Z float64 }{150, 80, 8}, Created: time.Date(2016, 6, 10, 12, 15, 0, 0, time.UTC), Numbers: []int{16, 20, 30}}, + {Name: "Key", Size: struct{ X, Y, Z float64 }{25, 10, 2}, Created: time.Date(2020, 1, 2, 3, 4, 5, 0, time.UTC), Numbers: []int{100, 199, 205}}, +} + +func main() { + typstCLI := typst.CLI{} + + r, err := os.Open("template.typ") + if err != nil { + log.Panicf("Failed to open template file for reading: %v.", err) + } + defer r.Close() + + f, err := os.Create("output.pdf") + if err != nil { + log.Panicf("Failed to create output file: %v.", err) + } + defer f.Close() + + if err := typstCLI.RenderWithVariables(r, f, nil, map[string]any{"Data": TestData}); err != nil { + log.Panicf("Failed to render document: %v.", err) + } +} diff --git a/examples/passing-objects/output.pdf b/examples/passing-objects/output.pdf new file mode 100644 index 0000000000000000000000000000000000000000..718a7eae313213dc3529e5569635c780b5f0f39f GIT binary patch literal 18978 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 YA_C}B7x>kD2Y&cD!I*S(lFCy52Pzzc&;S4c literal 0 HcmV?d00001 diff --git a/examples/passing-objects/template-test-data.typ b/examples/passing-objects/template-test-data.typ new file mode 100644 index 0000000..6132a68 --- /dev/null +++ b/examples/passing-objects/template-test-data.typ @@ -0,0 +1,5 @@ +#let Data = ( + (Name: "Bell", Size: (X: 80, Y: 40, Z: 40), Created: datetime(year: 2010, month: 12, day: 1, hour: 12, minute: 13, second: 14), Numbers: (1, 2, 3)), + (Name: "Bell", Size: (X: 80, Y: 40, Z: 40), Created: datetime(year: 2010, month: 12, day: 1, hour: 12, minute: 13, second: 14), Numbers: (10, 12, 15)), + (Name: "Bell", Size: (X: 80, Y: 40, Z: 40), Created: datetime(year: 2010, month: 12, day: 1, hour: 12, minute: 13, second: 14), Numbers: (100, 109, 199, 200)), +) \ No newline at end of file diff --git a/examples/passing-objects/template.typ b/examples/passing-objects/template.typ new file mode 100644 index 0000000..6d3ef88 --- /dev/null +++ b/examples/passing-objects/template.typ @@ -0,0 +1,33 @@ +#set page(paper: "a4") + +// Uncomment to use test data. +//#import "template-test-data.typ": Data + += List of items + +#show table.cell.where(y: 0): strong +#set table( + stroke: (x, y) => if y == 0 { + (bottom: 0.7pt + black) + }, +) + +#table( + columns: 5, + table.header( + [Name], + [Size], + [Example box], + [Created], + [Numbers], + ), + ..for value in Data { + ( + [#value.Name], + [#value.Size], + box(fill: black, width: 0.1mm * value.Size.X, height: 0.1mm * value.Size.Y), + value.Created.display(), + [#list(..for num in value.Numbers {([#num],)})], + ) + } +)