package lightgallery import ( "bytes" "fmt" "math/rand" "strings" "time" "github.com/yuin/goldmark" "github.com/yuin/goldmark/ast" "github.com/yuin/goldmark/renderer" "github.com/yuin/goldmark/renderer/html" "github.com/yuin/goldmark/util" ) type LightGalleryHTMLRenderer struct { html.Config md goldmark.Markdown } func NewLightGalleryHTMLRenderer(opts ...html.Option) renderer.NodeRenderer { r := &LightGalleryHTMLRenderer{ Config: html.NewConfig(), md: goldmark.New( goldmark.WithRendererOptions( html.WithHardWraps(), html.WithXHTML(), ), ), } for _, opt := range opts { opt.SetHTMLOption(&r.Config) } return r } func (r *LightGalleryHTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) { reg.Register(KindLightGalleryBlock, r.renderLightGallery) } func (r *LightGalleryHTMLRenderer) renderLightGallery(w util.BufWriter, source []byte, n ast.Node, entering bool) (ast.WalkStatus, error) { if entering { gallery := n.(*LightGalleryBlock) if len(gallery.Images) == 0 { return ast.WalkContinue, nil } galleryID := generateDivId(8) w.WriteString(fmt.Sprintf(`
")) captionHTML = bytes.TrimSuffix(captionHTML, []byte("
\n")) captionHTML = bytes.TrimSuffix(captionHTML, []byte("")) } dayDate, _ := time.Parse("20060102 150405", imageNameParts[len(imageNameParts)-2]+" "+imageNameParts[len(imageNameParts)-1]) dayDate = dayDate.In(gallery.Location) dynamicElements = append(dynamicElements, fmt.Sprintf(`{ src: "https://f003.backblazeb2.com/file/sayana-photos/full/%s", downloadUrl: "https://f003.backblazeb2.com/file/sayana-photos/full/%s", alt: "%s", responsive: "https://f003.backblazeb2.com/file/sayana-photos/webp-320p/%s.webp 384, https://f003.backblazeb2.com/file/sayana-photos/webp-560p/%s.webp 672, https://f003.backblazeb2.com/file/sayana-photos/webp-800p/%s.webp 960, https://f003.backblazeb2.com/file/sayana-photos/webp-1200p/%s.webp 1440, https://f003.backblazeb2.com/file/sayana-photos/webp-1600p/%s.webp 1920", thumb: "https://f003.backblazeb2.com/file/sayana-photos/webp-320p/%s.webp", subHtml: `+"`"+`%s
%s