Skip to content

Instantly share code, notes, and snippets.

@DanielVartanov
Last active August 29, 2015 14:03
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DanielVartanov/f40004273692e2e95435 to your computer and use it in GitHub Desktop.
Save DanielVartanov/f40004273692e2e95435 to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
require 'active_support/all'
module RАлфавит
class << self
attr_accessor :жумшак_үнсүздөр, :каткалаң_үнсүздөр, :үнсүздөр, :үндүүлөр
end
self.үндүүлөр = %w(а е ё и о ө у ү ы э ю я).freeze
self.жумшак_үнсүздөр = %w(б в г д ж з л м н р).freeze
self.каткалаң_үнсүздөр = %w(к п с т ф х ц ч ш щ).freeze
self.үнсүздөр = жумшак_үнсүздөр + каткалаң_үнсүздөр
end
module RКыргызТили
module StringEnchancements
def үнсүз?
last.in? RАлфавит.үнсүздөр
end
def үндүү?
last.in? RАлфавит.үндүүлөр
end
def илик_жөндөмөгө
RЖөндөмөлөр::RИлик.колдон(self)
end
end
end
String.class_eval do
include RКыргызТили::StringEnchancements
end
module RЖөндөмөлөр
class RИлик
def self.колдон(сап)
акыркы_тыбыш = сап.last
акыркы_муун = сап.last(2)
мүчөлөр = {
:нын => lambda do
акыркы_тыбыш.in? %w(я а ы)
end,
:нин => lambda do
акыркы_тыбыш.in? %w(э е и)
end,
:нун => lambda do
акыркы_тыбыш.in? %w(ё о у)
end,
:нүн => lambda do
акыркы_тыбыш.in? %w(ю ө ү)
end,
:дын => lambda do
акыркы_тыбыш.үнсүз? &&
акыркы_муун.in?(%w(я а ы).product(RАлфавит.жумшак_үнсүздөр).map(&:join))
end,
:дин => lambda do
акыркы_тыбыш.үнсүз? &&
акыркы_муун.in?(%w(э е и).product(RАлфавит.жумшак_үнсүздөр).map(&:join))
end,
:дун => lambda do
акыркы_тыбыш.үнсүз? &&
акыркы_муун.in?(%w(ё о у).product(RАлфавит.жумшак_үнсүздөр).map(&:join))
end,
:дүн => lambda do
акыркы_тыбыш.үнсүз? &&
акыркы_муун.in?(%w(ю ө ү).product(RАлфавит.жумшак_үнсүздөр).map(&:join))
end,
:тын => lambda do
акыркы_тыбыш.үнсүз? &&
акыркы_муун.in?(%w(я а ы).product(RАлфавит.каткалаң_үнсүздөр).map(&:join))
end,
:тин => lambda do
акыркы_тыбыш.үнсүз? &&
акыркы_муун.in?(%w(э е и).product(RАлфавит.каткалаң_үнсүздөр).map(&:join))
end,
:тун => lambda do
акыркы_тыбыш.үнсүз? &&
акыркы_муун.in?(%w(ё о у).product(RАлфавит.каткалаң_үнсүздөр).map(&:join))
end,
:түн => lambda do
акыркы_тыбыш.үнсүз? &&
акыркы_муун.in?(%w(ю ө ү).product(RАлфавит.каткалаң_үнсүздөр).map(&:join))
end
}
мүчө = мүчөлөр.keys.find do |мүчө|
мүчөлөр[мүчө].call
end.to_s
сап + мүчө
end
end
end
puts 'өпкө'.илик_жөндөмөгө
puts 'жүрөк'.илик_жөндөмөгө
puts 'Никита'.илик_жөндөмөгө
puts 'Малик'.илик_жөндөмөгө
puts 'Даниил'.илик_жөндөмөгө
puts 'Калыс'.илик_жөндөмөгө
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment