1 | var _ = require('lodash');
|
2 | var serializeJS = require('serialize-javascript');
|
3 |
|
4 | var parseHTML = require('./parse-html');
|
5 | var transformTextNodes = require('./transform-text-nodes');
|
6 | var transformDIf = require('./transform-d-if');
|
7 | var addOriginals = require('./add-originals');
|
8 | var replaceUnicode = require('./replaceUnicode');
|
9 |
|
10 | module.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 | };
|