0.1.0 • Published 6 years ago

tap-console v0.1.0

Weekly downloads
2
License
MIT
Repository
github
Last release
6 years ago

tap-console

A functional programming in mind console.log alternative that makes your life easier only a bit, inspired by Elm language's Debug.log

Install

npm i tap-console

or

yarn add tap-console

Motivation

The Problem

ES6 arrow function (=>) made it easy to write function literals. However, putting a debugging code in it sometimes turns out to be too painful in contrast to what you hope to do.

Suppose you're working with a code like this

const compare = (one, another) => Math.abs(one) - Math.abs(another);

arr.sort((a, b) => compare(a, b));

And you want to be sure that compare works as you expected.

You're to print what compare returns like this

...
arr.sort((a, b) => {
  const result = compare(a, b);
  console.log(a, b, result);
  return result;
});

or this

const compare = (one, another) => {
  const result = Math.abs(one) - Math.abs(another);
  console.log(one, another, result);
  return result;
};
...

or this (ok, it's just a debugging...)

...
arr.sort((a, b) => console.log(a, b, compare(a, b)) || compare(a, b));

Aren't these too tedious...?

A solution

Instead, using this library, do one of these

import { log } from "tap-console";
...
arr.sort((a, b) => log(a, b, compare(a, b)));
import { log } from "tap-console";

const compare = (one, another) =>
	log(one, another, Math.abs(one) - Math.abs(another));
...
...
arr.sort((a, b) => require("tap-console").log(a, b, compare(a, b)));
...
// shorthand for log() method
arr.sort((a, b) => require("tap-console")(a, b, compare(a, b)));

Usage

The only difference between the logger object that this library exports and the built-in console object is that each method of the former returns the last argument passed to it.

All the methods that the built-in console supports are supported. For example,

import tc from "tap-console";
...
const squares = tc.table([1, 3, 5].map(i => i * i)); // returns [1, 9, 25]

create method

This method allows you to create a custom print function.

import {create} from 'tap-console';

const show = create(value => window.alert(value));
const sum = show(1) + show(2); // returns 3

first method

Different from other methods, this method calls console.log internally and then returns the first argument. Useful when dealing with array methods such as map and filter.

[1, 2, 3, 4].map(tc.first); // returns [1, 2, 3, 4]

License

MIT.