-
Notifications
You must be signed in to change notification settings - Fork 1
/
paragraph.js
38 lines (29 loc) · 962 Bytes
/
paragraph.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var hash = require('./hash')
var conj = require('./utils/conj')
var fit = require('./utils/fit')
var defaults = require('./utils/defaults')
var sentence = require('./sentence')
var DEFAULT_MIN_SENTENCES = 3
var DEFAULT_MAX_SENTENCES = 7
function paragraph(input, opts) {
opts = opts || 0
var minSentences = defaults(opts.minSentences, DEFAULT_MIN_SENTENCES)
var maxSentences = defaults(opts.maxSentences, DEFAULT_MAX_SENTENCES)
var ids = hash.sequence2(input, 'paragraph')
var n = fit(ids.next().value, minSentences, maxSentences)
var i = 0
var result = sentence(ids.next().value, opts)
while (++i < n) {
result += ' ' + sentence(ids.next().value, opts)
}
return result
}
paragraph.options = function paragraphOptions(opts) {
var base = this
paragraphFn.options = paragraph.options
return paragraphFn
function paragraphFn(input, overrides) {
return base(input, conj(opts, overrides))
}
}
module.exports = paragraph