forked from Elara6331/itd
		
	
		
			
				
	
	
		
			151 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package translit
 | 
						||
 | 
						||
import (
 | 
						||
	"strings"
 | 
						||
)
 | 
						||
 | 
						||
type ArmenianTranslit struct {
 | 
						||
	initComplete bool
 | 
						||
}
 | 
						||
 | 
						||
var armenianMap = []string{
 | 
						||
	"աու", "au",
 | 
						||
	"բու", "bu",
 | 
						||
	"գու", "gu",
 | 
						||
	"դու", "du",
 | 
						||
	"եու", "eu",
 | 
						||
	"զու", "zu",
 | 
						||
	"էու", "eu",
 | 
						||
	"ըու", "yu",
 | 
						||
	"թու", "tu",
 | 
						||
	"ժու", "ju",
 | 
						||
	"իու", "iu",
 | 
						||
	"լու", "lu",
 | 
						||
	"խու", "xu",
 | 
						||
	"ծու", "cu",
 | 
						||
	"կու", "ku",
 | 
						||
	"հու", "hu",
 | 
						||
	"ձու", "dzu",
 | 
						||
	"ղու", "xu",
 | 
						||
	"ճու", "cu",
 | 
						||
	"մու", "mu",
 | 
						||
	"յու", "yu",
 | 
						||
	"նու", "nu",
 | 
						||
	"շու", "shu",
 | 
						||
	"չու", "chu",
 | 
						||
	"պու", "pu",
 | 
						||
	"ջու", "ju",
 | 
						||
	"ռու", "ru",
 | 
						||
	"սու", "su",
 | 
						||
	"վու", "vu",
 | 
						||
	"տու", "tu",
 | 
						||
	"րու", "ru",
 | 
						||
	"ցու", "cu",
 | 
						||
	"փու", "pu",
 | 
						||
	"քու", "qu",
 | 
						||
	"օու", "ou",
 | 
						||
	"ևու", "eu",
 | 
						||
	"ֆու", "fu",
 | 
						||
	"ոու", "vou",
 | 
						||
	"ու", "u",
 | 
						||
	"բո", "bo",
 | 
						||
	"գո", "go",
 | 
						||
	"դո", "do",
 | 
						||
	"զո", "zo",
 | 
						||
	"թո", "to",
 | 
						||
	"ժո", "jo",
 | 
						||
	"լո", "lo",
 | 
						||
	"խո", "xo",
 | 
						||
	"ծո", "co",
 | 
						||
	"կո", "ko",
 | 
						||
	"հո", "ho",
 | 
						||
	"ձո", "dzo",
 | 
						||
	"ղո", "xo",
 | 
						||
	"ճո", "co",
 | 
						||
	"մո", "mo",
 | 
						||
	"յո", "yo",
 | 
						||
	"նո", "no",
 | 
						||
	"շո", "so",
 | 
						||
	"չո", "co",
 | 
						||
	"պո", "po",
 | 
						||
	"ջո", "jo",
 | 
						||
	"ռո", "ro",
 | 
						||
	"սո", "so",
 | 
						||
	"վո", "vo",
 | 
						||
	"տո", "to",
 | 
						||
	"րո", "ro",
 | 
						||
	"ցո", "co",
 | 
						||
	"փո", "po",
 | 
						||
	"քո", "qo",
 | 
						||
	"ևո", "eo",
 | 
						||
	"ֆո", "fo",
 | 
						||
	"ո", "vo",
 | 
						||
	"եւ", "ev",
 | 
						||
	"եվ", "ev",
 | 
						||
	"ա", "a",
 | 
						||
	"բ", "b",
 | 
						||
	"գ", "g",
 | 
						||
	"դ", "d",
 | 
						||
	"ե", "e",
 | 
						||
	"զ", "z",
 | 
						||
	"է", "e",
 | 
						||
	"ը", "y",
 | 
						||
	"թ", "t",
 | 
						||
	"ժ", "j",
 | 
						||
	"ի", "i",
 | 
						||
	"լ", "l",
 | 
						||
	"խ", "x",
 | 
						||
	"ծ", "c",
 | 
						||
	"կ", "k",
 | 
						||
	"հ", "h",
 | 
						||
	"ձ", "dz",
 | 
						||
	"ղ", "x",
 | 
						||
	"ճ", "c",
 | 
						||
	"մ", "m",
 | 
						||
	"յ", "y",
 | 
						||
	"ն", "n",
 | 
						||
	"շ", "sh",
 | 
						||
	"չ", "ch",
 | 
						||
	"պ", "p",
 | 
						||
	"ջ", "j",
 | 
						||
	"ռ", "r",
 | 
						||
	"ս", "s",
 | 
						||
	"վ", "v",
 | 
						||
	"տ", "t",
 | 
						||
	"ր", "r",
 | 
						||
	"ց", "c",
 | 
						||
	"փ", "p",
 | 
						||
	"ք", "q",
 | 
						||
	"օ", "o",
 | 
						||
	"և", "ev",
 | 
						||
	"ֆ", "f",
 | 
						||
	"ւ", "",
 | 
						||
}
 | 
						||
 | 
						||
func (at *ArmenianTranslit) Init() {
 | 
						||
	if !at.initComplete {
 | 
						||
		// Copy map as original will be changed
 | 
						||
		lower := armenianMap
 | 
						||
		// For every value in copied map
 | 
						||
		for i, val := range lower {
 | 
						||
			// If index is odd, skip
 | 
						||
			if i%2 == 1 {
 | 
						||
				continue
 | 
						||
			}
 | 
						||
			// Capitalize first letter
 | 
						||
			capital := strings.Title(val)
 | 
						||
			// If capital is not the same as lowercase
 | 
						||
			if capital != val {
 | 
						||
				// Add capital to map
 | 
						||
				armenianMap = append(armenianMap, capital, strings.Title(armenianMap[i+1]))
 | 
						||
			}
 | 
						||
		}
 | 
						||
		// Set init complete to true so it is not run again
 | 
						||
		at.initComplete = true
 | 
						||
	}
 | 
						||
}
 | 
						||
 | 
						||
func (at *ArmenianTranslit) Transliterate(s string) string {
 | 
						||
	return strings.NewReplacer(armenianMap...).Replace(s)
 | 
						||
}
 |