summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/figgy-pudding/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/figgy-pudding/README.md')
-rw-r--r--deps/npm/node_modules/figgy-pudding/README.md149
1 files changed, 149 insertions, 0 deletions
diff --git a/deps/npm/node_modules/figgy-pudding/README.md b/deps/npm/node_modules/figgy-pudding/README.md
new file mode 100644
index 0000000000..8fbc9e15a0
--- /dev/null
+++ b/deps/npm/node_modules/figgy-pudding/README.md
@@ -0,0 +1,149 @@
+# figgy-pudding [![npm version](https://img.shields.io/npm/v/figgy-pudding.svg)](https://npm.im/figgy-pudding) [![license](https://img.shields.io/npm/l/figgy-pudding.svg)](https://npm.im/figgy-pudding) [![Travis](https://img.shields.io/travis/zkat/figgy-pudding.svg)](https://travis-ci.org/zkat/figgy-pudding) [![AppVeyor](https://ci.appveyor.com/api/projects/status/github/zkat/figgy-pudding?svg=true)](https://ci.appveyor.com/project/zkat/figgy-pudding) [![Coverage Status](https://coveralls.io/repos/github/zkat/figgy-pudding/badge.svg?branch=latest)](https://coveralls.io/github/zkat/figgy-pudding?branch=latest)
+
+# Death to the God Object! Now Bring Us Some Figgy Pudding!
+
+[`figgy-pudding`](https://github.com/zkat/figgy-pudding) is a simple JavaScript library for managing and composing cascading options objects -- hiding what needs to be hidden from each layer, without having to do a lot of manual munging and passing of options.
+
+## Install
+
+`$ npm install figgy-pudding`
+
+## Table of Contents
+
+* [Example](#example)
+* [Features](#features)
+* [API](#api)
+ * [`figgyPudding(spec)`](#figgy-pudding)
+ * [`Opts(values)`](#opts)
+ * [`opts.get()`](#opts-get)
+ * [`opts.concat()`](#opts-concat)
+
+### Example
+
+```javascript
+const puddin = require('figgyPudding')
+
+const RequestOpts = puddin({
+ follow: {
+ default: true
+ },
+ streaming: {
+ default: false
+ },
+ log: {
+ default: require('npmlog')
+ }
+})
+
+const MyAppOpts = puddin({
+ log: {
+ default: require('npmlog')
+ },
+ cache: {
+ default: './cache'
+ }
+})
+
+function start (opts) {
+ opts = MyAppOpts(opts)
+ initCache(opts.get('cache'))
+ opts.get('streaming') // => undefined
+ reqStuff('https://npm.im/figgy-pudding', opts)
+}
+
+function reqStuff (uri, opts) {
+ opts = RequestOpts(opts)
+ require('request').get(uri, opts) // can't see `cache`
+}
+```
+
+### Features
+
+* Hide options from layer that didn't ask for it
+* Shared multi-layer options
+
+### API
+
+#### <a name="figgy-pudding"></a> `> figgyPudding({ key: { default: val } | String }, [opts])`
+
+Defines an Options constructor that can be used to collect only the needed
+options.
+
+An optional `default` property for specs can be used to specify default values
+if nothing was passed in.
+
+If the value for a spec is a string, it will be treated as an alias to that
+other key.
+
+##### Example
+
+```javascript
+const MyAppOpts = figgyPudding({
+ lg: 'log',
+ log: {
+ default: () => require('npmlog')
+ },
+ cache: {}
+})
+```
+
+#### <a name="opts"></a> `> Opts(...providers)`
+
+Instantiates an options object defined by `figgyPudding()`, which uses
+`providers`, in order, to find requested properties.
+
+Each provider can be either a plain object, a `Map`-like object (that is, one
+with a `.get()` method) or another figgyPudding `Opts` object.
+
+When nesting `Opts` objects, their properties will not become available to the
+new object, but any further nested `Opts` that reference that property _will_ be
+able to read from their grandparent, as long as they define that key. Default
+values for nested `Opts` parents will be used, if found.
+
+##### Example
+
+```javascript
+const ReqOpts = figgyPudding({
+ follow: {}
+})
+
+const opts = ReqOpts({
+ follow: true,
+ log: require('npmlog')
+})
+
+opts.get('follow') // => true
+opts.get('log') // => Error: ReqOpts does not define `log`
+
+const MoreOpts = figgyPudding({
+ log: {}
+})
+MoreOpts(opts).get('log') // => npmlog object (passed in from original plain obj)
+MoreOpts(opts).get('follow') // => Error: MoreOpts does not define `follow`
+```
+
+#### <a name="opts-get"></a> `> opts.get(key)`
+
+Gets a value from the options object.
+
+##### Example
+
+```js
+const opts = MyOpts(config)
+opts.get('foo') // value of `foo`
+```
+
+#### <a name="opts-concat"></a> `> opts.concat(...moreProviders)`
+
+Creates a new opts object of the same type as `opts` with additional providers.
+Providers further to the right shadow providers to the left, with properties in
+the original `opts` being shadows by the new providers.
+
+##### Example
+
+```js
+const opts = MyOpts({x: 1})
+opts.get('x') // 1
+opts.concat({x: 2}).get('x') // 2
+opts.get('x') // 1 (original opts object left intact)
+```