mirror of
https://github.com/KevinMidboe/motdGO.git
synced 2025-10-29 09:40:23 +00:00
various small changes
This commit is contained in:
23
char.go
23
char.go
@@ -3,11 +3,10 @@ package figlet4go
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Represents a single ascii character
|
// Represents a single ascii character
|
||||||
type AsciiChar struct {
|
type asciiChar struct {
|
||||||
// Slice with the lines of the Char
|
// Slice with the lines of the Char
|
||||||
Lines []string
|
Lines []string
|
||||||
// Color of the char
|
// Color of the char
|
||||||
@@ -15,30 +14,20 @@ type AsciiChar struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Creates a new ascii character
|
// Creates a new ascii character
|
||||||
func NewAsciiChar(font *font, char rune) (*AsciiChar, error) {
|
func NewAsciiChar(font *font, char rune) (*asciiChar, error) {
|
||||||
// If not ascii, throw an error
|
// If not ascii, throw an error
|
||||||
if char < 0 || char > 127 {
|
if char < 0 || char > 127 {
|
||||||
return nil, errors.New("Not Ascii")
|
return nil, errors.New("Not Ascii")
|
||||||
}
|
}
|
||||||
|
|
||||||
height := font.height
|
// Get the font's representation of the char
|
||||||
beginRow := (int(char) - 32) * height
|
lines := font.getCharSlice(char)
|
||||||
|
|
||||||
lines := make([]string, height)
|
return &asciiChar{Lines: lines}, nil
|
||||||
|
|
||||||
// Get the char lines of the char
|
|
||||||
for i := 0; i < height; i++ {
|
|
||||||
row := font.fontSlice[beginRow+i]
|
|
||||||
row = strings.Replace(row, "@", "", -1)
|
|
||||||
row = strings.Replace(row, font.hardblank, " ", -1)
|
|
||||||
lines[i] = row
|
|
||||||
}
|
|
||||||
|
|
||||||
return &AsciiChar{Lines: lines}, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return a line of the char as string with color if set
|
// Return a line of the char as string with color if set
|
||||||
func (char *AsciiChar) GetLine(index int) string {
|
func (char *asciiChar) GetLine(index int) string {
|
||||||
if char.Color != 0 {
|
if char.Color != 0 {
|
||||||
colorFunc := color.New(char.Color).SprintFunc()
|
colorFunc := color.New(char.Color).SprintFunc()
|
||||||
return colorFunc(char.Lines[index])
|
return colorFunc(char.Lines[index])
|
||||||
|
|||||||
33
font.go
33
font.go
@@ -1,9 +1,9 @@
|
|||||||
// Explanation of the .flf file header
|
// Explanation of the .flf file header
|
||||||
// THE HEADER LINE
|
// THE HEADER LINE
|
||||||
//
|
//
|
||||||
// The header line gives information about the FIGfont. Here is an example
|
// The header line gives information about the FIGfont. Here is an example
|
||||||
// showing the names of all parameters:
|
// showing the names of all parameters:
|
||||||
//
|
//
|
||||||
// flf2a$ 6 5 20 15 3 0 143 229 NOTE: The first five characters in
|
// flf2a$ 6 5 20 15 3 0 143 229 NOTE: The first five characters in
|
||||||
// | | | | | | | | | | the entire file must be "flf2a".
|
// | | | | | | | | | | the entire file must be "flf2a".
|
||||||
// / / | | | | | | | \
|
// / / | | | | | | | \
|
||||||
@@ -12,24 +12,41 @@
|
|||||||
// Height / | | \ Print_Direction
|
// Height / | | \ Print_Direction
|
||||||
// Baseline / \ Comment_Lines
|
// Baseline / \ Comment_Lines
|
||||||
// Max_Length Old_Layout*
|
// Max_Length Old_Layout*
|
||||||
//
|
//
|
||||||
// * The two layout parameters are closely related and fairly complex.
|
// * The two layout parameters are closely related and fairly complex.
|
||||||
// (See "INTERPRETATION OF LAYOUT PARAMETERS".)
|
// (See "INTERPRETATION OF LAYOUT PARAMETERS".)
|
||||||
//
|
//
|
||||||
package figlet4go
|
package figlet4go
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
// Represents a single font
|
// Represents a single font
|
||||||
type font struct {
|
type font struct {
|
||||||
// Hardblank symbol
|
// Hardblank symbol
|
||||||
hardblank string
|
hardblank string
|
||||||
// Height of one char
|
// Height of one char
|
||||||
height int
|
height int
|
||||||
//
|
//
|
||||||
fontSlice []string
|
fontSlice []string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *font) getCharSlice() []string {
|
// Get a slice of strings containing the chars lines
|
||||||
// TODO here will be the logic of NewAsciiChar
|
func (f *font) getCharSlice(char rune) []string {
|
||||||
return []string{}
|
|
||||||
}
|
height := f.height
|
||||||
|
beginRow := (int(char) - 32) * height
|
||||||
|
|
||||||
|
lines := make([]string, height)
|
||||||
|
|
||||||
|
// Get the char lines of the char
|
||||||
|
for i := 0; i < height; i++ {
|
||||||
|
row := f.fontSlice[beginRow+i]
|
||||||
|
row = strings.Replace(row, "@", "", -1)
|
||||||
|
row = strings.Replace(row, f.hardblank, " ", -1)
|
||||||
|
lines[i] = row
|
||||||
|
}
|
||||||
|
|
||||||
|
return lines
|
||||||
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ type fontManager struct {
|
|||||||
fontList map[string]string
|
fontList map[string]string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a new fontmanagerM
|
// Create a new fontmanager
|
||||||
func newFontManager() *fontManager {
|
func newFontManager() *fontManager {
|
||||||
fm := &fontManager{}
|
fm := &fontManager{}
|
||||||
fm.fontLib = make(map[string]*font)
|
fm.fontLib = make(map[string]*font)
|
||||||
@@ -52,11 +52,10 @@ func (fm *fontManager) getFont(fontName string) *font {
|
|||||||
fontName = defaultFont
|
fontName = defaultFont
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return fm.fontLib[fontName]
|
return fm.fontLib[fontName]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Loads all .flf files recursively in the fontPath path
|
// Loads all .flf files recursively in the fontPath path
|
||||||
// Saves the found font files in a map with the name as the key
|
// Saves the found font files in a map with the name as the key
|
||||||
// and the path as the value. Doesn't load them at this point
|
// and the path as the value. Doesn't load them at this point
|
||||||
@@ -69,11 +68,11 @@ func (fm *fontManager) loadFontList(fontPath string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// If the current item is a directory or has not the correct suffix
|
// If the current item is a directory or has not the correct suffix
|
||||||
if info.IsDir() || !strings.HasSuffix(info.Name(), "." + extension) {
|
if info.IsDir() || !strings.HasSuffix(info.Name(), "."+extension) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
// Extract the font name
|
// Extract the font name
|
||||||
fontName := strings.TrimSuffix(info.Name(), "." + extension)
|
fontName := strings.TrimSuffix(info.Name(), "."+extension)
|
||||||
// Save the font to the list
|
// Save the font to the list
|
||||||
fm.fontList[fontName] = path
|
fm.fontList[fontName] = path
|
||||||
|
|
||||||
@@ -132,8 +131,6 @@ func (fm *fontManager) loadBuildInFont() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Parse a font from a content string
|
// Parse a font from a content string
|
||||||
// Used to load fonts from disk and the builtin fonts
|
// Used to load fonts from disk and the builtin fonts
|
||||||
func parseFontContent(cont string) (*font, error) {
|
func parseFontContent(cont string) (*font, error) {
|
||||||
@@ -156,10 +153,9 @@ func parseFontContent(cont string) (*font, error) {
|
|||||||
// Initialize the font
|
// Initialize the font
|
||||||
font := &font{
|
font := &font{
|
||||||
hardblank: header[0][len(header[0])-1:],
|
hardblank: header[0][len(header[0])-1:],
|
||||||
height: height,
|
height: height,
|
||||||
fontSlice: lines[commentEndLine+1:],
|
fontSlice: lines[commentEndLine+1:],
|
||||||
}
|
}
|
||||||
|
|
||||||
return font, nil
|
return font, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,9 +54,9 @@ func (ar *AsciiRender) RenderOpts(str string, opt *RenderOptions) (string, error
|
|||||||
|
|
||||||
// Load the font
|
// Load the font
|
||||||
font := ar.fontMgr.getFont(opt.FontName)
|
font := ar.fontMgr.getFont(opt.FontName)
|
||||||
|
|
||||||
// Slice holding the chars
|
// Slice holding the chars
|
||||||
chars := []*AsciiChar{}
|
chars := []*asciiChar{}
|
||||||
|
|
||||||
// Index of the current color
|
// Index of the current color
|
||||||
curColorIndex := 0
|
curColorIndex := 0
|
||||||
|
|||||||
Reference in New Issue
Block a user