-
Notifications
You must be signed in to change notification settings - Fork 9
/
svg_minified.go
43 lines (34 loc) 路 873 Bytes
/
svg_minified.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package formatters
import (
"bytes"
"io"
"github.com/alecthomas/chroma/v2"
"github.com/alecthomas/chroma/v2/formatters"
"github.com/tdewolff/minify/v2"
"github.com/tdewolff/minify/v2/svg"
)
var (
SVGMinified = formatters.Register("svg-min", NewSVGMinifiedFormatter())
)
type SVGMinifiedFormatter struct {
svgFormatter chroma.Formatter
m *minify.M
}
func NewSVGMinifiedFormatter() *SVGMinifiedFormatter {
m := minify.New()
m.AddFunc(mimeTypeSVG, svg.Minify)
return &SVGMinifiedFormatter{
svgFormatter: formatters.SVG,
m: m,
}
}
func (f *SVGMinifiedFormatter) Format(w io.Writer, style *chroma.Style, iterator chroma.Iterator) error {
b := new(bytes.Buffer)
if err := f.svgFormatter.Format(b, style, iterator); err != nil {
return err
}
if err := f.m.Minify(mimeTypeSVG, w, b); err != nil {
return err
}
return nil
}