libpostal/parser.go
2026-08-08 08:50:11 -04:00

37 lines
608 B
Go

package libpostal
import (
"errors"
"sync"
)
var (
ErrSettingUp = errors.New("error setting up libpostal")
)
type Parser struct {
serializer sync.Mutex
once sync.Once
}
func NewParser() (*Parser, error) {
if !setup() || !setupParser() {
return nil, ErrSettingUp
}
return new(Parser), nil
}
func (p *Parser) Parse(addressToParse string, options AddressParserOptions) (Address, error) {
p.serializer.Lock()
defer p.serializer.Unlock()
return parseAddress(addressToParse, options)
}
func (p *Parser) Close() error {
p.once.Do(func() {
tearDownParser()
tearDown()
})
return nil
}