Skip to content

Instantly share code, notes, and snippets.

@taichino
Created June 6, 2014 21:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save taichino/2ad0d9a09464c3bd72a0 to your computer and use it in GitHub Desktop.
Save taichino/2ad0d9a09464c3bd72a0 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name cleanup_ios8_api_diff
// @namespace cleanup_ios8_api_diff
// @include https://developer.apple.com/library/prerelease/ios/releasenotes/General/iOS80APIDiffs/index.html*
// @author taichino
// @description This userscript cleanup API diff
// ==/UserScript==
(function() {
var main = function() {
var getSymbolName = function(symbolElem) {
var symbolName;
var anchor = symbolElem.getElementsByTagName('a')[0];
if (anchor) {
symbolName = anchor.innerHTML.trim();
}
else {
var children = symbolElem.childNodes;
symbolName = children[children.length-2].nodeValue.trim();
}
return symbolName;
};
var getPropertyName = function(methodName) {
var res = methodName.replace(/[\-\[\]]/g, ''); // remove '-', '[' and ']' from symbolName
res = res.replace(' ', '.');
return res;
};
var addedSymbolsNum = 0;
var removedSymbolsNum = 0;
Array.prototype.forEach.call(document.getElementsByClassName('headerFile'), function(file) {
var added = file.querySelectorAll('div.added')[0];
var removed = file.querySelectorAll('div.removed')[0];
var modified = file.querySelectorAll('div.modified')[0];
if (modified) {
modified.parentNode.removeChild(modified);
}
if (added && removed) {
// clean up properties
var addedProperties = {};
Array.prototype.forEach.call(added.getElementsByClassName('symbolName'), function(addedSymbol) {
var symbolName = getSymbolName(addedSymbol);
if (symbolName.search('.') >= 0) {
addedProperties[symbolName] = addedSymbol;
}
});
Array.prototype.forEach.call(removed.getElementsByClassName('symbolName'), function(removedSymbol) {
var symbolName = getSymbolName(removedSymbol);
if (symbolName.search(':') == -1) {
var propName = getPropertyName(symbolName);
var addedSymbol = addedProperties[propName];
if (addedSymbol) {
addedSymbol.parentNode.removeChild(addedSymbol);
removedSymbol.parentNode.removeChild(removedSymbol);
}
}
});
}
var symbols = file.getElementsByClassName('symbolName');
if (symbols.length == 0) {
file.parentNode.removeChild(file);
}
added = file.querySelectorAll('div.added')[0];
removed = file.querySelectorAll('div.removed')[0];
if (added) {
addedSymbolsNum += added.getElementsByClassName('symbolName').length;
}
if (removed) {
removedSymbolsNum += removed.getElementsByClassName('symbolName').length;
}
});
console.log("added:" + addedSymbolsNum + ", removed:" + removedSymbolsNum);
};
var t = 0;
var timer = setInterval(
function() {
main();
t += 1;
if (t > 5) {
clearInterval(timer);
}
},
1000);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment