From cffc3552b0853c75f41b92ed2c032988df018442 Mon Sep 17 00:00:00 2001 From: Sindre Sorhus Date: Sat, 3 Aug 2013 02:16:26 +0200 Subject: [PATCH] init --- .editorconfig | 12 +++++ .gitattributes | 1 + .gitignore | 1 + .jshintrc | 20 ++++++++ .travis.yml | 4 ++ chalk.js | 64 +++++++++++++++++++++++++ package.json | 55 ++++++++++++++++++++++ readme.md | 125 +++++++++++++++++++++++++++++++++++++++++++++++++ screenshot.png | Bin 0 -> 32609 bytes test.js | 37 +++++++++++++++ 10 files changed, 319 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .jshintrc create mode 100644 .travis.yml create mode 100644 chalk.js create mode 100644 package.json create mode 100644 readme.md create mode 100644 screenshot.png create mode 100644 test.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..b0d7fd9 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# editorconfig.org +root = true + +[*] +indent_style = tab +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..176a458 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..ac35c13 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,20 @@ +{ + "node": true, + "esnext": true, + "bitwise": true, + "camelcase": true, + "curly": true, + "eqeqeq": true, + "immed": true, + "indent": 4, + "latedef": true, + "newcap": true, + "noarg": true, + "quotmark": "single", + "regexp": true, + "undef": true, + "unused": true, + "strict": true, + "trailing": true, + "smarttabs": true +} diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..2cdacaf --- /dev/null +++ b/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - '0.10' + - '0.8' diff --git a/chalk.js b/chalk.js new file mode 100644 index 0000000..d4887e1 --- /dev/null +++ b/chalk.js @@ -0,0 +1,64 @@ +'use strict'; +var ansi = require('ansi-styles'); +var defineProps = Object.defineProperties; + +var styles = (function () { + var ret = {}; + + Object.keys(ansi).forEach(function (key) { + var code = ansi[key]; + ret[key] = { + enumerable: true, + get: function () { + this._styles.push(code); + return this; + } + }; + }); + + return ret; +})(); + +var chalk = module.exports = defineProps({}, init()); + +function init() { + var ret = {}; + + Object.keys(styles).forEach(function (name) { + var code = styles[name]; + + ret[name] = { + enumerable: true, + get: function () { + var obj = defineProps(function self(str) { + if (!chalk.enabled) { + return str; + } + + return self._styles.reduce(function (str, code) { + return code + (str || ''); + }, str) + ansi['reset']; + }, styles); + + obj._styles = []; + + return obj[name]; + } + } + }); + + return ret; +} + +chalk.styles = ansi; + +chalk.stripColor = function (str) { + return str.replace(/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]/g, ''); +}; + +chalk.supportsColor = require('has-color'); + +// detect mode if not set manually +if (chalk.enabled === undefined) { + chalk.enabled = chalk.supportsColor; +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..9433840 --- /dev/null +++ b/package.json @@ -0,0 +1,55 @@ +{ + "name": "chalk", + "version": "0.0.0", + "description": "Terminal string styling done right", + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "ansi", + "styles", + "tty", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "homepage": "https://github.com/sindresorhus/chalk", + "bugs": "https://github.com/sindresorhus/chalk/issues", + "license": "MIT", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "files": [ + "chalk.js" + ], + "main": "chalk", + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/chalk.git" + }, + "scripts": { + "test": "mocha" + }, + "dependencies": { + "has-color": "~0.1.0", + "ansi-styles": "~0.1.0" + }, + "devDependencies": { + "mocha": "~1.12.0" + }, + "engines": { + "node": ">=0.8.0" + } +} diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..8fba39d --- /dev/null +++ b/readme.md @@ -0,0 +1,125 @@ +# chalk [![Build Status](https://secure.travis-ci.org/sindresorhus/chalk.png?branch=master)](http://travis-ci.org/sindresorhus/chalk) + +> Terminal string styling done right. + +[colors.js](https://github.com/Marak/colors.js) is currently the most popular coloring module, but it has serious deficiencies like extending String.prototype which causes all kinds of problems. Although there are other ones, they either do too much or not enough. + +**Chalk is a clean and focused alternative.** + +![screenshot](screenshot.png) + + +## Why + +- **Doesn't extend String.prototype** +- Expressive API +- Auto-detects color support +- Actively maintained + + +## Install + +Install with [npm](https://npmjs.org/package/chalk): `npm install --save chalk` + + +## Example + +Chalk comes with an easy to use composable API where you just chain the styles you want. + +```js +var chalk = require('chalk'); + +// style a string +console.log(chalk.blue('Hello world!')); + +// combine styled and normal strings +console.log(chalk.blue('Hello') + 'World' + chalk.red('!')); + +// compose multiple styles using the chainable API +console.log(chalk.blue.bgRed.bold('Hello world!')); +``` + +You can easily define your own themes. + +```js +var chalk = require('chalk'); +var error = chalk.bold.red; +console.log(error('Error!')); +``` + + +## API + +### chalk.\\[.\...\](string) + +Chain [styles](#Styles) and call the last one as a method with a string argument. + + +### chalk.enabled + +Color support is automatically detected, but you can override it. + +### chalk.supportsColor + +Detect whether the terminal [supports color](https://github.com/sindresorhus/has-color). + +Can be overridden by the user with the flags `--color` and `--no-color`. + +Used internally and handled for you, but exposed for convenience. + +### chalk.styles + +Exposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles). + +```js +var chalk = require('chalk'); +console.log(chalk.styles.red); +//=> \x1b[31m +``` + +### chalk.stripColor(string) + +Strip color from a string. + + +## Styles + +### General + +- reset +- bold +- italic +- underline +- blink +- inverse +- strikethrough + +### Text colors + +- black +- red +- green +- yellow +- blue +- magenta +- cyan +- white +- default +- gray + +### Background colors + +- bgBlack +- bgRed +- bgGreen +- bgYellow +- bgBlue +- bgMagenta +- bgCyan +- bgWhite +- bgDefault + + +## License + +MIT License • © [Sindre Sorhus](http://sindresorhus.com) diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..a794efa83cdeec903611c644bd4245c0009c1e67 GIT binary patch literal 32609 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

Z+o`KPjQgxNfO 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