;; Common Lisp style file for xindy
;; filename: LatinRules.xdy
;;
;; Please note that this data file deliberately uses strings
;; with single non-ascii bytes.  This is intentional and
;; follows the usage observed in similar xindy support files.
;;
;; It is based upon xindy's files lang/general/utf8.xdy and
;; lang/general/utf8-lang.xdy which implement
;; "a general sorting order for Western European languages".
;;
;; The aim for Sphinx is to be able to index in a Cyrillic document
;; also terms using the Latin alphabets, inclusive of letters
;; with diacritics.  To this effect the xindy rules from lang/general
;; got manually re-coded to avoid collisions with the encoding
;; done by xindy for sorting words in Cyrillic languages, which was
;; observed not to use bytes with octal encoding 0o266 or higher.
;;
;; So here we use only 0o266 or higher bytes.
;; (Ŋ, ŋ, IJ, and ij are absent from
;; lang/general/utf8.xdy and not included here.)
;; Contributed by the Sphinx team, 2018.

(define-letter-group "A" :prefixes ("�"))
(define-letter-group "B" :after "A" :prefixes ("�"))
(define-letter-group "C" :after "B" :prefixes ("�"))
(define-letter-group "D" :after "C" :prefixes ("�"))
(define-letter-group "E" :after "D" :prefixes ("�"))
(define-letter-group "F" :after "E" :prefixes ("�"))
(define-letter-group "G" :after "F" :prefixes ("�"))
(define-letter-group "H" :after "G" :prefixes ("�"))
(define-letter-group "I" :after "H" :prefixes ("�"))
(define-letter-group "J" :after "I" :prefixes ("�"))
(define-letter-group "K" :after "J" :prefixes ("�"))
(define-letter-group "L" :after "K" :prefixes ("�"))
(define-letter-group "M" :after "L" :prefixes ("�"))
(define-letter-group "N" :after "M" :prefixes ("�"))
(define-letter-group "O" :after "N" :prefixes ("�"))
(define-letter-group "P" :after "O" :prefixes ("�"))
(define-letter-group "Q" :after "P" :prefixes ("�"))
(define-letter-group "R" :after "Q" :prefixes ("�"))
(define-letter-group "S" :after "R" :prefixes ("�"))
(define-letter-group "T" :after "S" :prefixes ("�"))
(define-letter-group "U" :after "T" :prefixes ("�"))
(define-letter-group "V" :after "U" :prefixes ("�"))
(define-letter-group "W" :after "V" :prefixes ("�"))
(define-letter-group "X" :after "W" :prefixes ("�"))
(define-letter-group "Y" :after "X" :prefixes ("�"))
(define-letter-group "Z" :after "Y" :prefixes ("�"))

