package diamond

import (
	"errors"
	"strings"
)

const testVersion = 1

func Gen(c byte) (string, error) {
	if c > 'Z' || c < 'A' {
		return "", errors.New("Out of Range")
	}
	d := rune(strings.ToUpper(string(c))[0])

	var ret string
	for i := 'A'; i <= d; i++ {
		ret += PrintRow(i, d) + "\n"
	}
	for i := d - 1; i >= 'A'; i-- {
		ret += PrintRow(i, d) + "\n"
	}
	return ret, nil
}

func PrintRow(rowChar rune, genChar rune) string {
	var ret string
	ret += strings.Repeat(" ", int(genChar-rowChar))
	ret += string(rowChar)
	if rowChar > 'A' {
		ret += strings.Repeat(" ", (2*int(rowChar-'A') - 1))
		ret += string(rowChar)
	}
	ret += strings.Repeat(" ", int(genChar-rowChar))
	return ret
}
