pythonic_input

Main scripts is mod.ts.

Table of Contents

What and Why

Input is a module that is inspired by pythons input method. It allows writing to a Writer (like stdout) and waiting for input separated by a newline by reading from a Reader (such as stdin).

input module

Usage

input

The input method allows you to prompt the user on stdout and wait for a line of input on stdin. Throws on End of File.

Default signature:

type input = async (output?: string) => Promise<string>

input example:

import { input } from "https://raw.githubusercontent.com/johnsonjo4531/pythonic_input/0.0.0/input.ts";

(async () => {
    console.log("-- DENO ADDER --");
    // will throw if it hits End of File...
    const num1 = await input("Enter a number: ");
    const num2 = await input("Enter another number: ");
    console.log(`${num1} + ${num2} = ${Number(num1) + Number(num2)}`);
})();

inputNullable

The inputNullable method allows you to prompt the user on stdout and wait for a line of input on stdin. Returns null on End of File.

Default signature:

type inputNullable = async (output?: string) => Promise<string | null>

inputNullable example:

import { inputNullable } from "https://raw.githubusercontent.com/johnsonjo4531/pythonic_input/0.0.0/input.ts";

(async () => {
    console.log("-- DENO ADDER --");
    // will throw if it hits End of File...
    const num1 = await inputNullable("Enter a number: ");
    const num2 = await inputNullable("Enter another number: ");
    console.log(`${num1} + ${num2} = ${Number(num1) + Number(num2)}`);
})();

inputReader

The inputReader method allows you to create an input or inputNullable method of your own with different different input and output files besides stdin and stdout.

inputReader example:

import { inputReader } from "https://raw.githubusercontent.com/johnsonjo4531/pythonic_input/0.0.0/input.ts";

// you could substitute Deno.stdin and Deno.stdout with any open file (with appropriate permissions)
// or with a Deno Reader and Writer.
const input = inputReader(Deno.stdin, Deno.stdout, {
    // optional options can go here
});

// the below produces the same output as the input example
(async () => {
    console.log("-- DENO ADDER --");
    // get the next line throws if it reaches the EOF
    const num1 = String(await input("Enter a number: "));
    const num2 = String(await input("Enter another number: "));
    console.log(`${num1} + ${num2} = ${Number(num1) + Number(num2)}`);
})();

Examples

Input Program

An example using the input method is given in ./examples/input.ts

Try it out

$ deno https://raw.githubusercontent.com/johnsonjo4531/pythonic_input/0.0.0/examples/input.ts

Here's an example run of the program

$ deno https://raw.githubusercontent.com/johnsonjo4531/pythonic_input/0.0.0/examples/input.ts
-- DENO ADDER --
Enter a number: 2
Enter another number: 3
2 + 3 = 5

Examples

Cat Program using Input

See the ./examples/cat.ts for an example to run. You can compare this with the cat implementation on deno's examples in the std library.

This example:

$ time deno -A examples/cat.ts mobydick.txt

or if you didn't install it yet:

$ time deno -A https://raw.githubusercontent.com/johnsonjo4531/pythonic_input/0.0.0/examples/cat.ts mobydick.txt

Deno's cat example

$ time deno -A https://deno.land/std@v0.79.0/examples/cat.ts mobydick.txt

You can download the mobydick.txt from project gutenberg or curl it (Mac/Linux) from there like so:

$ curl https://www.gutenberg.org/files/2701/2701-0.txt -o mobydick.txt