lib/my_scripts/extensions.rb in my_scripts-0.0.7 vs lib/my_scripts/extensions.rb in my_scripts-0.0.9
- old
+ new
@@ -1,11 +1,43 @@
+# encoding: UTF-8
+
class String
+ TRANSLIT_CYRILLIC = 'АБВГДЕЁЗИЙКЛМНОПРСТУФЪЫЬЭабвгдеёзийклмнопрстуфъыьэ'
+ TRANSLIT_LATIN = "ABVGDEEZIJKLMNOPRSTUF\"Y'Eabvgdeezijklmnoprstuf\"y'e"
+ TRANSLIT_DOUBLES = {'Ж'=>'ZH', 'Х'=>'KH', 'Ц'=>'TS', 'Ч'=>'CH', 'Ш'=>'SH', 'Щ'=>'SHCH', 'Ю'=>'YU', 'Я'=>'YA',
+ 'ж'=>'zh', 'х'=>'kh', 'ц'=>'ts', 'ч'=>'ch', 'ш'=>'sh', 'щ'=>'shch', 'ю'=>'yu', 'я'=>'ya'}
+
+ # Performs basic transliteration from Cyrillic to Latin characters and standard character combinations
+ def translit!
+ TRANSLIT_DOUBLES.each {|key, value| self.gsub!(key, value)}
+ self.tr!(TRANSLIT_CYRILLIC, TRANSLIT_LATIN)
+ self
+ end
+
# Turns string into appropriate class constant, returns nil if class not found
def to_class
klass = self.split("::").inject(Kernel) do |namespace, const|
const == '' ? namespace : namespace.const_get(const)
end
klass.is_a?(Class) ? klass : nil
rescue NameError
nil
+ end
+
+ # Turns string into snake_case
+ def snake_case
+ gsub(/([a-z])([A-Z0-9])/, '\1_\2' ).downcase
+ end
+
+ # Turns string into CamelCase
+ def camel_case
+ if self.include? '_'
+ self.split('_').map{|e| e.capitalize}.join
+ else
+ unless self =~ (/^[A-Z]/)
+ self.capitalize
+ else
+ self
+ end
+ end
end
end