From 9403d247cc0a0759894424c42d566ee18149f2ee Mon Sep 17 00:00:00 2001 From: beyondgfw Date: Tue, 12 Sep 2017 09:40:51 +0800 Subject: [PATCH] Improve compact file generation. --- src/generate-helper-compact.js | 25 +++++++++++++++++++++++++ src/generate-helper.js | 3 +-- src/generators/hosts-compact.js | 5 ++--- 3 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 src/generate-helper-compact.js diff --git a/src/generate-helper-compact.js b/src/generate-helper-compact.js new file mode 100644 index 0000000..dec3173 --- /dev/null +++ b/src/generate-helper-compact.js @@ -0,0 +1,25 @@ +module.exports = function (generateEntry, generateComment) { + return function (data) { + var entries = {}; + data.hosts.forEach(function (block) { + block.items.forEach(function (item) { + if (item.comment === undefined) { + if (entries[item.ip] === undefined) entries[item.ip] = []; + if (item.domain !== undefined) entries[item.ip].push(item.domain); + else { + item.domains.forEach(function (domain) { + entries[item.ip].push(domain); + }); + } + } + }); + }); + var output = ''; + output += generateComment(data.header) + '\n'; + for (var ip in entries) { + output += generateEntry(ip, entries[ip]) + '\n'; + } + output += '\n' + generateComment(data.footer); + return output; + }; +}; diff --git a/src/generate-helper.js b/src/generate-helper.js index 42c41b0..5307edd 100644 --- a/src/generate-helper.js +++ b/src/generate-helper.js @@ -1,4 +1,4 @@ -module.exports = function (generateEntry, generateComment, compact = false) { +module.exports = function (generateEntry, generateComment) { return function (data) { var output = '', blocks = []; output += generateComment(data.header) + '\n'; @@ -10,7 +10,6 @@ module.exports = function (generateEntry, generateComment, compact = false) { tmp += generateComment(item.comment); } else { if (item.domain !== undefined) tmp += generateEntry(item.ip, item.domain) + '\n'; - else if (compact) tmp += generateEntry(item.ip, item.domains) + '\n'; else { item.domains.forEach(function (domain) { tmp += generateEntry(item.ip, domain) + '\n'; diff --git a/src/generators/hosts-compact.js b/src/generators/hosts-compact.js index fc8c270..d5cf439 100644 --- a/src/generators/hosts-compact.js +++ b/src/generators/hosts-compact.js @@ -2,12 +2,11 @@ module.exports = { fileName: 'hosts-compact', generate: (function () { var generateEntry = function (ip, domain) { - if (Array.isArray(domain)) domain = domain.join(' '); - return `${ip}\t${domain}`; + return `${ip}\t${domain.join(' ')}`; }; var generateComment = function (data) { return data.replace(/^(.)/gm, '# $1'); }; - return require('../generate-helper')(generateEntry, generateComment, true); + return require('../generate-helper-compact')(generateEntry, generateComment); })() }; -- GitLab