• Stars
    star
    994
  • Rank 46,081 (Top 1.0 %)
  • Language
    JavaScript
  • License
    Other
  • Created about 12 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

cowsay is a configurable talking cow

cowsay

 __________________
< srsly dude, why? >
 ------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

cowsay is a configurable talking cow, originally written in Perl by Tony Monroe

This project is a translation in JavaScript of the original program and an attempt to bring the same silliness to node.js.

Install

npm install -g cowsay

Usage

cowsay JavaScript FTW!

or

cowthink node.js is cool

It acts in the same way as the original cowsay, so consult cowsay(1) or run cowsay -h

 ________
< indeed >
 --------
    \
     \
                                   .::!!!!!!!:.
  .!!!!!:.                        .:!!!!!!!!!!!!
  ~~~~!!!!!!.                 .:!!!!!!!!!UWWW$$$
      :$$NWX!!:           .:!!!!!!XUWW$$$$$$$$$P
      $$$$$##WX!:      .<!!!!UW$$$$"  $$$$$$$$#
      $$$$$  $$$UX   :!!UW$$$$$$$$$   4$$$$$*
      ^$$$B  $$$$\     $$$$$$$$$$$$   d$$R"
        "*$bd$$$$      '*$$$$$$$$$$$o+#"
             """"          """""""

Usage as a module

cowsay can be used as any other npm dependency

var cowsay = require("cowsay");

console.log(cowsay.say({
    text : "I'm a moooodule",
    e : "oO",
    T : "U "
}));

// or cowsay.think()
 _________________
( I'm a moooodule )
 -----------------
        o   ^__^
         o  (oO)\_______
            (__)\       )\/\
             U  ||----w |
                ||     ||

getting a list of cow names:

function get_cows(error, cow_names) {
    if (error) {
        console.log(error)
    }
    else if (cow_names) {
        console.log(`Number of cows available: ${cow_names.length}`);
    }
}

cowsay.list(get_cows);

Typescript examples:

import * as cowsay from "cowsay"

let output: string = cowsay.say({ text: 'Hello from typescript!' });

console.log(output);

getting a list of cow names:

function get_cows(error: NodeJS.ErrnoException, cow_names: Array<string>): void {
    if (error) {
        console.log(`Error getting cow names: ${error.message}`)
    }
    else if (cow_names) {
        console.log(`Number of cows available: ${cow_names.length}`);
    }
}

cowsay.list(get_cows);

importing the IOptions interface directly:

import { IOptions } from "cowsay" // optional

let opts: IOptions = {
    text: "Hello from TypeScript!",
    e: '^^',
    r: true,
};

console.log(cowsay.say(opts));

Pipe from standard input

echo please repeat | cowsay

Usage in the browser

cowsay works in your browser too with rollup / webpack / browserify / you name it.

import { say } from 'cowsay';

console.log(say({ text: 'grazing in the browser' }));

You can customize the cow by importing the relevant one

import { think, SQUIRREL } from 'cowsay';

console.log(think({
  text: 'grazing in the browser',
  cow: SQUIRREL,
  eyes: 'pp',
  tongue: ';;',
}));

All cows are included in the bundle, but you can use rollup / webpack tree-shake feature to reduce the final bundle size.

Browser options

say({
  text: 'hello',
  cow: '', // Template for a cow, get inspiration from `./cows`
  eyes: 'oo', // Select the appearance of the cow's eyes, equivalent to cowsay -e
  tongue: 'L|', // The tongue is configurable similarly to the eyes through -T and tongue_string, equivalent to cowsay -T
  wrap: false, // If it is specified, the given message will not be word-wrapped. equivalent to cowsay -n
  wrapLength: 40, // Specifies roughly where the message should be wrapped. equivalent to cowsay -W
  mode: 'b', // One of 	"b", "d", "g", "p", "s", "t", "w", "y"
});

More Repositories

1

git-promise

Simple wrapper to run any git command and process it's output using promises.
JavaScript
99
star
2

node-coverage

Compute different coverage metrics of your JavaScript application or test suite with node.js
JavaScript
72
star
3

prerender-chrome-headless

Pre-render single page applications to static HTML file
JavaScript
33
star
4

react-intl-formatted-duration

React intl component to express time duration
JavaScript
32
star
5

sublime-esformatter

JavaScript formatter plugin for Sublime Text
Python
28
star
6

rollup-plugin-amd

Convert AMD files to ES2016 modules
JavaScript
22
star
7

intl-unofficial-duration-unit-format

Unofficial implementation of time duration UnitFormat
JavaScript
14
star
8

open-data-jp-railway-stations

List of Japanese railway stations in an accessible format
JavaScript
13
star
9

rocambole-visualize

Easily display rocambole tree in a browser
JavaScript
12
star
10

html-to-json-data

Extract data from an HTML page
JavaScript
9
star
11

esformatter-diff

Compute the difference between your code and the formatted version with esformatter
JavaScript
6
star
12

open-data-jp-railway-lines

List of Japanese railway lines in an accessible format
JavaScript
5
star
13

jspm-check-updates

Check jspm dependencies for outdated packages
JavaScript
5
star
14

multimodal-isochrones

Compute lines of equal travel times (isochrones) in a multimodal transport graph
JavaScript
5
star
15

open-data-jp-prefectures-geojson

GeoJSON of Japanese prefectures and utilities to access it
JavaScript
5
star
16

open-data-jp-prefectures

List of Japanese prefectures in an accessible format
JavaScript
5
star
17

open-data-jp-municipalities

List of Japanese municipalities in an accessible format
JavaScript
4
star
18

simple-get-promise

Simple modern way to make http requests. Supports HTTPS, ES6, JSON and Promises
JavaScript
3
star
19

open-data-jp-zip-code

List of Japanese zipcodes in an accessible format
JavaScript
3
star
20

open-data-jp-railway-operators

List of Japanese railway operators in an accessible format.
JavaScript
2
star
21

open-data-jp-tokyo-railway-operators

List of Japanese railway operators in an accessible format
HTML
2
star
22

flat-earth

Modern set of functions for handling coordinates in Node.js or the browser
JavaScript
2
star
23

wikipedia-jp-railway-lines

List of Japanese railway lines extracted from Wikipedia
JavaScript
1
star
24

open-data-jp-olympic-venues-2020

List of olympic venues in an accessible format
JavaScript
1
star
25

open-data-jp-railway-lines-logo

List of Japanese railway logos in an accessible format
JavaScript
1
star