(define-rule-set "sphinx-xy-alphabetize"

  :rules  (("À" "�" :string)
           ("Ă" "�" :string)
           ("â" "�" :string)
           ("Ä" "�" :string)
           ("à" "�" :string)
           ("Å" "�" :string)
           ("Ã" "�" :string)
           ("Á" "�" :string)
           ("á" "�" :string)
           ("ã" "�" :string)
           ("Â" "�" :string)
           ("ă" "�" :string)
           ("å" "�" :string)
           ("ą" "�" :string)
           ("ä" "�" :string)
           ("Ą" "�" :string)
           ("æ" "��" :string)
           ("Æ" "��" :string)
           ("ć" "�" :string)
           ("ĉ" "�" :string)
           ("ç" "�" :string)
           ("Č" "�" :string)
           ("č" "�" :string)
           ("Ĉ" "�" :string)
           ("Ç" "�" :string)
           ("Ć" "�" :string)
           ("ď" "�" :string)
           ("Đ" "�" :string)
           ("Ď" "�" :string)
           ("đ" "�" :string)
           ("ê" "�" :string)
           ("Ę" "�" :string)
           ("Ě" "�" :string)
           ("ë" "�" :string)
           ("ě" "�" :string)
           ("é" "�" :string)
           ("È" "�" :string)
           ("Ë" "�" :string)
           ("É" "�" :string)
           ("è" "�" :string)
           ("Ê" "�" :string)
           ("ę" "�" :string)
           ("ĝ" "�" :string)
           ("ğ" "�" :string)
           ("Ğ" "�" :string)
           ("Ĝ" "�" :string)
           ("ĥ" "�" :string)
           ("Ĥ" "�" :string)
           ("Ï" "�" :string)
           ("Í" "�" :string)
           ("ï" "�" :string)
           ("Î" "�" :string)
           ("î" "�" :string)
           ("ı" "�" :string)
           ("İ" "�" :string)
           ("í" "�" :string)
           ("Ì" "�" :string)
           ("ì" "�" :string)
           ("Ĵ" "�" :string)
           ("ĵ" "�" :string)
           ("ł" "�" :string)
           ("Ł" "�" :string)
           ("ľ" "�" :string)
           ("Ľ" "�" :string)
           ("ń" "�" :string)
           ("Ń" "�" :string)
           ("ñ" "�" :string)
           ("ň" "�" :string)
           ("Ñ" "�" :string)
           ("Ň" "�" :string)
           ("Õ" "�" :string)
           ("Ő" "�" :string)
           ("ó" "�" :string)
           ("ö" "�" :string)
           ("ô" "�" :string)
           ("ő" "�" :string)
           ("Ø" "�" :string)
           ("Ö" "�" :string)
           ("õ" "�" :string)
           ("Ô" "�" :string)
           ("ø" "�" :string)
           ("Ó" "�" :string)
           ("Ò" "�" :string)
           ("ò" "�" :string)
           ("œ" "ĺ" :string)
           ("Œ" "ĺ" :string)
           ("Ř" "�" :string)
           ("ř" "�" :string)
           ("Ŕ" "�" :string)
           ("ŕ" "�" :string)
           ("ŝ" "�" :string)
           ("Ś" "�" :string)
           ("ș" "�" :string)
           ("ş" "�" :string)
           ("Ŝ" "�" :string)
           ("ś" "�" :string)
           ("Ș" "�" :string)
           ("š" "�" :string)
           ("Ş" "�" :string)
           ("Š" "�" :string)
           ("ß" "��" :string)
           ("Ț" "�" :string)
           ("Ť" "�" :string)
           ("ț" "�" :string)
           ("ť" "�" :string)
           ("û" "�" :string)
           ("ŭ" "�" :string)
           ("ů" "�" :string)
           ("ű" "�" :string)
           ("ù" "�" :string)
           ("Ŭ" "�" :string)
           ("Ù" "�" :string)
           ("Ű" "�" :string)
           ("Ü" "�" :string)
           ("Ů" "�" :string)
           ("ú" "�" :string)
           ("Ú" "�" :string)
           ("Û" "�" :string)
           ("ü" "�" :string)
           ("ÿ" "�" :string)
           ("Ý" "�" :string)
           ("Ÿ" "�" :string)
           ("ý" "�" :string)
           ("Ż" "�" :string)
           ("Ž" "�" :string)
           ("Ź" "�" :string)
           ("ž" "�" :string)
           ("ż" "�" :string)
           ("ź" "�" :string)
           ("a" "�" :string)
           ("A" "�" :string)
           ("b" "�" :string)
           ("B" "�" :string)
           ("c" "�" :string)
           ("C" "�" :string)
           ("d" "�" :string)
           ("D" "�" :string)
           ("e" "�" :string)
           ("E" "�" :string)
           ("F" "�" :string)
           ("f" "�" :string)
           ("G" "�" :string)
           ("g" "�" :string)
           ("H" "�" :string)
           ("h" "�" :string)
           ("i" "�" :string)
           ("I" "�" :string)
           ("J" "�" :string)
           ("j" "�" :string)
           ("K" "�" :string)
           ("k" "�" :string)
           ("L" "�" :string)
           ("l" "�" :string)
           ("M" "�" :string)
           ("m" "�" :string)
           ("n" "�" :string)
           ("N" "�" :string)
           ("O" "�" :string)
           ("o" "�" :string)
           ("p" "�" :string)
           ("P" "�" :string)
           ("Q" "�" :string)
           ("q" "�" :string)
           ("r" "�" :string)
           ("R" "�" :string)
           ("S" "�" :string)
           ("s" "�" :string)
           ("t" "�" :string)
           ("T" "�" :string)
           ("u" "�" :string)
           ("U" "�" :string)
           ("v" "�" :string)
           ("V" "�" :string)
           ("W" "�" :string)
           ("w" "�" :string)
           ("x" "�" :string)
           ("X" "�" :string)
           ("Y" "�" :string)
           ("y" "�" :string)
           ("z" "�" :string)
           ("Z" "�" :string)
           ))

