diff --git a/main.go b/main.go index 5ba03fc..66006bd 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,4 @@ // Command mycorrhiza is a program that runs a mycorrhiza wiki. -// -//go:generate go run github.com/valyala/quicktemplate/qtc -dir=mycoopts package main import ( diff --git a/mycoopts/mycoopts.go b/mycoopts/mycoopts.go index 7fe78a8..86efc4a 100644 --- a/mycoopts/mycoopts.go +++ b/mycoopts/mycoopts.go @@ -2,10 +2,14 @@ package mycoopts import ( "errors" + "fmt" + "html" + "path/filepath" "github.com/bouncepaw/mycorrhiza/internal/cfg" "github.com/bouncepaw/mycorrhiza/internal/hyphae" "github.com/bouncepaw/mycorrhiza/interwiki" + "github.com/bouncepaw/mycorrhiza/l18n" "github.com/bouncepaw/mycorrhiza/util" "git.sr.ht/~bouncepaw/mycomarkup/v5/options" @@ -54,3 +58,58 @@ func MarkupOptions(hyphaName string) options.Options { ImgSrcFormatForInterwikiPrefix: interwiki.ImgSrcFormatFor, }.FillTheRest() } + +func mediaRaw(h *hyphae.MediaHypha) string { + return Media(h, l18n.New("en", "en")) +} + +func Media(h *hyphae.MediaHypha, lc *l18n.Localizer) string { + name := html.EscapeString(h.CanonicalName()) + + switch filepath.Ext(h.MediaFilePath()) { + case ".jpg", ".gif", ".png", ".webp", ".svg", ".ico": + return fmt.Sprintf( + `
+ +
`, + name, name, + ) + + case ".ogg", ".webm", ".mp4": + return fmt.Sprintf( + `
+ +
`, + name, + html.EscapeString(lc.Get("ui.media_novideo")), + name, + html.EscapeString(lc.Get("ui.media_novideo_link")), + ) + + case ".mp3", ".wav", ".flac": + return fmt.Sprintf( + `
+ +
`, + name, + html.EscapeString(lc.Get("ui.media_noaudio")), + name, + html.EscapeString(lc.Get("ui.media_noaudio_link")), + ) + + default: + return fmt.Sprintf( + `
+

%s

