#!/usr/bin/env ruby # # Copyright 2007 David Shakaryan # Distributed under the terms of the GNU General Public License v2 # # Transliterates Armenian text to use the basic Latin alphabet, based on # Eastern Armenian pronunciation. # Set UTF-8 character code. $KCODE = 'u' # Create array containing character information. # ['character', 'transliteration'(, 'initial transliteration')] database = [ # Deal with digraphs by treating them as single characters. ['Իւ', 'Iu' ], ['իւ', 'iu' ], ['Ու', 'U' ], ['ու', 'u' ], # Letters and ligatures. [ 'Ա', 'A' ], [ 'ա', 'a' ], [ 'Բ', 'B' ], [ 'բ', 'b' ], [ 'Գ', 'G' ], [ 'գ', 'g' ], [ 'Դ', 'D' ], [ 'դ', 'd' ], [ 'Ե', 'E', 'Ye' ], [ 'ե', 'e', 'ye' ], [ 'Զ', 'Z' ], [ 'զ', 'z' ], [ 'Է', 'E' ], [ 'է', 'e' ], [ 'Ը', '@' ], [ 'ը', '@' ], [ 'Թ', 'T' ], [ 'թ', 't' ], [ 'Ժ', 'Zh' ], [ 'ժ', 'zh' ], [ 'Ի', 'I' ], [ 'ի', 'i' ], [ 'Լ', 'L' ], [ 'լ', 'l' ], [ 'Խ', 'X' ], [ 'խ', 'x' ], [ 'Ծ', 'Ts' ], [ 'ծ', 'ts' ], [ 'Կ', 'K' ], [ 'կ', 'k' ], [ 'Հ', 'H' ], [ 'հ', 'h' ], [ 'Ձ', 'Dz' ], [ 'ձ', 'dz' ], [ 'Ղ', 'Gh' ], [ 'ղ', 'gh' ], [ 'Ճ', 'Ch' ], [ 'ճ', 'ch' ], [ 'Մ', 'M' ], [ 'մ', 'm' ], [ 'Յ', 'Y' ], [ 'յ', 'y' ], [ 'Ն', 'N' ], [ 'ն', 'n' ], [ 'Շ', 'Sh' ], [ 'շ', 'sh' ], [ 'Ո', 'O', 'Vo' ], [ 'ո', 'o', 'vo' ], [ 'Չ', 'Ch' ], [ 'չ', 'ch' ], [ 'Պ', 'P' ], [ 'պ', 'p' ], [ 'Ջ', 'J' ], [ 'ջ', 'j' ], [ 'Ռ', 'R' ], [ 'ռ', 'r' ], [ 'Ս', 'S' ], [ 'ս', 's' ], [ 'Վ', 'V' ], [ 'վ', 'v' ], [ 'Տ', 'T' ], [ 'տ', 't' ], [ 'Ր', 'R' ], [ 'ր', 'r' ], [ 'Ց', 'Ts' ], [ 'ց', 'ts' ], [ 'Ւ', 'V' ], [ 'ւ', 'v' ], [ 'Փ', 'P' ], [ 'փ', 'p' ], [ 'Ք', 'K' ], [ 'ք', 'k' ], [ 'Օ', 'O' ], [ 'օ', 'o' ], [ 'Ֆ', 'F' ], [ 'ֆ', 'f' ], [ 'և', 'ev', 'yev'], [ 'ﬓ', 'mn' ], [ 'ﬔ', 'me' ], [ 'ﬕ', 'mi' ], [ 'ﬖ', 'vn' ], [ 'ﬗ', 'mx' ], # Fix incorrect punctuation marks. [ '`', '՝' ], [ ':', '։' ], # Punctuation marks. [ /՞([^։]*)։/, '\1?' ], [ /՜([^։?]*)(։|(\?))/, '\1\3!' ], [ 'ՙ', '' ], [ '՚', '' ], [ '՛', '' ], [ '՜', '' ], [ '՝', '' ], [ '՞', '' ], [ '՟', '…' ], [ '։', '.' ], [ '֊', '-' ], [ '«', '"' ], [ '»', '"' ], ] # Create string containing text to be transliterated. text = ARGV.join(' ') # For each character in character database... database.each do |char| # Deal with initial transliteration of character, if it is different. if char[2] text.gsub!(/\b#{char[0]}/, char[2]) end # Deal with ordinary transliteration of character. text.gsub!(char[0], char[1]) end # Output transliterated text. puts text