(define-rule-set "sphinx-xy-resolve-diacritics"

  :rules  (("Ĥ" "�" :string)
           ("ó" "�" :string)
           ("ľ" "�" :string)
           ("Ř" "�" :string)
           ("ĝ" "�" :string)
           ("ď" "�" :string)
           ("Ě" "�" :string)
           ("ĥ" "�" :string)
           ("Č" "�" :string)
           ("Ĵ" "�" :string)
           ("ě" "�" :string)
           ("ž" "�" :string)
           ("Ď" "�" :string)
           ("ř" "�" :string)
           ("Ž" "�" :string)
           ("ı" "�" :string)
           ("Ť" "�" :string)
           ("á" "�" :string)
           ("č" "�" :string)
           ("Á" "�" :string)
           ("ň" "�" :string)
           ("Š" "�" :string)
           ("Ň" "�" :string)
           ("ĵ" "�" :string)
           ("ť" "�" :string)
           ("Ó" "�" :string)
           ("ý" "�" :string)
           ("Ĝ" "�" :string)
           ("Ú" "�" :string)
           ("Ľ" "�" :string)
           ("š" "�" :string)
           ("Ý" "�" :string)
           ("ú" "�" :string)
           ("Ś" "�" :string)
           ("ć" "�" :string)
           ("Ł" "�" :string)
           ("ł" "�" :string)
           ("ń" "�" :string)
           ("À" "�" :string)
           ("Ź" "�" :string)
           ("à" "�" :string)
           ("Ń" "�" :string)
           ("Đ" "�" :string)
           ("ÿ" "�" :string)
           ("ś" "�" :string)
           ("Ğ" "�" :string)
           ("ğ" "�" :string)
           ("Ù" "�" :string)
           ("İ" "�" :string)
           ("đ" "�" :string)
           ("ù" "�" :string)
           ("Ț" "�" :string)
           ("é" "�" :string)
           ("ŕ" "�" :string)
           ("Ć" "�" :string)
           ("ț" "�" :string)
           ("ò" "�" :string)
           ("ź" "�" :string)
           ("Ò" "�" :string)
           ("Ÿ" "�" :string)
           ("Ŕ" "�" :string)
           ("É" "�" :string)
           ("ĉ" "�" :string)
           ("ô" "�" :string)
           ("Í" "�" :string)
           ("ŝ" "�" :string)
           ("Ż" "�" :string)
           ("Ă" "�" :string)
           ("Ŝ" "�" :string)
           ("ñ" "�" :string)
           ("ŭ" "�" :string)
           ("í" "�" :string)
           ("È" "�" :string)
           ("Ô" "�" :string)
           ("Ŭ" "�" :string)
           ("ż" "�" :string)
           ("Ñ" "�" :string)
           ("è" "�" :string)
           ("Ĉ" "�" :string)
           ("ă" "�" :string)
           ("â" "�" :string)
           ("û" "�" :string)
           ("ê" "�" :string)
           ("Õ" "�" :string)
           ("õ" "�" :string)
           ("ș" "�" :string)
           ("ç" "�" :string)
           ("Â" "�" :string)
           ("Ê" "�" :string)
           ("Û" "�" :string)
           ("Ç" "�" :string)
           ("ì" "�" :string)
           ("Ì" "�" :string)
           ("Ș" "�" :string)
           ("ö" "�" :string)
           ("Ö" "�" :string)
           ("ş" "�" :string)
           ("ů" "�" :string)
           ("ë" "�" :string)
           ("ã" "�" :string)
           ("î" "�" :string)
           ("Î" "�" :string)
           ("Ã" "�" :string)
           ("Ş" "�" :string)
           ("Ů" "�" :string)
           ("Ë" "�" :string)
           ("ï" "�" :string)
           ("Ő" "�" :string)
           ("Ï" "�" :string)
           ("Ę" "�" :string)
           ("ő" "�" :string)
           ("Ü" "�" :string)
           ("Å" "�" :string)
           ("ü" "�" :string)
           ("ę" "�" :string)
           ("å" "�" :string)
           ("Ä" "�" :string)
           ("ű" "�" :string)
           ("Ø" "�" :string)
           ("ø" "�" :string)
           ("Ű" "�" :string)
           ("ä" "�" :string)
           ("Ą" "�" :string)
           ("ą" "�" :string)
           ("œ" "�" :string)
           ("ß" "�" :string)
           ("Æ" "�" :string)
           ("Œ" "�" :string)
           ("æ" "�" :string)
           ("e" "�" :string)
           ("t" "�" :string)
           ("L" "�" :string)
           ("Y" "�" :string)
           ("J" "�" :string)
           ("a" "�" :string)
           ("p" "�" :string)
           ("u" "�" :string)
           ("j" "�" :string)
           ("b" "�" :string)
           ("G" "�" :string)
           ("U" "�" :string)
           ("F" "�" :string)
           ("H" "�" :string)
           ("i" "�" :string)
           ("z" "�" :string)
           ("c" "�" :string)
           ("l" "�" :string)
           ("A" "�" :string)
           ("Q" "�" :string)
           ("w" "�" :string)
           ("D" "�" :string)
           ("R" "�" :string)
           ("d" "�" :string)
           ("s" "�" :string)
           ("r" "�" :string)
           ("k" "�" :string)
           ("v" "�" :string)
           ("m" "�" :string)
           ("P" "�" :string)
           ("y" "�" :string)
           ("K" "�" :string)
           ("q" "�" :string)
           ("S" "�" :string)
           ("I" "�" :string)
           ("C" "�" :string)
           ("M" "�" :string)
           ("Z" "�" :string)
           ("T" "�" :string)
           ("W" "�" :string)
           ("B" "�" :string)
           ("h" "�" :string)
           ("x" "�" :string)
           ("X" "�" :string)
           ("f" "�" :string)
           ("E" "�" :string)
           ("V" "�" :string)
           ("N" "�" :string)
           ("O" "�" :string)
           ("o" "�" :string)
           ("g" "�" :string)
           ("n" "�" :string)
           ))

