source: code/trunk/vendor/github.com/alecthomas/chroma/v2/formatter.go@ 67

Last change on this file since 67 was 67, checked in by Izuru Yakumo, 23 months ago

Use vendored modules

Signed-off-by: Izuru Yakumo <yakumo.izuru@…>

File size: 1.0 KB
Line 
1package chroma
2
3import (
4 "io"
5)
6
7// A Formatter for Chroma lexers.
8type Formatter interface {
9 // Format returns a formatting function for tokens.
10 //
11 // If the iterator panics, the Formatter should recover.
12 Format(w io.Writer, style *Style, iterator Iterator) error
13}
14
15// A FormatterFunc is a Formatter implemented as a function.
16//
17// Guards against iterator panics.
18type FormatterFunc func(w io.Writer, style *Style, iterator Iterator) error
19
20func (f FormatterFunc) Format(w io.Writer, s *Style, it Iterator) (err error) { // nolint
21 defer func() {
22 if perr := recover(); perr != nil {
23 err = perr.(error)
24 }
25 }()
26 return f(w, s, it)
27}
28
29type recoveringFormatter struct {
30 Formatter
31}
32
33func (r recoveringFormatter) Format(w io.Writer, s *Style, it Iterator) (err error) {
34 defer func() {
35 if perr := recover(); perr != nil {
36 err = perr.(error)
37 }
38 }()
39 return r.Formatter.Format(w, s, it)
40}
41
42// RecoveringFormatter wraps a formatter with panic recovery.
43func RecoveringFormatter(formatter Formatter) Formatter { return recoveringFormatter{formatter} }
Note: See TracBrowser for help on using the repository browser.