'Process data block for INPUT token.'

def process_input(self, data, input_prompt, lineno):

    (decorator, input, rest) = data
    image_file = None
    image_directive = None
    is_verbatim = ((decorator == '@verbatim') or self.is_verbatim)
    is_doctest = ((decorator == '@doctest') or self.is_doctest)
    is_suppress = ((decorator == '@suppress') or self.is_suppress)
    is_okexcept = ((decorator == '@okexcept') or self.is_okexcept)
    is_savefig = ((decorator is not None) and decorator.startswith('@savefig'))
    input_lines = input.split('\n')
    self.datacontent = data
    continuation = ('            %s:' % ''.join((['.'] * (len(str(lineno)) + 2))))
    if is_savefig:
        (image_file, image_directive) = self.process_image(decorator)
    ret = []
    is_semicolon = False
    store_history = True
    for (i, line) in enumerate(input_lines):
        if line.endswith(';'):
            is_semicolon = True
        if (is_semicolon or is_suppress):
            store_history = False
        if (i == 0):
            if is_verbatim:
                self.process_input_line('')
                self.IP.execution_count += 1
            else:
                self.process_input_line(line, store_history=store_history)
            formatted_line = ('%s    %s' % (input_prompt, line))
        else:
            if (not is_verbatim):
                self.process_input_line(line, store_history=store_history)
            formatted_line = ('%s%s' % (continuation, line))
        if (not is_suppress):
            ret.append(formatted_line)
    if (not is_suppress):
        if len(rest.strip()):
            if is_verbatim:
                ret.append(rest)
    self.cout.seek(0)
    output = self.cout.read()
    if ((not is_suppress) and (not is_semicolon)):
        ret.append(output.decode('utf-8'))
    if ((not is_okexcept) and ('Traceback' in output)):
        sys.stdout.write(output)
    self.cout.truncate(0)
    return (ret, input_lines, output, is_doctest, image_file, image_directive)
