std/rdstdin

Source   Edit  

This module contains code for reading from stdin. On UNIX the linenoise library is wrapped and set up to provide default key bindings (e.g. you can navigate with the arrow keys). On Windows system.readLine is used. This suffices because Windows' console already provides the wanted functionality.

Example: cmd: -r:off

import std/rdstdin
echo readLineFromStdin("Is Nim awesome? (Y/n): ")
var line: string
while true:
  let ok = readLineFromStdin("How are you? ", line)
  if not ok: break # ctrl-C or ctrl-D will cause a break
  if line.len > 0: echo line
echo "exiting"

Procs

proc readLineFromStdin(prompt: string): string {.
    ...tags: [ReadIOEffect, WriteIOEffect], raises: [IOError, EOFError],
    forbids: [].}
Reads a line from stdin. Source   Edit  
proc readLineFromStdin(prompt: string; line: var string): bool {.
    ...tags: [ReadIOEffect, WriteIOEffect], raises: [IOError], forbids: [].}
Reads a line from stdin. line must not be nil! May throw an IO exception. A line of text may be delimited by CR, LF or CRLF. The newline character(s) are not part of the returned string. Returns false if the end of the file has been reached, true otherwise. If false is returned line contains no new data. Source   Edit