// Package dictdawg builds a plain left-to-right DAWG of a dictionary, as used by the // Appel-Jacobson move generator. package dictdawg import ( "github.com/iliadenisov/alphabet" dawg "github.com/iliadenisov/dafsa" ) // Build returns a DAWG Finder over words, which must be alphabet-index slices sorted by // index order and de-duplicated (see wordlist.Encode). func Build(idx alphabet.Indexer, words [][]byte) (dawg.Finder, error) { d := dawg.New(idx) for _, w := range words { if err := d.AddB(w); err != nil { return nil, err } } return d.Finish(), nil } // Save writes the DAWG to filename. It requires an embedded alphabet (for example // alphabet.Latin()), so that Load can reconstruct it. func Save(f dawg.Finder, filename string) error { _, err := f.Save(filename) return err } // Load reopens a DAWG saved with Save. func Load(filename string) (dawg.Finder, error) { return dawg.Load(filename) }