Added arn to the main repository
This commit is contained in:
37
arn/CharacterFinder.go
Normal file
37
arn/CharacterFinder.go
Normal file
@ -0,0 +1,37 @@
|
||||
package arn
|
||||
|
||||
// CharacterFinder holds an internal map of ID to anime mappings
|
||||
// and is therefore very efficient to use when trying to find
|
||||
// anime by a given service and ID.
|
||||
type CharacterFinder struct {
|
||||
idToCharacter map[string]*Character
|
||||
mappingName string
|
||||
}
|
||||
|
||||
// NewCharacterFinder creates a new finder for external characters.
|
||||
func NewCharacterFinder(mappingName string) *CharacterFinder {
|
||||
finder := &CharacterFinder{
|
||||
idToCharacter: map[string]*Character{},
|
||||
mappingName: mappingName,
|
||||
}
|
||||
|
||||
for character := range StreamCharacters() {
|
||||
finder.Add(character)
|
||||
}
|
||||
|
||||
return finder
|
||||
}
|
||||
|
||||
// Add adds a character to the search pool.
|
||||
func (finder *CharacterFinder) Add(character *Character) {
|
||||
id := character.GetMapping(finder.mappingName)
|
||||
|
||||
if id != "" {
|
||||
finder.idToCharacter[id] = character
|
||||
}
|
||||
}
|
||||
|
||||
// GetCharacter tries to find an external anime in our anime database.
|
||||
func (finder *CharacterFinder) GetCharacter(id string) *Character {
|
||||
return finder.idToCharacter[id]
|
||||
}
|
Reference in New Issue
Block a user