Рубин? Как игнорировать символы новой строки в вырезанном и вставленном пользовательском вводе? - PullRequest
2 голосов
/ 03 марта 2009

Я написал небольшой скрипт на Ruby, который требует некоторого пользовательского ввода. Я предполагаю, что пользователи могут быть немного ленивыми в какой-то момент во время ввода данных, когда требуются длинные записи, и что они могут вырезать и вставлять из другого документа, содержащего новые строки.

Я играю с самоцветом Highline и мне это очень нравится. Я подозреваю, что я просто что-то упустил в документах, но есть ли способ получить многострочный ввод переменной длины?

Редактировать: Проблема в том, что символ новой строки завершает ввод, а символы после новой строки заканчиваются вводом для следующего вопроса.

Ответы [ 2 ]

5 голосов
/ 03 марта 2009

Вот что автор использует в своем примере: (из highline-1.5.0 / examples)

#!/usr/local/bin/ruby -w

# asking_for_arrays.rb
#
#  Created by James Edward Gray II on 2005-07-05.
#  Copyright 2005 Gray Productions. All rights reserved.

require "rubygems"
require "highline/import"
require "pp"

grades = ask( "Enter test scores (or a blank line to quit):",
              lambda { |ans| ans =~ /^-?\d+$/ ? Integer(ans) : ans} ) do |q|
  q.gather = ""
end

say("Grades:")
pp grades

Общая документация по HighLine::Question#gather (из highline-1.5.0 / lib / highline / question.rb)

# When set, the user will be prompted for multiple answers which will
# be collected into an Array or Hash and returned as the final answer.
#
# You can set _gather_ to an Integer to have an Array of exactly that
# many answers collected, or a String/Regexp to match an end input which
# will not be returned in the Array.
#
# Optionally _gather_ can be set to a Hash.  In this case, the question
# will be asked once for each key and the answers will be returned in a
# Hash, mapped by key.  The <tt>@key</tt> variable is set before each
# question is evaluated, so you can use it in your question.
#
attr_accessor :gather

Похоже, это ваши основные параметры в библиотеке. Что-нибудь еще, ты должен сделать сам.

0 голосов
/ 03 марта 2009

Не будет ли это что-то вроде:

input.gsub!('\r\n', '')
...