Socket
Socket
Sign inDemoInstall

microdata-node

Package Overview
Dependencies
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

microdata-node - npm Package Compare versions

Comparing version 0.0.12 to 0.0.13

test/itemprop.spec.js

50

lib/index.js

@@ -33,6 +33,4 @@ 'use strict';

if (props && currentItem) {
props.forEach(function (propName) {
var value = parseProperty(node, currentItem);
currentItem.addProperty(propName, value);
});
var value = parsePropertyValue(node, currentItem);
currentItem.addProperties(props, value);
} else if ($node.is('[itemscope]')) {

@@ -84,36 +82,36 @@ var newItem = parseItem(node, currentItem);

function resolveAttribute($node, attr) {
return $node.attr(attr) || '';
var value = $node.attr(attr);
return value && value.trim() || '';
}
function resolveUrlAttribute($node, attr) {
var relative = $node.attr(attr);
var relative = resolveAttribute($node, attr);
if (relative && config.base) {
return urlUtil.resolve(config.base, relative) || '';
return urlUtil.resolve(config.base, relative);
} else {
return relative || '';
return relative;
}
}
function parseProperty(node, currentItem) {
function parsePropertyValue(node, currentItem) {
var $node = $(node);
if ($node.is('[itemscope]')) {
return parseItem(node, currentItem);
} else if ($node.is('meta')) {
return resolveAttribute($node, 'content');
} else if ($node.is('audio,embed,iframe,img,source,track,video')) {
return resolveUrlAttribute($node, 'src');
} else if ($node.is('a,area,link')) {
return resolveUrlAttribute($node, 'href');
} else if ($node.is('object')) {
return resolveUrlAttribute($node, 'data');
} else if ($node.is('data')) {
return resolveAttribute($node, 'value');
} else if ($node.is('meter')) {
return resolveAttribute($node, 'value');
} else if ($node.is('time')) {
return resolveAttribute($node, 'datetime');
} else {
var text = $node.text();
text = text && text.trim();
return text || '';
if ($node.is('meta')) {
return resolveAttribute($node, 'content');
} else if ($node.is('audio,embed,iframe,img,source,track,video')) {
return resolveUrlAttribute($node, 'src');
} else if ($node.is('a,area,link')) {
return resolveUrlAttribute($node, 'href');
} else if ($node.is('object')) {
return resolveUrlAttribute($node, 'data');
} else if ($node.is('data,meter')) {
return resolveAttribute($node, 'value');
} else if ($node.is('time')) {
return resolveAttribute($node, 'datetime');
} else {
var text = $node.text();
return text && text.trim() || '';
}
}

@@ -120,0 +118,0 @@ }

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

Item.prototype.addProperties = function addProperties(names, value) {
names.forEach(function (name) {
this.addProperty(name, value);
}, this);
};
Item.prototype.serialize = function serialize() {

@@ -27,0 +33,0 @@ var item = {};

{
"name": "microdata-node",
"version": "0.0.12",
"version": "0.0.13",
"description": "Cheerio based microdata parser",

@@ -5,0 +5,0 @@ "main": "lib",

@@ -205,58 +205,2 @@ /* global describe, it */

it('parses itemrefs', function () {
var $ = cheerio.load(
'<div id="ref1">' +
' <div itemprop="name">Jan</div>' +
'</div>' +
'<div id="ref2" itemprop="name">Potoms</div>' +
'<div itemscope itemtype="http://schema.org/Person" itemref="ref1 ref2"></div>'
);
var result = parser.parse($);
assert.isArray(result.items);
assert.lengthOf(result.items, 1);
assert.deepEqual(result.items[0].properties, {
name: ['Jan', 'Potoms']
});
});
it('handle top-level circular structure', function () {
var $ = cheerio.load(
'<div id="ref">' +
' <div itemscope itemref="ref">' +
' <div itemprop="name">Jan</div>' +
' </div>' +
'</div>'
);
var result = parser.parse($);
assert.isArray(result.items);
assert.lengthOf(result.items, 1);
assert.deepEqual(result.items[0].properties, {
name: ['Jan']
});
});
it('handle nested item circular structure', function () {
var $ = cheerio.load(
'<div id="ref">' +
' <div itemprop="name">Other Jan</div>' +
' <div itemprop="friend" itemscope>' +
' <div itemprop="name">Jan</div>' +
' <div itemprop="friend" itemscope itemref="ref"></div>' +
' </div>' +
'</div>'
);
var result = parser.parse($);
assert.isArray(result.items);
assert.lengthOf(result.items, 1);
assert.deepEqual(result.items[0].properties, {
name: [ 'Jan' ],
friend: [{
properties: {
name: [ 'Other Jan' ],
friend: [ 'ERROR' ]
}
}]
});
});
});
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