+
`, + name, + html.EscapeString(lc.Get("ui.media_download")), + ) + } +} diff --git a/mycoopts/view.qtpl b/mycoopts/view.qtpl deleted file mode 100644 index ce0590c..0000000 --- a/mycoopts/view.qtpl +++ /dev/null @@ -1,37 +0,0 @@ -{% import "path/filepath" %} - -{% import "github.com/bouncepaw/mycorrhiza/internal/hyphae" %} -{% import "github.com/bouncepaw/mycorrhiza/l18n" %} - -{% func mediaRaw(h *hyphae.MediaHypha) %}{%= Media(h, l18n.New("en", "en")) %}{% endfunc %} - -{% func Media(h *hyphae.MediaHypha, lc *l18n.Localizer) %} - {% switch filepath.Ext(h.MediaFilePath()) %} - - {% case ".jpg", ".gif", ".png", ".webp", ".svg", ".ico" %} -
- -
- - {% case ".ogg", ".webm", ".mp4" %} -
- -
- - {% case ".mp3", ".wav", ".flac" %} -
- -
- - {% default %} -
-

{%s lc.Get("ui.media_download") %}

-
-{% endswitch %} -{% endfunc %} diff --git a/mycoopts/view.qtpl.go b/mycoopts/view.qtpl.go deleted file mode 100644 index 2ed91e8..0000000 --- a/mycoopts/view.qtpl.go +++ /dev/null @@ -1,190 +0,0 @@ -// Code generated by qtc from "view.qtpl". DO NOT EDIT. -// See https://github.com/valyala/quicktemplate for details. - -//line mycoopts/view.qtpl:1 -package mycoopts - -//line mycoopts/view.qtpl:1 -import "path/filepath" - -//line mycoopts/view.qtpl:3 -import "github.com/bouncepaw/mycorrhiza/internal/hyphae" - -//line mycoopts/view.qtpl:4 -import "github.com/bouncepaw/mycorrhiza/l18n" - -//line mycoopts/view.qtpl:6 -import ( - qtio422016 "io" - - qt422016 "github.com/valyala/quicktemplate" -) - -//line mycoopts/view.qtpl:6 -var ( - _ = qtio422016.Copy - _ = qt422016.AcquireByteBuffer -) - -//line mycoopts/view.qtpl:6 -func streammediaRaw(qw422016 *qt422016.Writer, h *hyphae.MediaHypha) { -//line mycoopts/view.qtpl:6 - StreamMedia(qw422016, h, l18n.New("en", "en")) -//line mycoopts/view.qtpl:6 -} - -//line mycoopts/view.qtpl:6 -func writemediaRaw(qq422016 qtio422016.Writer, h *hyphae.MediaHypha) { -//line mycoopts/view.qtpl:6 - qw422016 := qt422016.AcquireWriter(qq422016) -//line mycoopts/view.qtpl:6 - streammediaRaw(qw422016, h) -//line mycoopts/view.qtpl:6 - qt422016.ReleaseWriter(qw422016) -//line mycoopts/view.qtpl:6 -} - -//line mycoopts/view.qtpl:6 -func mediaRaw(h *hyphae.MediaHypha) string { -//line mycoopts/view.qtpl:6 - qb422016 := qt422016.AcquireByteBuffer() -//line mycoopts/view.qtpl:6 - writemediaRaw(qb422016, h) -//line mycoopts/view.qtpl:6 - qs422016 := string(qb422016.B) -//line mycoopts/view.qtpl:6 - qt422016.ReleaseByteBuffer(qb422016) -//line mycoopts/view.qtpl:6 - return qs422016 -//line mycoopts/view.qtpl:6 -} - -//line mycoopts/view.qtpl:8 -func StreamMedia(qw422016 *qt422016.Writer, h *hyphae.MediaHypha, lc *l18n.Localizer) { -//line mycoopts/view.qtpl:8 - qw422016.N().S(` - `) -//line mycoopts/view.qtpl:9 - switch filepath.Ext(h.MediaFilePath()) { -//line mycoopts/view.qtpl:11 - case ".jpg", ".gif", ".png", ".webp", ".svg", ".ico": -//line mycoopts/view.qtpl:11 - qw422016.N().S(` -
- -
- - `) -//line mycoopts/view.qtpl:16 - case ".ogg", ".webm", ".mp4": -//line mycoopts/view.qtpl:16 - qw422016.N().S(` -
- -
- - `) -//line mycoopts/view.qtpl:24 - case ".mp3", ".wav", ".flac": -//line mycoopts/view.qtpl:24 - qw422016.N().S(` -
- -
- - `) -//line mycoopts/view.qtpl:32 - default: -//line mycoopts/view.qtpl:32 - qw422016.N().S(` -
-

`) -//line mycoopts/view.qtpl:34 - qw422016.E().S(lc.Get("ui.media_download")) -//line mycoopts/view.qtpl:34 - qw422016.N().S(`

-
-`) -//line mycoopts/view.qtpl:36 - } -//line mycoopts/view.qtpl:36 - qw422016.N().S(` -`) -//line mycoopts/view.qtpl:37 -} - -//line mycoopts/view.qtpl:37 -func WriteMedia(qq422016 qtio422016.Writer, h *hyphae.MediaHypha, lc *l18n.Localizer) { -//line mycoopts/view.qtpl:37 - qw422016 := qt422016.AcquireWriter(qq422016) -//line mycoopts/view.qtpl:37 - StreamMedia(qw422016, h, lc) -//line mycoopts/view.qtpl:37 - qt422016.ReleaseWriter(qw422016) -//line mycoopts/view.qtpl:37 -} - -//line mycoopts/view.qtpl:37 -func Media(h *hyphae.MediaHypha, lc *l18n.Localizer) string { -//line mycoopts/view.qtpl:37 - qb422016 := qt422016.AcquireByteBuffer() -//line mycoopts/view.qtpl:37 - WriteMedia(qb422016, h, lc) -//line mycoopts/view.qtpl:37 - qs422016 := string(qb422016.B) -//line mycoopts/view.qtpl:37 - qt422016.ReleaseByteBuffer(qb422016) -//line mycoopts/view.qtpl:37 - return qs422016 -//line mycoopts/view.qtpl:37 -}