func JoinedIdentifier(identifiers ...string) string {
	return strings.Join(identifiers, ":")
}
JoinedIdentifier builds a new identifier, joinded with the
colon as the separator.
package identifier
import (
	"bytes"
	"fmt"
	"reflect"
	"strings"
	"unicode"
)
func LimitedSepIdentifier(sep string, limit bool, parts ...interface{}) string {
	iparts := make([]string, 0)
	for _, p := range parts {
		tmp := strings.Map(func(r rune) rune {
			lcr := unicode.ToLower(r)
			if !limit {
				return lcr
			}
			if unicode.IsLetter(lcr) || unicode.IsDigit(lcr) {
				if lcr <= unicode.MaxASCII {
					return lcr
				}
			}
			return ' '
		}, fmt.Sprintf("%v", p))
		if ipart := strings.Join(strings.Fields(tmp), "-"); len(ipart) > 0 {
			iparts = append(iparts, ipart)
		}
	}
	return strings.Join(iparts, sep)
}
func SepIdentifier(sep string, parts ...interface{}) string {
	return LimitedSepIdentifier(sep, true, parts...)
}
func Identifier(parts ...interface{}) string {
	return SepIdentifier(":", parts...)
}