//--------------------------------------------------------------------
// Copyright (c) 2001, CrossWire Bible Society
//--------------------------------------------------------------------

// BGreek-Greek

translit_BGreek_Greek {
  Rule {
    ":: NFD (NFC) ;" 

    ":: [abgdezqklmnxofyprtucw] upper();"

    // Extra English Letters. Mapped for completeness
    "J>I;"
    "V>U;"

    "<[:Mn:];"

    // ==============================================
    // Variables, used to make the rules more comprehensible
    // and for conditionals.
    // ==============================================
    
    // Greek Letters
    
    "$ALPHA=\u0391;"
    "$BETA=\u0392;"
    "$GAMMA=\u0393;"
    "$DELTA=\u0394;"
    "$EPSILON=\u0395;"
    "$ZETA=\u0396;"
    "$ETA=\u0397;"
    "$THETA=\u0398;"
    "$IOTA=\u0399;"
    "$KAPPA=\u039A;"
    "$LAMBDA=\u039B;"
    "$MU=\u039C;"
    "$NU=\u039D;"
    "$XI=\u039E;"
    "$OMICRON=\u039F;"
    "$PI=\u03A0;"
    "$RHO=\u03A1;"
    "$SIGMA=\u03A3;"
    "$TAU=\u03A4;"
    "$YPSILON=\u03A5;"
    "$PHI=\u03A6;"
    "$CHI=\u03A7;"
    "$PSI=\u03A8;"
    "$OMEGA=\u03A9;"
    
    "$alpha=\u03B1;"
    "$beta=\u03B2;"
    "$gamma=\u03B3;"
    "$delta=\u03B4;"
    "$epsilon=\u03B5;"
    "$zeta=\u03B6;"
    "$eta=\u03B7;"
    "$theta=\u03B8;"
    "$iota=\u03B9;"
    "$kappa=\u03BA;"
    "$lambda=\u03BB;"
    "$mu=\u03BC;"
    "$nu=\u03BD;"
    "$xi=\u03BE;"
    "$omicron=\u03BF;"
    "$pi=\u03C0;"
    "$rho=\u03C1;"
    "$sigma=\u03C3;"
    "$tau=\u03C4;"
    "$ypsilon=\u03C5;"
    "$phi=\u03C6;"
    "$chi=\u03C7;"
    "$psi=\u03C8;"
    "$omega=\u03C9;"
        
    "$sigma2=\u03C2;"

    "$iota_subscript=\u037A;"
    "$comb_rough_breathing=\u0314;"
    "$rough_breathing=\u02BD;"

    // Variables for conditional mappings
    
    // ==============================================
    // Rules
    // ==============================================
    // The following are special titlecases, and should
    // not be copied when duplicating the lowercase
    // ==============================================
    
    // Because there is no uppercase forms for final sigma,
    // we had to move all the sigma rules up here.
    
    // Remember to insert ' to preserve round trip, for double letters
    // don't need to do this for the digraphs with h,
    // since it is not created when mapping back from greek
    
    // use special form for s
    
    "S}[[:L:] & [:Latin:]]>$sigma2;"
    "S <> $SIGMA;"
    
    // The following are a bit tricky. 's' takes two forms in greek
    // final or non final.
    // We use ~s to represent the abnormal form: final before letter
    // or non-final before non-letter.
    // We use 's to separate p and s (otherwise ps is one letter)
    // so, we break out the following forms:

    "S <         $sigma;"
    "S <          $sigma2;"
    
    // ==============================================
    // Uppercase Forms.
    // To make lowercase forms, just copy and lowercase below
    // ==============================================
    
    // Basic Letters
   
    "A<>$ALPHA;"
    "B<>$BETA;"
    "G<>$GAMMA;"
    "D<>$DELTA;"
    "E<>$EPSILON;"
    "Z<>$ZETA;"
    "H<>$ETA;"
    "Q<>$THETA;"
    "I<>$IOTA;"
    "K<>$KAPPA;"
    "L<>$LAMBDA;"
    "M<>$MU;"
    "N<>$NU;"
    "X<>$XI;"
    "O<>$OMICRON;"
    "F<>$PHI;" // needs ordering before P
    "Y<>$PSI;" // needs ordering before P
    "P<>$PI;"
    "R<>$RHO;"
    "T<>$TAU;"
    "U<>$YPSILON;"
    "C<>$CHI;"
    "W<>$OMEGA;"
    
    // Non-letter characters    

    "i<>$iota_subscript;"
    "h<>$comb_rough_breathing;"
    "h<$rough_breathing;"

    ":: [[:Ll:] & [:Greek:]] upper;"
    
    ":: NFC (NFD) ;"    
  }
}

