30 lines
531 B
Go
30 lines
531 B
Go
package ansi
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/charmbracelet/x/ansi/parser"
|
|
)
|
|
|
|
var parserPool = sync.Pool{
|
|
New: func() any {
|
|
p := NewParser(nil)
|
|
p.SetParamsSize(parser.MaxParamsSize)
|
|
p.SetDataSize(1024 * 1024 * 4) // 4MB of data buffer
|
|
return p
|
|
},
|
|
}
|
|
|
|
// GetParser returns a parser from a sync pool.
|
|
func GetParser() *Parser {
|
|
return parserPool.Get().(*Parser)
|
|
}
|
|
|
|
// PutParser returns a parser to a sync pool. The parser is reset
|
|
// automatically.
|
|
func PutParser(p *Parser) {
|
|
p.Reset()
|
|
p.dataLen = 0
|
|
parserPool.Put(p)
|
|
}
|