UNPKG

1.17 kBJavaScriptView Raw
1var _ = require('lodash');
2var serializeJS = require('serialize-javascript');
3
4var parseHTML = require('./parse-html');
5var transformTextNodes = require('./transform-text-nodes');
6var transformDIf = require('./transform-d-if');
7var addOriginals = require('./add-originals');
8var replaceUnicode = require('./replaceUnicode');
9
10module.exports = function (source, options) {
11 options = options || {};
12 options.keepOriginal = _.get(options, 'keepOriginal', true);
13 options.globalVars = _.get(options, 'globalVars', ['require']);
14 options.funcName = _.get(options, 'funcName', 'func');
15 options.replaceUnicode = _.get(options, 'replaceUnicode', true);
16
17 var variables = {};
18 var parsed = transformDIf(
19 transformTextNodes(
20 parseHTML(source),
21 variables,
22 {},
23 options
24 )
25 );
26 var exported = {
27 vars: _.keys(variables),
28 value: parsed
29 };
30
31 if (options.__keepScope__) {
32 exported = exported.value;
33 }
34
35 var serialized = replaceUnicode(
36 serializeJS(exported, {
37 space: 2
38 }),
39 options
40 );
41
42 if (!options.keepOriginal) {
43 return serialized;
44 }
45
46 return addOriginals(serialized, options).slice(1, -2);
47};