forked from get-alex/alex
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
80 lines (68 loc) · 1.63 KB
/
index.js
File metadata and controls
80 lines (68 loc) · 1.63 KB
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
'use strict'
var VFile = require('vfile')
var unified = require('unified')
var markdown = require('remark-parse')
var frontmatter = require('remark-frontmatter')
var html = require('rehype-parse')
var english = require('retext-english')
var equality = require('retext-equality')
var profanities = require('retext-profanities')
var remark2retext = require('remark-retext')
var rehype2retext = require('rehype-retext')
var sort = require('vfile-sort')
var filter = require('./filter')
module.exports = alex
alex.text = noMarkdown
alex.markdown = alex
alex.html = htmlParse
function makeText(config) {
return unified()
.use(english)
.use(equality, {
noBinary: config && config.noBinary
})
.use(profanities, {
sureness: config && config.profanitySureness
})
}
// Alex’s core.
function core(value, config, processor) {
var allow
var deny
if (Array.isArray(config)) {
allow = config
} else if (config) {
allow = config.allow
deny = config.deny
}
var file = new VFile(value)
var tree = processor.use(filter, {allow: allow, deny: deny}).parse(file)
processor.runSync(tree, file)
sort(file)
return file
}
// Alex.
function alex(value, config) {
return core(
value,
config,
unified()
.use(markdown)
.use(frontmatter, ['yaml', 'toml'])
.use(remark2retext, makeText(config))
)
}
// Alex, for HTML.
function htmlParse(value, config) {
return core(
value,
config,
unified()
.use(html)
.use(rehype2retext, makeText(config))
)
}
// Alex, without the markdown.
function noMarkdown(value, config) {
return core(value, config, makeText(config))
}