Files
motdGO/char.go

55 lines
1.1 KiB
Go

package motdGO
import (
"errors"
"strings"
)
// Represents a single ascii character
type asciiChar struct {
// Slice with the lines of the Char
Lines []string
// Color of the char
Color Color
}
// Creates a new ascii character
func newAsciiChar(font *font, char rune) (*asciiChar, error) {
// If not ascii, throw an error
if char < 0 || char > 127 {
return nil, errors.New("Not Ascii")
}
// Get the font's representation of the char
lines := font.getCharSlice(char)
return &asciiChar{Lines: lines}, nil
}
// Return a line of the char as string with color if set
func (char *asciiChar) GetLine(index int, p Parser) string {
prefix := ""
suffix := ""
line := handleReplaces(char.Lines[index], p)
if char.Color != nil {
prefix = char.Color.getPrefix(p)
suffix = char.Color.getSuffix(p)
}
return prefix + line + suffix
}
// Replace all parser specific things
func handleReplaces(str string, p Parser) string {
if p.Replaces == nil {
return str
}
// Replace for each entry
for old, new := range p.Replaces {
str = strings.Replace(str, old, new, -1)
}
return str
}