Skip to content

Instantly share code, notes, and snippets.

@gorborukov
Last active March 29, 2016 23:33
Show Gist options
  • Save gorborukov/4292675032f3556dbdc7cbecc42c83a3 to your computer and use it in GitHub Desktop.
Save gorborukov/4292675032f3556dbdc7cbecc42c83a3 to your computer and use it in GitHub Desktop.
def split_name(name) # Метод для разделения полного ФИО на отдельные объекты
data = name.split(' ') # Превращаем полное имя в массив
result = { # Помещаем разделенные данные в хэш
lastname: data[0],
firstname: data[1],
secondname: data.drop(2).map(&:inspect).join(' ').gsub('"', '') # Оставляем в secondname ячейки массива после второй, убираем лишние символы
}
return result.map{|i,j|"#{i}: #{j}\n"}.join(' ') # Возврат хэша в читабельном виде, убираем лишние символы и т.д.
end
def print_name(name) # Метод для вывода имени
if name.kind_of?(Array) # Если введено полное имя раздельно
puts name.map(&:inspect).join(' ').gsub('"', '') # Выводим в одну строку
puts 'lastname: ' + name[0],
"firstname: " + name[1],
"secondname: " + name.drop(2).map(&:inspect).join(' ').gsub('"', '') #Выводим раздельно
else # Если введено полное имя
puts "fullname: " + name + "\n" + split_name(name) # Выводим в одну строку и раздельно
end
end
# Простейшая логика для передачи параметров в командной строке
# ruby name.rb "f" "Иванов Иван Иванович" – обработка полного ФИО
# ruby name.rb "s" "Иванов" "Иван" "Иванович" – обработка фамилиии имени и отчества раздельно
if ARGV[0] == "f" && ARGV[1].split.length > 2 # Если ФИО передано полностью и содержит больше двух слов
print_name(ARGV[1])
elsif ARGV[0] == "s" && ARGV.length > 2 # Если ФИО передано раздельно и содержит больше двух слов
print_name(ARGV.drop(1)) # Помещаем все кроме первого аргумента (флага) в массив и передаем методу
else
puts "Incorrect input data"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment