diff --git a/lib/fp/build-doc.js b/lib/fp/build-doc.js index 0e9bd604a..b67c88132 100644 --- a/lib/fp/build-doc.js +++ b/lib/fp/build-doc.js @@ -1,9 +1,45 @@ 'use strict'; +var _ = require('lodash'), + fs = require('fs-extra'), + path = require('path'), + util = require('../common/util'); + +var basePath = path.join(__dirname, '..', '..'), + docPath = path.join(basePath, 'doc'), + readmePath = path.join(docPath, 'FP-Guide.md'); + +var mapping = require('../../fp/_mapping'), + templatePath = path.join(__dirname, 'template/doc'), + template = util.globTemplate(path.join(templatePath, '*.jst')); + +var templateData = { + 'mapping': mapping, + 'toFuncList': toFuncList +}; + +function toFuncList(array) { + var chunks = _.chunk(array.slice().sort(), 5), + lastChunk = _.last(chunks), + last = lastChunk ? lastChunk.pop() : undefined; + + var result = '`' + _.map(chunks, function(chunk) { + return chunk.join('`, `') + '`'; + }).join(',\n`'); + + return result + (last == null ? '' : (', & `' + last + '`')); +} + /*----------------------------------------------------------------------------*/ -function build(type) { - +function onComplete(error) { + if (error) { + throw error; + } } -build(_.last(process.argv)); +function build() { + fs.writeFile(readmePath, template.wiki(templateData), onComplete); +} + +build(); diff --git a/lib/fp/template/doc/wiki.jst b/lib/fp/template/doc/wiki.jst index 8b1378917..6cc54e554 100644 --- a/lib/fp/template/doc/wiki.jst +++ b/lib/fp/template/doc/wiki.jst @@ -1 +1,65 @@ +## lodash/fp +The lodash/fp module is an instance of lodash with its methods wrapped to produce +immutable auto-curried iteratee-first data-last methods. + +## Installation + +In a browser: +```html + + +``` + +In Node.js: +```js +// load the fp build +var _ = require('lodash/fp'); + +// or a method category +var array = require('lodash/fp/object'); + +// or method for smaller builds with browserify/rollup/webpack +var extend = require('lodash/fp/extend'); +``` + +## Notes + +#### Arity + +Methods with arity capped to one argument:
+<%= toFuncList(mapping.aryMethod[1]) %> + +Methods with arity capped to two arguments:
+<%= toFuncList(mapping.aryMethod[2]) %> + +Methods with arity capped to three arguments:
+<%= toFuncList(mapping.aryMethod[3]) %> + +Methods with arity capped to four arguments:
+<%= toFuncList(mapping.aryMethod[4]) %> + +#### Iteratees + +Methods which provide iteratees one argument:
+<%= toFuncList(_.keys(_.pick(mapping.iterateeAry, _.partial(_.eq, _, 1)))) %> + +Methods which provide iteratees two argument:
+<%= toFuncList(_.keys(_.pick(mapping.iterateeAry, _.partial(_.eq, _, 2)))) %> + +#### New Methods + +Methods created to accommodate Lodash’s variadic methods:
+<%= toFuncList(_.keys(mapping.remap)) %> + +#### Exceptions + +Methods which have argument order unchanged:
+<%= toFuncList(_.keys(mapping.skipRearg)) %> + +#### Aliases + +There are <%= _.size(mapping.aliasToReal) %> method aliases:
+<%= _.map(mapping.aliasToReal, function(realName, alias) { + return ' - Added `_.' + alias + '` as an alias of `_.' + realName + '`'; +}).join('\n') %> diff --git a/package.json b/package.json index 3635e3394..e9cba669d 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "build:main": "node lib/main/build-dist.js", "build:main-modules": "node lib/main/build-modules.js", "doc": "node lib/main/build-doc github", + "doc:fp": "node lib/fp/build-doc", "doc:site": "node lib/main/build-doc site", "prepublish": "npm run style", "pretest": "npm run build",