Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Typography on screen
- // @namespace 2ch culture
- // @include *
- // @homepage http://artlebedev.ru/kovodstvo/62
- // @version v0.1.3.1
- // @grant none
- // ==/UserScript==
- /*
- Спецсимволы:
- L" — «
- R" — »
- (C) — ©
- (R) — ®
- (tm) — ™ (tm не зависит от регистра)
- +- — ±
- */
- function replacer() {
- var replacer = function() {
- var replacer = function(tmp) {
- var replacer = function(m) {
- switch (m) {
- case 'L"':
- s = '«';
- n = 1;
- break;
- case 'R"':
- s = '»';
- n = 1;
- break;
- case '(C)':
- s = '©';
- n = 2;
- break;
- case '(R)':
- s = '®';
- n = 2;
- break;
- case '+-':
- s = '±';
- n = 1;
- break;
- case '...':
- s = '…';
- n = 2;
- break;
- default:
- s = '™';
- n = 3;
- }
- selSt -= n;
- selEn -= n;
- return s;
- };
- // Тире (с неразрывным пробелом)
- tmp = tmp.replace(/ +-(?= )/g, ' —');
- // Короткое тире
- tmp = tmp.replace(/(?!\d{4})-(?=\d{1,4}($| | ?г+))/g, '–');
- // Дефис
- tmp = tmp.replace(/(?![a-яё]|\d)-(?=[a-яё])/g, '-');
- // Левая кавычка
- tmp = tmp.replace(/L"/g, replacer);
- // Правая кавычка
- tmp = tmp.replace(/R"/g, replacer);
- // Неразрывный пробел
- // 1. Единицы измерения
- tmp = tmp.replace(/(?!\d+) (?=[а-яё]{1,3})/gi, ' ');
- // 2. Маленькие слова
- tmp = tmp.replace(/(?! [а-яё]{1,3}) /gi, ' ');
- // Знак охраны авторского права
- tmp = tmp.replace(/\(C\)/g, replacer);
- // Символ зарегистрированного товарного знака
- tmp = tmp.replace(/\(R\)/g, replacer);
- // Символ товарного знака
- tmp = tmp.replace(/\(tm\)/gi, replacer);
- // Плюс-минус
- tmp = tmp.replace(/\+-/g, replacer);
- // Многоточие
- tmp = tmp.replace(/\.\.\./g, replacer);
- return tmp;
- };
- var selSt = this.selectionStart,
- selEn = this.selectionEnd,
- selDr = this.selectionDirection,
- replaced = replacer(this.value);
- if (this.value != replaced) {
- this.value = replaced;
- this.setSelectionRange(selSt, selEn, selDr);
- }
- };
- var TAs = document.getElementsByTagName('textarea');
- for (var i = 0; i < TAs.length; i++) {
- TAs[i].addEventListener('keyup', replacer);
- }
- }
- // document.addEventListener('DOMContentLoaded', replacer);
- replacer();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement