//go:build !windows && !js && !appengine
// +build !windows,!js,!appengine

package runewidth

import (
	
	
	
)

var reLoc = regexp.MustCompile(`^[a-z][a-z][a-z]?(?:_[A-Z][A-Z])?\.(.+)`)

var mblenTable = map[string]int{
	"utf-8":   6,
	"utf8":    6,
	"jis":     8,
	"eucjp":   3,
	"euckr":   2,
	"euccn":   2,
	"sjis":    2,
	"cp932":   2,
	"cp51932": 2,
	"cp936":   2,
	"cp949":   2,
	"cp950":   2,
	"big5":    2,
	"gbk":     2,
	"gb2312":  2,
}

func isEastAsian( string) bool {
	 := strings.ToLower()
	 := reLoc.FindStringSubmatch()
	if len() == 2 {
		 = strings.ToLower([1])
	}

	if strings.HasSuffix(, "@cjk_narrow") {
		return false
	}

	for ,  := range []byte() {
		if  == '@' {
			 = [:]
			break
		}
	}
	 := 1
	if ,  := mblenTable[];  {
		 = 
	}
	if  > 1 && ([0] != 'u' ||
		strings.HasPrefix(, "ja") ||
		strings.HasPrefix(, "ko") ||
		strings.HasPrefix(, "zh")) {
		return true
	}
	return false
}

// IsEastAsian return true if the current locale is CJK
func () bool {
	 := os.Getenv("LC_ALL")
	if  == "" {
		 = os.Getenv("LC_CTYPE")
	}
	if  == "" {
		 = os.Getenv("LANG")
	}

	// ignore C locale
	if  == "POSIX" ||  == "C" {
		return false
	}
	if len() > 1 && [0] == 'C' && ([1] == '.' || [1] == '-') {
		return false
	}

	return isEastAsian()
}