未验证 提交 9403d247 编写于 作者: B beyondgfw

Improve compact file generation.

上级 1d8b5b75
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;
};
};
module.exports = function (generateEntry, generateComment, compact = false) { module.exports = function (generateEntry, generateComment) {
return function (data) { return function (data) {
var output = '', blocks = []; var output = '', blocks = [];
output += generateComment(data.header) + '\n'; output += generateComment(data.header) + '\n';
...@@ -10,7 +10,6 @@ module.exports = function (generateEntry, generateComment, compact = false) { ...@@ -10,7 +10,6 @@ module.exports = function (generateEntry, generateComment, compact = false) {
tmp += generateComment(item.comment); tmp += generateComment(item.comment);
} else { } else {
if (item.domain !== undefined) tmp += generateEntry(item.ip, item.domain) + '\n'; if (item.domain !== undefined) tmp += generateEntry(item.ip, item.domain) + '\n';
else if (compact) tmp += generateEntry(item.ip, item.domains) + '\n';
else { else {
item.domains.forEach(function (domain) { item.domains.forEach(function (domain) {
tmp += generateEntry(item.ip, domain) + '\n'; tmp += generateEntry(item.ip, domain) + '\n';
......
...@@ -2,12 +2,11 @@ module.exports = { ...@@ -2,12 +2,11 @@ module.exports = {
fileName: 'hosts-compact', fileName: 'hosts-compact',
generate: (function () { generate: (function () {
var generateEntry = function (ip, domain) { var generateEntry = function (ip, domain) {
if (Array.isArray(domain)) domain = domain.join(' '); return `${ip}\t${domain.join(' ')}`;
return `${ip}\t${domain}`;
}; };
var generateComment = function (data) { var generateComment = function (data) {
return data.replace(/^(.)/gm, '# $1'); return data.replace(/^(.)/gm, '# $1');
}; };
return require('../generate-helper')(generateEntry, generateComment, true); return require('../generate-helper-compact')(generateEntry, generateComment);
})() })()
}; };
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册