Plato on Github
Report Home
node_modules/jsdom/lib/jsdom/browser/documentfeatures.js
Maintainability
48.56
Lines of code
52
Difficulty
28.80
Estimated Errors
0.32
Function weight
By Complexity
By SLOC
exports.availableDocumentFeatures = [ 'FetchExternalResources', 'ProcessExternalResources', 'MutationEvents', 'SkipExternalResources' ]; exports.defaultDocumentFeatures = { "FetchExternalResources": ['script', 'link'/*, 'img', 'css', 'frame'*/], "ProcessExternalResources": ['script'/*, 'frame', 'iframe'*/], "MutationEvents": '2.0', "SkipExternalResources": false }; exports.applyDocumentFeatures = function(doc, features) { var i, maxFeatures = exports.availableDocumentFeatures.length, defaultFeatures = exports.defaultDocumentFeatures, j, k, featureName, featureSource; features = features || {}; for (i=0; i<maxFeatures; i++) { featureName = exports.availableDocumentFeatures[i]; if (typeof features[featureName] !== 'undefined') { featureSource = features[featureName]; // We have to check the lowercase version also because the Document feature // methods convert everything to lowercase. } else if (typeof features[featureName.toLowerCase()] !== 'undefined') { featureSource = features[featureName.toLowerCase()]; } else if (defaultFeatures[featureName]) { featureSource = defaultFeatures[featureName]; } else { continue; } doc.implementation.removeFeature(featureName); if (typeof featureSource !== 'undefined') { if (featureSource instanceof Array) { k = featureSource.length; for (j=0; j<k; j++) { doc.implementation.addFeature(featureName, featureSource[j]); } } else { doc.implementation.addFeature(featureName, featureSource); } } } };