main.go

package main

import (
“os”
“errors”
“strings”
)

func LoadBanner(filename string) (map[rune][]string, error) {
font := make(map[rune][]string)
data, err := os.ReadFile(filename)
if err != nil {
return nil, err
}
if len(data) == 0 {
return font, errors.New(“empty file”)
}
lines := strings.Split(string(data), “\n”)
if len(lines) < 856 {
return font, errors.New(“invalid file”)
}
for ch := ‘ ‘; ch <= ‘~’; ch++ {
start := (int(ch)-32) *9
font[ch] = lines[start+1 : start+9]
}
return font, nil
}

package main

import (
“strings”
)

func GenerateArt(text string, banner map[rune][]string) string {
var result strings.Builder
word := SplitInput(text)
for i, words := range word {
if words == “” {
if i != len(word)-1 {
result.WriteString(“\n”)
}
continue
}

for row := 0; row < 8; row++ {
for _, ch := range words {
result.WriteString(banner[ch][row])
}
result.WriteString(“\n”)
}
}
return result.String()

}

package main

func RenderLine(text string, banner map[rune][]string) []string {
final := make([]string, 8)

if text == “” {
return final
}
for _, ch := range text {
for row := 0; row < 8; row++ {
final[row] += banner[ch][row]
}
}
return final

}

package main

import “strings”

func SplitInput(input string) []string {
word := strings.Split(input, “\n”)
return word
}

package main
import “fmt”
func validateInput(input string) (rune, error) {
for _, i := range input {
if i < ‘ ‘ || i > ‘~’ {
return i, fmt.Errorf(“invalid character: %v”, i)
}
}
return 0, nil
}

// func main() {
// fmt.Println(validateInput(“david”))
// fmt.Println(validateInput(“😊”))
// }

Leave a Reply

Your email address will not be published. Required fields are marked *

Categories
Recent Posts
Tags