// ==UserScript==
// @name Inliner
// @namespace Violentmonkey Scripts
// @match *://*/*
// @grant none
// @version 1.0
// @author Anon
// @description The primary use of this script is to enhance the SingleFile extension. Currently only Rentry links work (as thats all i needed).
// ==/UserScript==
(function() {
window.inliner_main = () => {
// Convert text links to links
var iterator = document.createNodeIterator(
document.documentElement,
NodeFilter.SHOW_TEXT,
{ acceptNode: function(node) { return NodeFilter.FILTER_ACCEPT; }}
);
var nodeList = [];
var currentNode;
const regex = /https:\/\/rentry.org\/\w*/
while ((currentNode = iterator.nextNode())) {
const match = regex.exec(currentNode.nodeValue);
if (match == null) { continue; }
nodeList.push(currentNode);
}
console.log(`--- indexer # found ${nodeList.length} links`);
for (var i of nodeList) {
const match = regex.exec(i.nodeValue);
var tempDiv = document.createElement('div');
tempDiv.innerHTML =
i.nodeValue.replace(
match[0],
`` + match[0] + ''
)
;
i.replaceWith(tempDiv);
}
// Actual inlining
const links = document.querySelectorAll('a');
links.forEach(link => {
const href = link.getAttribute('href');
if (href && href.startsWith('https://rentry.org/')) {
const iframeHTML = `
`;
link.parentNode.insertAdjacentHTML('beforeend', iframeHTML);
}
console.log("--- inliner # inlined link");
});
}
if (typeof window.addContainerFunctionality === 'function') {
addContainerFunctionality('Inline links', 'window.inliner_main');
} else {
document.addEventListener('violent-monkey-container-ready', function(e) {
addContainerFunctionality('Inline links', 'window.inliner_main');
});
}
})();