Hacker News blockquote styling

Adds styling to blockquotes in Hacker News comments

目前為 2021-12-26 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Hacker News blockquote styling
// @version      1.1
// @description  Adds styling to blockquotes in Hacker News comments
// @author       Ryan Buening
// @license      MIT
// @namespace    https://github.com/ryanbuening/userscripts
// @match        https://news.ycombinator.com/*
// @run-at       document-end
// ==/UserScript==

const [head] = document.getElementsByTagName('head');
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = `
.comment-quote {
	background: #46464620;
	font-style: italic;
	color: #464646;
	border-left-width:: 3px;
	border-left-color: #46464650;
	border-left-style: solid;
	padding: 2px;
	padding-left: 5px;
};
`;
head.appendChild(style);

document.querySelectorAll('.commtext').forEach(c => {
	let quoteDiv = null;
	c.childNodes.forEach(node => {
		const commentLine = node.textContent || node.innerText;
		// match on both "> Lorem ipsum" AND ">Lorem ipsum"
		if (quoteDiv || commentLine.match(/^>/)) {
			if (commentLine.startsWith('>')) {
				const quoteText = commentLine.substring(commentLine.indexOf('>') + 1);
				if (node.textContent)
					node.textContent = quoteText;
				else
					node.innerText = quoteText;
			}

			if (!quoteDiv) {
				quoteDiv = document.createElement('div');
				quoteDiv.classList.add('comment-quote');
				node.parentNode.insertBefore(quoteDiv, node);
			}

			quoteDiv.appendChild(node);

			if (!commentLine.match(/^>+\s*$/)) {
				quoteDiv = null;
			}
		}
	});
});