Socket
Socket
Sign inDemoInstall

clean-html

Package Overview
Dependencies
Maintainers
1
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

clean-html - npm Package Compare versions

Comparing version 1.2.0 to 1.2.1

11

demo.js

@@ -14,5 +14,14 @@ var cleaner = require('./index.js'),

cleaner.clean(data, function (html) {
var options = {
'add-attr-to-remove': ['class'],
'add-tags-to-remove': ['b', 'i', 'u'],
'indent': ' ',
'remove-comments': true,
'remove-empty-paras': true,
'replace-nbsp': true
};
cleaner.clean(data, options, function (html) {
console.log(html);
});
});

60

index.js

@@ -44,2 +44,3 @@ var htmlparser = require('htmlparser2'),

'remove-empty-paras': false,
'replace-nbsp': false,
'tags-to-remove': [

@@ -63,2 +64,3 @@ 'center',

options['remove-empty-paras'] = opt['remove-empty-paras'] === true ? true : false;
options['replace-nbsp'] = opt['replace-nbsp'] === true ? true : false;
options['tags-to-remove'] = opt['tags-to-remove'] || options['tags-to-remove'];

@@ -92,3 +94,10 @@

function renderText(node) {
return node.data.replace(/\s+/g, ' ');
var text = node.data;
if (options['replace-nbsp']) {
text = text.replace(/ /g, ' ');
}
// replace all whitespace characters with a single space
return text.replace(/\s+/g, ' ');
}

@@ -101,7 +110,9 @@

var comment = '<!--' + node.data + '-->';
if (options['break-around-comments']) {
return '\n' + '<!--' + node.data + '-->' + '\n';
return '\n' + comment + '\n';
}
return '<!--' + node.data + '-->';
return comment;
}

@@ -122,4 +133,3 @@

var openTag = '<' + node.name,
closeTag;
var openTag = '<' + node.name;

@@ -142,3 +152,3 @@ for (var attrib in node.attribs) {

closeTag = '</' + node.name + '>';
var closeTag = '</' + node.name + '>';

@@ -179,6 +189,9 @@ if (options['block-tags'].indexOf(node.name) > -1) {

return html.replace(/\s{2,}/g, '\n');
// remove leading spaces and extra line breaks
html = html.replace(/\n\s+/g, '\n');
return html;
}
function indentLine(line, indentLevel) {
function getIndent(indentLevel) {
var indent = '';

@@ -190,3 +203,3 @@

return indent + line;
return indent;
}

@@ -198,24 +211,31 @@

return html.replace(/.*\n/g, function (line) {
var match = line.match(/<\/?(\w+).*?>/);
var openTags = [],
tagRegEx = /<\/?(\w+).*?>/g,
tag,
tagName,
result;
if (!match) {
return indentLine(line, indentLevel);
}
while (result = tagRegEx.exec(line)) {
tag = result[0];
tagName = result[1];
var tag = match[0],
tagName = match[1];
if (options['empty-tags'].indexOf(tagName) > -1) {
continue;
}
if (options['block-tags'].indexOf(tagName) > -1) {
if (tag.indexOf('</') == -1) {
line = indentLine(line, indentLevel);
openTags.push(tag);
indentLevel++;
} else {
openTags.pop();
indentLevel--;
line = indentLine(line, indentLevel);
}
}
return line;
if (openTags.length) {
return getIndent(indentLevel - openTags.length)
+ line.replace(openTags[0] + ' ', openTags[0] + '\n' + getIndent(indentLevel));
}
return indentLine(line, indentLevel);
return getIndent(indentLevel) + line;
});

@@ -222,0 +242,0 @@ }

{
"name": "clean-html",
"version": "1.2.0",
"version": "1.2.1",
"description": "HTML cleaner and beautifier",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -125,2 +125,9 @@ ## HTML cleaner and beautifier

### replace-nbsp
Replaces non-breaking white space entities (`&nbsp;`) with regular spaces.
Type: Boolean
Default: `false`
### tags-to-remove

@@ -127,0 +134,0 @@

@@ -9,2 +9,10 @@ var assert = require('assert'),

// test that non-breaking space is replaced
cleaner.clean('Foo&nbsp;Bar', function (html) {
assert.equal(html, 'Foo&nbsp;Bar');
});
cleaner.clean('Foo&nbsp;Bar', {'replace-nbsp': true}, function (html) {
assert.equal(html, 'Foo Bar');
});
// test that extra whitespace is removed

@@ -11,0 +19,0 @@ cleaner.clean('Foo Bar', function (html) {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc