convert (HighLine::Question)

    # File lib/highline/question.rb, line 302
        def convert( answer_string )
          if @answer_type.nil?
            answer_string
          elsif [Float, Integer, String].include?(@answer_type)
            Kernel.send(@answer_type.to_s.to_sym, answer_string)
          elsif @answer_type == Symbol
            answer_string.to_sym
          elsif @answer_type == Regexp
            Regexp.new(answer_string)
          elsif @answer_type.is_a?(Array) or [File, Pathname].include?(@answer_type)
            # cheating, using OptionParser's Completion module
            choices = selection
            choices.extend(OptionParser::Completion)
            answer = choices.complete(answer_string)
            if answer.nil?
              raise NoAutoCompleteMatch
            end
            if @answer_type.is_a?(Array)
              answer.last
            elsif @answer_type == File
              File.open(File.join(@directory.to_s, answer.last))
            else
              Pathname.new(File.join(@directory.to_s, answer.last))
            end
          elsif [Date, DateTime].include?(@answer_type) or @answer_type.is_a?(Class)
            @answer_type.parse(answer_string)
          elsif @answer_type.is_a?(Proc)
            @answer_type[answer_string]
          end
        end