Socket
Socket
Sign inDemoInstall

jssoup

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jssoup - npm Package Compare versions

Comparing version 0.0.10 to 0.0.11

dist/lib/builder.js

136

dist/lib/jssoup.js

@@ -11,2 +11,8 @@ 'use strict';

var _builder = require('./builder.js');
var _builder2 = _interopRequireDefault(_builder);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }

@@ -19,2 +25,4 @@

var htmlparser = require('htmlparser');
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {

@@ -163,7 +171,7 @@ try {

function SoupTag(name) {
var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
var previousElement = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
var nextElement = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
function SoupTag(name, builder) {
var attrs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
var parent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
var previousElement = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
var nextElement = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;

@@ -178,2 +186,3 @@ _classCallCheck(this, SoupTag);

_this4.hidden = false;
_this4.builder = builder;
return _this4;

@@ -198,3 +207,3 @@ }

for (var i = 0; i < children.length; ++i) {
var ele = this._transfer(children[i]);
var ele = this._transform(children[i]);
last.nextElement = ele;

@@ -218,4 +227,4 @@ ele.previousElement = last;

}, {
key: '_transfer',
value: function _transfer(dom) {
key: '_transform',
value: function _transform(dom) {
if (!dom) return null;

@@ -232,3 +241,3 @@ if (dom.type === 'text') {

}
return new SoupTag(dom.name, dom.attribs, this);
return new SoupTag(dom.name, this.builder, dom.attribs, this);
}

@@ -265,3 +274,5 @@ }, {

var tag = strainer.match(descendants[i]);
if (tag) results.push(tag);
if (tag) {
results.push(tag);
}
}

@@ -273,2 +284,70 @@ }

}, {
key: 'findPreviousSibling',
value: function findPreviousSibling() {
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
var string = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
var results = this.findPreviousSiblings(name, attrs, string);
if (results.length > 0) {
return results[0];
}
return undefined;
}
}, {
key: 'findPreviousSiblings',
value: function findPreviousSiblings() {
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
var string = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
var results = [];
var cur = this.previousSibling;
var strainer = new SoupStrainer(name, attrs, string);
while (cur) {
if (cur instanceof SoupTag) {
var tag = strainer.match(cur);
if (tag) {
results.push(tag);
}
}
cur = cur.previousSibling;
}
return results;
}
}, {
key: 'findNextSibling',
value: function findNextSibling() {
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
var string = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
var results = this.findNextSiblings(name, attrs, string);
if (results.length > 0) {
return results[0];
}
return undefined;
}
}, {
key: 'findNextSiblings',
value: function findNextSiblings() {
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
var string = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
var results = [];
var cur = this.nextSibling;
var strainer = new SoupStrainer(name, attrs, string);
while (cur) {
if (cur instanceof SoupTag) {
var tag = strainer.match(cur);
if (tag) {
results.push(tag);
}
}
cur = cur.nextSibling;
}
return results;
}
}, {
key: 'getText',

@@ -314,11 +393,29 @@ value: function getText() {

if (attrs) {
text += indent.repeat(level) + '<' + this.name + ' ' + attrs + '>' + breakline;
text += indent.repeat(level) + '<' + this.name + ' ' + attrs;
} else {
text += indent.repeat(level) + '<' + this.name + '>' + breakline;
text += indent.repeat(level) + '<' + this.name;
}
}
// is an element doesn't have any contents, it's a self closing element
if (!this.hidden) {
if (this._isEmptyElement() && this.builder.canBeEmptyElement(this.name)) {
text += ' />' + breakline;
return text;
} else {
text += '>' + breakline;
}
}
for (var i = 0; i < this.contents.length; ++i) {
if (this.contents[i] instanceof SoupString) {
text += indent.repeat(level + 1) + this.contents[i].toString() + breakline;
var curText = this.contents[i].toString();
curText = curText.trim();
if (curText.length != 0) {
if (curText.substring(curText.length - 1) == "\n") {
text += indent.repeat(level + 1) + curText;
} else {
text += indent.repeat(level + 1) + curText + breakline;
}
}
} else {

@@ -332,5 +429,7 @@ if (this.contents[i] instanceof SoupComment) {

}
if (!this.hidden) {
text += indent.repeat(level) + '</' + this.name + '>' + breakline;
}
return text;

@@ -383,2 +482,7 @@ }

}, {
key: '_isEmptyElement',
value: function _isEmptyElement() {
return this.contents.length == 0;
}
}, {
key: 'string',

@@ -429,5 +533,7 @@ get: function get() {

function JSSoup(text) {
var ignoreWhitespace = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
_classCallCheck(this, JSSoup);
var _this5 = _possibleConstructorReturn(this, (JSSoup.__proto__ || Object.getPrototypeOf(JSSoup)).call(this, ROOT_TAG_NAME, null));
var _this5 = _possibleConstructorReturn(this, (JSSoup.__proto__ || Object.getPrototypeOf(JSSoup)).call(this, ROOT_TAG_NAME, new _builder2.default(), null));

@@ -438,3 +544,3 @@ var handler = new htmlparser.DefaultHandler(function (error, dom) {

} else {}
}, { verbose: false, ignoreWhitespace: true });
}, { verbose: false, ignoreWhitespace: ignoreWhitespace });

@@ -441,0 +547,0 @@ var parser = new htmlparser.Parser(handler);

6

package.json
{
"name": "jssoup",
"version": "0.0.10",
"version": "0.0.11",
"description": "JSSoup is a BeautifulSoup style HTML parser library.",

@@ -15,3 +15,3 @@ "main": "./dist/lib/jssoup.js",

"prebuild": "npm run clean && npm run init",
"build": "babel ./lib/jssoup.js -d dist --presets es2015 "
"build": "babel ./lib/*.js -d dist --presets es2015 "
},

@@ -45,4 +45,4 @@ "repository": {

"htmlparser": "^1.7.7",
"lodash": "^4.17.5"
"lodash": "^4.17.15"
}
}

@@ -37,2 +37,8 @@ JSSoup

```
> The text element only contains whitespace will be ignored by default. To disable this feature, set second parameter
of JSSoup to false. This parameter is "ignoreWhitespace" and will be passed into htmlparser.
```javascript
var soup = new JSSoup('<html><head>hello</head></html>', false);
```
### Name

@@ -140,2 +146,64 @@ ```javascript

```
#### .findNextSibling()
```javascript
var data = `
<div>
<span> test </span>
<div> div </div>
<p> hello </p>
<p> world </p>
</div>
`
var soup = new JSSoup(data);
var span = soup.find('span');
span.findNextSibling('p')
// <p> hello </p>
```
#### .findNextSiblings()
```javascript
var data = `
<div>
<span> test </span>
<div> div </div>
<p> hello </p>
<p> world </p>
</div>
`
var soup = new JSSoup(data);
var span = soup.find('span');
span.findNextSiblings('p')
// <p> hello </p>
// <p> world </p>
```
#### .findPreviousSibling()
```javascript
var data = `
<div>
<p> hello </p>
<p> world </p>
<div> div </div>
<span> test </span>
</div>
`
var soup = new JSSoup(data);
var span = soup.find('span');
span.findPreviousSibling('p')
// <p> world </p>
```
#### .findPreviousSiblings()
```javascript
var data = `
<div>
<p> hello </p>
<p> world </p>
<div> div </div>
<span> test </span>
</div>
`
var soup = new JSSoup(data);
var span = soup.find('span');
span.findPreviousSiblings('p')
// <p> hello </p>
// <p> world </p>
```
### Output

@@ -142,0 +210,0 @@ #### .prettify()

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