GithubHelp home page GithubHelp logo

isabella232 / node-asana-phrase Goto Github PK

View Code? Open in Web Editor NEW

This project forked from asana/node-asana-phrase

0.0 0.0 0.0 168 KB

A random error phrase generator used to create memorable error codes, as used by Asana.

License: MIT License

JavaScript 100.00%

node-asana-phrase's Introduction

Asana Error Phrase Factory GitHub release Build Status NPM Version

A random phrase generator used to create memorable error codes, as used by Asana.

Installation

Node

Install with npm:

npm install asana-phrase --save

Browser

Include the latest release directly from GitHub.

<script src="https://github.com/Asana/node-asana-phrase/releases/download/<LATEST_RELEASE>/asana-phrase-min.js"></script>

OR

  1. Download the latest distribution in releases.
  2. Make sure to serve it from your webserver.
  3. Include it on the client from a SCRIPT tag.

Overview

This package is designed to convert large numbers (like IDs) into human-readable phrases, which are more entertaining and memorable, and suitable for error codes.

The package can support conversion of numbers of arbitrary length if represented as a hex string, as well as integers up to 53 bits. The default phrase factory provided converts 32-bit numbers, but custom ones can be created to work with larger bit sizes.

It operates on a simple bitwise substitution principle, so given a particular phrase factory, there is a deterministic way to map any set of bits into a phrase and vice versa.

Usage

If you just want 32-bit numbers translated to phrases in the same way Asana does, you can use the default phrase factory.

var phrase = require('asana-phrase');
phrase.default32BitFactory().randomPhrase();

>>> ["6", "sad", "squid", "snuggle", "softly"]

If you want to customize the generated phrases (or create ones with a larger bit space), you can very easily add your own word generators. There are two predefined types of word generator: Dictionary and NumberRange, which you can plug into the Factory to make your own combinations. You can also access the dictionaries that comprise the default phrase factory so you can leverage it in your custom factory:

var factory = new phrase.Factory([
  new phrase.Dictionary(phrase.dictionaries.subjects),
  new phrase.Dictionary(phrase.dictionaries.verbs),
  new phrase.Dictionary(["with", "against", "for", "around"]),
  new phrase.Dictionary(phrase.dictionaries.subjects)
]);
factory.randomPhrase();

>>> ["trout", "behave", "around", "sharks"]

If you want some logic that isn't based on making sequential numbers or choosing words from a dictionary, it's very easy to make your own word generator. Simply subclass WordGenerator and fulfill its simple contract.

node-asana-phrase's People

Contributors

slobak 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.