Last active
August 29, 2015 14:03
-
-
Save DanielVartanov/f40004273692e2e95435 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- 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