Class: DetranslitRules

Inherits:
Object
  • Object
show all
Defined in:
lib/detranslit_rules.rb

Constant Summary collapse

RULES =

arrays: [output, predecessor-rule, successor-rule, softener-if-0]

{
  'a' => [
    ['а', /.*/, /.*/, 1]
  ],
  'b' => [
    ['б', /.*/, /.*/, 1],
    ['бь', /.*/, /[a,e,i,ja,ya,ju,yu]|^$/, 0]
  ],
  'c' => [
    ['ц', /.*/, /.*/, 1]
  ],
  'd' => [
    ['д', /.*/, /.*/, 1],
    ['дь', /.*/, /[ja,e,m,b,k,ju,yu,s]|^$/, 0]
  ],
  'e' => [
    ['е', /.*/, /.*/, 1]
  ],
  'f' => [
    ['ф', /.*/, /.*/, 1],
    ['фь', /.*/, /[ja,ya,e,je,o]|^$/, 0]
  ],
  'g' => [
    ['г', /.*/, /.*/, 1]
  ],
  'h' => [
    ['х', /.*/, /.*/, 1]
  ],
  'i' => [
    ['и', /.*/, /.*/, 1],
    ['ы', /.+/, /.*/, 1],
    ['ий', /.+/, /^$/, 1]
  ],
  'j' => [
    ['й', /.*/, /.*/, 1]
  ],
  'k' => [
    ['к', /.*/, /.*/, 1],
    ['кь', /.*/, /[ja,ya]/, 0]  #
  ],

  'l' => [
    ['л', /.*/, /.*/, 1]
  ],
  'm' => [
    ['м', /.*/, /.*/, 1]#,
#      ['мь', /[a,e,i,o,u,ju,yu,ja,ya]/, /[e,ja,ya,d,s,ju,yu]|^$/, 0]
#      ['мь', /[e]/, /[e]/, 0]
  ],
  'n' => [
    ['н',/.*/,/.*/, 1],
#      ['нь', /[a,e,o,u,i,y,ja,ya,ju,yu,z,r,s,g]/, /[k,e,ja,sh,sch,o,i,g,-,ju,yu,zh,ch,tsch,b,d,s]|^$/, 0]
    ['нь', /[a,e,o,u,i,y,ja,ya]/, /[k,e,ja,sh,sch,o,i,g]|^$/, 0]
  ],
  'o' => [
    ['о', /.*/, /.*/, 1]
  ],
  'p' => [
    ['п', /.*/, /.*/, 1],
    ['пь', /.*/, /[ja,ya,e,ju,yu]|^$/, 0]
  ],
  'q' => [
    ['', /.*/, /.*/, 1]
  ],
  'r' => [
    ['р', /.*/, /.*/, 1],
#      ['рь', /[a,o,e,u,y,i,b,ja,ju,t,p,kh,ch]/, /[e,k,ja,ya,m,c,-,i,b,tsch,ch,g]|^$/, 0]
    ['рь', /[a,o,e,u,y,i,b]/, /[e,k,ja,ya,m]|^$/, 0]
  ],
  's' => [
    ['с', /.*/, /.*/, 1],
#      ['сь', /.*/, /[m,e,k,b,ja,ya,ju,yu,o]|^$/, 0]
    ['сь', /[i,o,e]/, /[m,e]|^$/, 0]
  ],
  't' => [
    ['т', /.*/, /.*/, 1],
#      ['ть', /[a,i,s,ja,ya,u,e,y,o,z,r,l,f,n]/, /[s,e,ja,ya,ju,yu,i,-,b,m,f,k,d,u,v,w]|^$/, 0],
    ['ть', /[a,i,s,ja,ya,u,e,y,o,z,r]/, /[s,e,ja,ya,ju,yu,i,-]|^$/, 0],
  ],
  'u' => [
    ['у', /.*/, /.*/, 1]
  ],
  'v' => [
    ['в', /.*/, /.*/, 1],
    ['вь', /.*/, /[ju,yu,e,i]|^$/, 0]
  ],
  'w' => [
    ['в', /.*/, /.*/, 1],
    ['вь', /.+/, /[ju,yu,e,i]|^$/, 0],
    ['вь', /.*/, /[ju,yu,e,i]/, 0]
  ],
  'x' => [
    ['кс', /.*/, /.*/, 1]
  ],
  'y' => [
    ['ы', /.*/, /.*/, 1]
  ],
  'z' => [
    ['з', /.*/, /.*/, 1],
    ['зь', /.*/, /[ja,ya,b,e,m,k]|^$/, 0]
  ],
  "'" => [
    ['ь', /.+/, /.*/, 0]
  ],
  # english letter combinations
  'ch' => [
    ['ч', /.*/, /.*/, 1],
    ['чь', /.*/, /[s,e,i,ja,ya,ju,yu,-]|^$/, 0]
  ],
  'кн' => [
    ['х', /.*/, /.*/, 1]
  ],
  'yu' => [
    ['ю', /.*/, /.*/, 1]
  ],
  'ya' => [
    ['я', /.*/, /.*/, 1]
  ],
  'yo' => [
    ['е', /.*/, /.*/, 1]
  ],
  'sh' => [
    ['ш', /.*/, /.*/, 1],
    ['шь', /.*/, /[ja,ya,e,s]|^$/, 0]
  ],
  'shch' => [
    ['щ', /.*/, /.*/, 1],
    ['щь', /.*/, /^$/, 0]
  ],
  'ts' => [
    ['ц', /.*/, /.*/, 1]
  ],
  'zh' => [
    ['ж', /.*/, /.*/, 1],
    ['жь', /.*/, /[e,i,ja,ya]|^$/, 0]
  ],
  # german letter combinations
  'sch' => [
    ['ш', /.*/, /.*/, 1], #de
    ['щ', /.*/, /.*/, 1], #en
    ['шь', /.*/, /^$/, 0]
    #maschadov ?
  ],
  'tsch' => [
    ['ч', /.*/, /.*/, 1],
    ['чь', /.*/, /[s,e,i,ja,ya,ju,yu,-]|^$/, 0]
  ],
  'schtsch' => [
    ['щ', /.*/, /.*/, 1]
  ],
  'ju' => [
    ['ю', /.*/, /.*/, 1]
  ],
  'ja' => [
    ['я', /.*/, /.*/, 1]
  ],
#    'je' => [
#      ['е', /.*/, /.*/, 1],
#      ['же', /.*/, /.*/, 1],
#    ],
  'jo' => [
    ['е', /.*/, /.*/, 1]
  ],
  'ä' => [
    ['я', /.*/, /.*/, 1]
  ],
  'ö' => [
    ['ё', /.*/, /.*/, 1]
  ],
  'ü' => [
    ['ю', /.*/, /.*/, 1]
  ],
  'ß' => [
    ['с', /.*/, /.*/, 1]
  ],
  'je' => [
    ['е', /.*/, /.*/, 1],
    #['йе', /.*/, /.*/, 1],
    ['же', /^$/, /.*/, 1]
  ]
  # TODO scientific letter combinations
}

Class Method Summary collapse

Class Method Details

.rulesObject



4
5
6
# File 'lib/detranslit_rules.rb', line 4

def self.rules
  RULES
end