(define-rule-set "sphinx-xy-resolve-case"

  :rules  (("Ú" "8" :string)
           ("Ÿ" "8" :string)
           ("Ç" "8" :string)
           ("Ĉ" "8" :string)
           ("Ŕ" "8" :string)
           ("Ľ" "8" :string)
           ("Ů" "8" :string)
           ("Ý" "8" :string)
           ("É" "8" :string)
           ("Ë" "8" :string)
           ("Ș" "8" :string)
           ("Ì" "8" :string)
           ("Ê" "8" :string)
           ("Ň" "8" :string)
           ("Ą" "8" :string)
           ("Š" "8" :string)
           ("Û" "8" :string)
           ("Ş" "8" :string)
           ("Ć" "8" :string)
           ("Ò" "8" :string)
           ("Ĝ" "8" :string)
           ("Ñ" "8" :string)
           ("Ó" "8" :string)
           ("Î" "8" :string)
           ("Á" "8" :string)
           ("Ã" "8" :string)
           ("Ț" "8" :string)
           ("Å" "8" :string)
           ("Ğ" "8" :string)
           ("Ü" "8" :string)
           ("È" "8" :string)
           ("Ô" "8" :string)
           ("İ" "8" :string)
           ("Ű" "8" :string)
           ("Ù" "8" :string)
           ("Ŭ" "8" :string)
           ("Â" "8" :string)
           ("Ť" "8" :string)
           ("Ń" "8" :string)
           ("Ď" "8" :string)
           ("Ź" "8" :string)
           ("Ž" "8" :string)
           ("Đ" "8" :string)
           ("Ŝ" "8" :string)
           ("Č" "8" :string)
           ("Ĵ" "8" :string)
           ("Ö" "8" :string)
           ("Ø" "8" :string)
           ("Ż" "8" :string)
           ("Ł" "8" :string)
           ("Ă" "8" :string)
           ("Ě" "8" :string)
           ("Ő" "8" :string)
           ("Õ" "8" :string)
           ("Ę" "8" :string)
           ("Ï" "8" :string)
           ("À" "8" :string)
           ("Ĥ" "8" :string)
           ("Ä" "8" :string)
           ("Ś" "8" :string)
           ("Ř" "8" :string)
           ("Í" "8" :string)
           ("Œ" "89" :string)
           ("Æ" "89" :string)
           ("ì" "9" :string)
           ("è" "9" :string)
           ("ą" "9" :string)
           ("š" "9" :string)
           ("ú" "9" :string)
           ("å" "9" :string)
           ("ă" "9" :string)
           ("ę" "9" :string)
           ("ü" "9" :string)
           ("ź" "9" :string)
           ("ò" "9" :string)
           ("ť" "9" :string)
           ("ț" "9" :string)
           ("ĵ" "9" :string)
           ("ŕ" "9" :string)
           ("ż" "9" :string)
           ("ä" "9" :string)
           ("ý" "9" :string)
           ("ù" "9" :string)
           ("á" "9" :string)
           ("é" "9" :string)
           ("č" "9" :string)
           ("ň" "9" :string)
           ("ś" "9" :string)
           ("ø" "9" :string)
           ("í" "9" :string)
           ("đ" "9" :string)
           ("ı" "9" :string)
           ("ğ" "9" :string)
           ("î" "9" :string)
           ("ã" "9" :string)
           ("à" "9" :string)
           ("ř" "9" :string)
           ("ő" "9" :string)
           ("ů" "9" :string)
           ("ș" "9" :string)
           ("ÿ" "9" :string)
           ("ë" "9" :string)
           ("ŭ" "9" :string)
           ("ç" "9" :string)
           ("ű" "9" :string)
           ("ñ" "9" :string)
           ("õ" "9" :string)
           ("ě" "9" :string)
           ("ş" "9" :string)
           ("ž" "9" :string)
           ("ĝ" "9" :string)
           ("ŝ" "9" :string)
           ("ń" "9" :string)
           ("û" "9" :string)
           ("ł" "9" :string)
           ("ď" "9" :string)
           ("ĥ" "9" :string)
           ("ê" "9" :string)
           ("ô" "9" :string)
           ("ĉ" "9" :string)
           ("â" "9" :string)
           ("ć" "9" :string)
           ("ï" "9" :string)
           ("ö" "9" :string)
           ("ľ" "9" :string)
           ("ó" "9" :string)
           ("æ" "99" :string)
           ("ß" "99" :string)
           ("œ" "99" :string)
           ("N" "8" :string)
           ("V" "8" :string)
           ("O" "8" :string)
           ("X" "8" :string)
           ("E" "8" :string)
           ("P" "8" :string)
           ("K" "8" :string)
           ("T" "8" :string)
           ("Z" "8" :string)
           ("M" "8" :string)
           ("C" "8" :string)
           ("I" "8" :string)
           ("S" "8" :string)
           ("B" "8" :string)
           ("W" "8" :string)
           ("D" "8" :string)
           ("R" "8" :string)
           ("H" "8" :string)
           ("F" "8" :string)
           ("Q" "8" :string)
           ("A" "8" :string)
           ("G" "8" :string)
           ("U" "8" :string)
           ("J" "8" :string)
           ("Y" "8" :string)
           ("L" "8" :string)
           ("o" "9" :string)
           ("n" "9" :string)
           ("g" "9" :string)
           ("x" "9" :string)
           ("f" "9" :string)
           ("y" "9" :string)
           ("q" "9" :string)
           ("h" "9" :string)
           ("w" "9" :string)
           ("s" "9" :string)
           ("d" "9" :string)
           ("v" "9" :string)
           ("k" "9" :string)
           ("r" "9" :string)
           ("m" "9" :string)
           ("z" "9" :string)
           ("c" "9" :string)
           ("i" "9" :string)
           ("l" "9" :string)
           ("b" "9" :string)
           ("j" "9" :string)
           ("a" "9" :string)
           ("p" "9" :string)
           ("u" "9" :string)
           ("t" "9" :string)
           ("e" "9" :string)
           ))

(use-rule-set :run 0
	      :rule-set ("sphinx-xy-alphabetize"))
(use-rule-set :run 1
	      :rule-set ("sphinx-xy-resolve-diacritics"))
(use-rule-set :run 2
	      :rule-set ("sphinx-xy-resolve-case"))