package frontmatter

import (
	"errors"
	"strings"
)

// HasRune checks if the file has the frontmatter rune
func HasRune(file string) bool {
	return strings.HasPrefix(file, "---") ||
		strings.HasPrefix(file, "+++") ||
		strings.HasPrefix(file, "{")
}

// AppendRune appends the frontmatter rune to a file
func AppendRune(frontmatter string, mark rune) string {
	frontmatter = strings.TrimSpace(frontmatter)

	switch mark {
	case '-':
		return "---\n" + frontmatter + "\n---"
	case '+':
		return "+++\n" + frontmatter + "\n+++"
	case '{':
		return "{\n" + frontmatter + "\n}"
	}

	return frontmatter
}

// RuneToStringFormat converts the rune to a string with the format
func RuneToStringFormat(mark rune) (string, error) {
	switch mark {
	case '-':
		return "yaml", nil
	case '+':
		return "toml", nil
	case '{', '}':
		return "json", nil
	default:
		return "", errors.New("Unsupported format type")
	}
}

// StringFormatToRune converts the format name to its rune
func StringFormatToRune(format string) (rune, error) {
	switch format {
	case "yaml":
		return '-', nil
	case "toml":
		return '+', nil
	case "json":
		return '{', nil
	default:
		return '0', errors.New("Unsupported format type")
	}
}