﻿ // -*- Coding: utf-8; -*-
//--------------------------------------------------------------------
// Copyright (c) 1999-2001, International Business Machines
// Corporation and others.  All Rights Reserved.
//--------------------------------------------------------------------
// THIS IS A MACHINE-GENERATED FILE
// Tool: dumpICUrules.bat
// Source: ../../text/resources/Transliterator_Greek_Latin.txt
// Date: Wed Nov  7 09:34:04 2001
//--------------------------------------------------------------------

// Greek_Latin

translit_Greek_Latin {
  Rule {
//--------------------------------------------------------------------
// Copyright (c) 1999-2001, International Business Machines
// Corporation and others. All Rights Reserved.
//--------------------------------------------------------------------
// $Source: /xsrl/Nsvn/icu/icu/data/Attic/translit_Greek_Latin.txt,v $
// $Date: 2001/11/07 18:50:25 $
// $Revision: 1.3 $
//--------------------------------------------------------------------

// Rules are predicated on running NFD first, and NFC afterwards
"::NFD (NFC) ;" 

// TEST CASES

// Ὀλίγοι ἔμφονες πολλῶν ἀφρόνων φοβερώτεροι — Πλάτωνος
// ᾂ ᾒ ᾢ ᾃ ᾓ ᾣ
// ᾳ ῃ ῳ ὃ ὄ
// ὠς ὡς ὢς ὣς
// Ὠς Ὡς Ὢς Ὣς
// ὨΣ ὩΣ ὪΣ ὫΣ
// Ạ, ạ, Ẹ, ẹ, Ọ, ọ

// Useful variables

"$lower = [:Ll:] ;" 
"$upper = [:Lu:] ;" 
"$accent = [:M:] ;" 

"$macron = \u0304 ;"
"$ddot = \u0308 ;"
"$ddotmac = [$ddot$macron];"

"$lcgvowel = [αεηιουω] ;" 
"$ucgvowel = [ΑΕΗΙΟΥΩ] ;" 
"$gvowel = [$lcgvowel $ucgvowel] ;" 
"$lcgvowelC = [$lcgvowel $accent] ;" 

"$evowel = [aeiouyAEIOUY];"
"$vowel = [ $evowel $gvowel] ;" 

"$beforeLower = $accent * $lower ;" 

"$gammaLike = [ΓΚΞΧγκξχϰ] ;" 
"$egammaLike = [GKXCgkxc] ;" 
"$smooth = ̓ ;" 
"$rough = ̔ ;" 
"$iotasub = ͅ ;" 

"$evowel_i = [$evowel-[iI]] ;"

"$caron = \u030C;"

"$afterLetter = [:^L:] [\\\'[:M:]]* ;"
"$beforeLetter = [\\\'[:M:]]* [:^L:] ;"

// Fix punctuation

"\\\; <> \\\? ;"
"· <> \\\: ;"

// CIRCUMFLEX: convert greek circumflex to normal one. Could use tilde or inverted breve

"\u0342 <> \u0302 ;" 

// IOTA: convert iota subscript to iota
// first make previous alpha long!

"$accent_minus = [[$accent]-[$iotasub$macron]];"

"Α } $accent_minus * $iotasub > | Α $macron ;"  
"α } $accent_minus * $iotasub > | α $macron ;" 

// now convert to uppercase if after uppercase, ow to lowercase

"$upper $accent * { $iotasub > I ;" 
"$iotasub > i ;" 

"| $1 $iotasub < ([:L:] $macron [:M:]*) i ;"
"| $1 $iotasub < ([:L:] $macron [:M:]*) I ;"

// BREATHING

// Convert rough breathing to h, and move before letters.

// Make A ` x = > H a x

 "Α ($macron?) $rough } $beforeLower > H | α $1;" 
 "Ε $rough } $beforeLower > H | ε;" 
 "Η $rough } $beforeLower > H | η ;" 
 "Ι ($ddot?) $rough } $beforeLower > H | ι  $1;" 
 "Ο $rough } $beforeLower > H | ο ;" 
 "Υ $rough } $beforeLower > H | υ ;" 
 "Ω ($ddot?) $rough } $beforeLower > H | ω $1;" 

// Make A x ` = > H a x

"Α ($lower $macron?) $rough > H | α $1 ;" 
"Ε ($lower) $rough > H | ε $1 ;" 
"Η ($lower) $rough > H | η $1 ;" 
"Ι ($lower $ddot?) $rough > H | ι $1 ;" 
"Ο ($lower) $rough > H | ο $1 ;" 
"Υ ($lower) $rough > H | υ $1 ;" 
"Ω ($lower  $ddot?) $rough > H | ω $1 ;" 

//Otherwise, make x ` into h x and X ` into H X

"($lcgvowel + $ddotmac? ) $rough > h | $1 ;" 
"($gvowel + $ddotmac? ) $rough > H | $1 ;" 

// Go backwards with H

"| $1 $rough < h ($evowel $macron $ddot? $evowel_i $macron?) ;"
"| $1 $rough < h ($evowel $ddot? $evowel $macron?) ;"
"| $1 $rough < h ($evowel $macron? $ddot?) ;"

"| $1 $rough < H ([AEIOUY] $macron $ddot? $evowel_i $macron?) ;"
"| $1 $rough < H ([AEIOUY] $ddot? $evowel $macron?) ;"
"| $1 $rough < H ([AEIOUY] $macron? $ddot?) ;"

// titlecase, have to fix individually
// in the future, we should add &uppercase() to make this easier

"| A $1 $rough < H a ($macron  $ddot? $evowel_i $macron?) ;"
"| E $1 $rough < H e ($macron  $ddot? $evowel_i $macron?) ;"
"| I $1 $rough < H i ($macron  $ddot? $evowel_i $macron?) ;"
"| O $1 $rough < H o ($macron  $ddot? $evowel_i $macron?) ;"
"| U $1 $rough < H u ($macron $ddot? $evowel_i $macron?) ;"
"| Y $1 $rough < H y ($macron $ddot? $evowel_i $macron?) ;"

"| A $1 $rough < H a ($ddot? $evowel $macron?) ;"
"| E $1 $rough < H e ($ddot? $evowel $macron?) ;"
"| I $1 $rough < H i ($ddot? $evowel $macron?) ;"
"| O $1 $rough < H o ($ddot? $evowel $macron?) ;"
"| U $1 $rough < H u ($ddot? $evowel $macron?) ;"
"| Y $1 $rough < H y ($ddot? $evowel $macron?) ;"

"| A $1 $rough < H a ($macron? $ddot? ) ;"
"| E $1 $rough < H e ($macron? $ddot? ) ;"
"| I $1 $rough < H i ($macron? $ddot? ) ;"
"| O $1 $rough < H o ($macron? $ddot? ) ;"
"| U $1 $rough < H u ($macron? $ddot? ) ;"
"| Y $1 $rough < H y ($macron? $ddot? ) ;"

// Now do smooth

//delete smooth breathing for Latin
"$smooth > ;" 

// insert in Greek
// the assumption is that all Marks are on letters.

 "| $1 $smooth < [^[:L:][:M:]] { ([rR]) } [^hH$smooth$rough] ;"
 "| $1 $smooth < [^[:L:][:M:]] { ($evowel $macron? $evowel $macron?) } [^$smooth$rough] ;"
 "| $1 $smooth < [^[:L:][:M:]] { ($evowel $macron?) } [^$evowel$smooth$rough] ;"

// TODO: preserve smooth/rough breathing if not 
// on initial vowel sequence

// need to have these up here so the rules don't mask

// remove now superfluous macron when returning

"Α < A $macron ;"  
"α < a $macron ;" 

"η <> e $macron ;"
"Η <> E $macron ;"

"φ <> ph ;" 
"Ψ } $beforeLower <> Ps ;" 
"Ψ <> PS ;" 

"Φ } $beforeLower <> Ph ;" 
"Φ <> PH ;"
"ψ <> ps ;" 

"ω <> o $macron ;"
"Ω <>  O $macron;"

// NORMAL

"α <> a ;" 
"Α <> A ;" 

"β <> b ;" 
"Β <> B ;" 

"γ } $gammaLike <> n } $egammaLike ;" 
"γ <> g ;" 
"Γ } $gammaLike <> N } $egammaLike ;" 
"Γ <> G ;" 

"δ <> d ;" 
"Δ <> D ;" 

"ε <> e ;" 
"Ε <> E ;" 

"ζ <> z ;" 
"Ζ <> Z ;" 

"θ <> th ;" 
"Θ } $beforeLower <> Th ;" 
"Θ <> TH ;" 

"ι <> i ;" 
"Ι <> I ;" 

"κ <> k ;"
"Κ <> K ;" 

"λ <> l ;" 
"Λ <> L ;" 

"μ <> m ;" 
"Μ <> M ;" 

"ν } $gammaLike > n\\\' ;" 
"ν <> n ;" 
"Ν } $gammaLike <> N\\\' ;" 
"Ν <> N ;" 

"ξ <> x ;" 
"Ξ <> X ;" 

"ο <> o ;" 
"Ο <> O ;" 

"π <> p ;" 
"Π <> P ;" 

"ρ $rough <> rh;" 
"Ρ $rough } $beforeLower <> Rh ;" 
"Ρ $rough <> RH ;" 
"ρ <> r ;" 
"Ρ <> R ;" 

// insert separator

"[Pp] { } ς > \\\' ;" 
"[Pp] { } σ > \\\' ;"

// Caron means exception

// before a letter, initial
"ς } $beforeLetter <> s $caron } $beforeLetter;"
"σ } $beforeLetter <> s } $beforeLetter;"

// otherwise, after a letter = final 
"$afterLetter { σ <> $afterLetter { s $caron;"
"$afterLetter { ς <> $afterLetter { s ;"

// otherwise (isolated) = initial
"ς <> s $caron;"
"σ <> s ;"

"[Pp] { Σ <> \\\'S ;" 
"Σ <> S ;" 

"τ <> t ;" 
"Τ <> T ;" 

"$vowel {υ } <> u ;" 
"υ <> y ;" 
"$vowel { Υ <> U ;" 
"Υ <> Y ;" 

"χ <> ch ;" 
"Χ } $beforeLower <> Ch ;" 
"Χ <> CH ;" 

// Completeness for ASCII

"$ignore = [[:Mark:]''] * ;"

"| k  < c ;"
"| ph < f ;"
"| i  < j ;"
"| k < q ;"
"| u < v ;"
"| u < w ;"
"| K < C ;"
"| PH < F } $ignore [:UppercaseLetter:] ;"
"| PH < [:UppercaseLetter:] $ignore { F ;"
"| PH < F ;"
"| I < J ;"
"| K < Q ;"
"| U < V ;"
"| U < W ;"

"$rough } $ignore [:UppercaseLetter:] > H ;"
"$ignore [:UppercaseLetter:] { $rough > H ;"
"$rough < H ;"
"$rough <> h ;"

// Completeness for Greek

"ϐ > | β ;"
"ϑ > | θ ;"
"ϒ > | Υ ;"
"ϕ > | φ ;"
"ϖ > | π ;"

"ϰ > | κ ;"
"ϱ > | ρ ;"
"ϲ > | σ ;"
"ϳ > j ;"
"ϴ > | Θ ;"
"ϵ > | ε ;"

 "ͺ > i;"

// delete any trailing ' marks used for roundtripping

 "< [Ππ] { \\\' } [Ss] ;"
 "< [Νν] { \\\' } $egammaLike ;"

"::NFC (NFD) ;" 
  }
}
