Giter VIP home page Giter VIP logo

gbd's Introduction

๐Ÿธ gbd.macro

gbd.macro is a babel plugin macro that "prints and returns the value of a given expression for quick and dirty debugging". It is a shameless port of rust's dbg! macro.

gbd.macro is Typescript ready!


How to use

npm install gbd.macro --save-dev
yarn add gbd.macro -D

Examples

import { gbd } from 'gbd.macro';

function trimAll = (strings: string[]) => strings.map(str => gbd(str.trim()));

console.log(
    "Result: ",
    trimAll([" hi ", " everyone! "]).join(' ')
);
# Prints


> str.trim()
= "hi"

> str.trim()
= "everyone"

"Result: hi everyone!

import { gbd } from "gbd.macro";

const a = 2;
const b = gbd(a * 2) + 1;

b === 5; // true
# Prints

> a * 2
= 4

import { gbd } from "gbd.macro";

function foo(n: number) {
  if (gbd(n / 4) === 0) {
    // Do something
  }
}

foo(3);
# Prints

> n / 4
= 0.75

import { gbd } from 'gbd.macro';

function factorial(n: number): number {
    if gbd(n <= 1) {
        return gbd(1);
    } else {
        return gbd(n * factorial(n - 1))
    }
}

gbd(factorial(4));
# Prints

> n <= 1
= false

> n <= 1
= false

n <= 1
= false

n <= 1
= true

> 1
= 1

> n * factorial(n - 1)
= 2

> n * factorial(n - 1)
= 6

> n * factorial(n - 1)
= 24

> factorial(4)
= 24

How it works

When you use gbd.macro, the following transformation happens:

import { gbd } from 'gbd.macro';

gbd(1 + 2);

      โ†“ โ†“ โ†“ โ†“ โ†“ โ†“

import { gbd } from 'gbd';

gbd(1 + 2, "1 + 2");

gbd is implemented roughly as follows:

import format from "pretty-format";

export function gbd(val, expr) {
  console.debug(`> ${expr}\n= ${format(val)}`);
  return val;
}

Inspiration

License

MIT

gbd's People

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.