Больше шуток
This commit is contained in:
@@ -1,174 +0,0 @@
|
|||||||
## Classes
|
|
||||||
|
|
||||||
<dl>
|
|
||||||
<dt><a href="#AprilFoolsJokeClass">AprilFoolsJokeClass</a></dt>
|
|
||||||
<dd><p>Блок обработки перво-апрельских шуток</p></dd>
|
|
||||||
<dt><a href="#Joke">Joke</a></dt>
|
|
||||||
<dd><p>Объект, описывающий шутку</p></dd>
|
|
||||||
<dt><a href="#ShakeJoke">ShakeJoke</a></dt>
|
|
||||||
<dd><p>Форумо-трясение</p>
|
|
||||||
<p>Страница форума начинает трястись</p></dd>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
## Members
|
|
||||||
|
|
||||||
<dl>
|
|
||||||
<dt><a href="#AprilFoolsJokeClass">AprilFoolsJokeClass</a></dt>
|
|
||||||
<dd><p>Объект хранения шуток</p></dd>
|
|
||||||
<dt><a href="#Joke">Joke</a></dt>
|
|
||||||
<dd><p>Объект, описывающий шутку, которая может быть остановлена</p></dd>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
<a name="AprilFoolsJokeClass"></a>
|
|
||||||
|
|
||||||
## AprilFoolsJokeClass
|
|
||||||
<p>Блок обработки перво-апрельских шуток</p>
|
|
||||||
|
|
||||||
**Kind**: global class
|
|
||||||
**Author**: Kozhilya
|
|
||||||
|
|
||||||
* [AprilFoolsJokeClass](#AprilFoolsJokeClass)
|
|
||||||
* [.add(joke)](#AprilFoolsJokeClass+add)
|
|
||||||
* [.setSettings(settings)](#AprilFoolsJokeClass+setSettings)
|
|
||||||
* [.check(chance)](#AprilFoolsJokeClass+check) ⇒ <code>boolean</code>
|
|
||||||
* [.start(id, forced)](#AprilFoolsJokeClass+start)
|
|
||||||
* [.startAll()](#AprilFoolsJokeClass+startAll)
|
|
||||||
|
|
||||||
<a name="AprilFoolsJokeClass+add"></a>
|
|
||||||
|
|
||||||
### aprilFoolsJokeClass.add(joke)
|
|
||||||
<p>Добавление шутки</p>
|
|
||||||
|
|
||||||
**Kind**: instance method of [<code>AprilFoolsJokeClass</code>](#AprilFoolsJokeClass)
|
|
||||||
|
|
||||||
| Param |
|
|
||||||
| --- |
|
|
||||||
| joke |
|
|
||||||
|
|
||||||
<a name="AprilFoolsJokeClass+setSettings"></a>
|
|
||||||
|
|
||||||
### aprilFoolsJokeClass.setSettings(settings)
|
|
||||||
<p>Запись новых настроек</p>
|
|
||||||
|
|
||||||
**Kind**: instance method of [<code>AprilFoolsJokeClass</code>](#AprilFoolsJokeClass)
|
|
||||||
|
|
||||||
| Param |
|
|
||||||
| --- |
|
|
||||||
| settings |
|
|
||||||
|
|
||||||
<a name="AprilFoolsJokeClass+check"></a>
|
|
||||||
|
|
||||||
### aprilFoolsJokeClass.check(chance) ⇒ <code>boolean</code>
|
|
||||||
<p>Проверка вероятности</p>
|
|
||||||
|
|
||||||
**Kind**: instance method of [<code>AprilFoolsJokeClass</code>](#AprilFoolsJokeClass)
|
|
||||||
**Returns**: <code>boolean</code> - <p>Флаг срабатывания (true - сработало)</p>
|
|
||||||
|
|
||||||
| Param | Type | Description |
|
|
||||||
| --- | --- | --- |
|
|
||||||
| chance | <code>number</code> | <p>Вероятность срабатывания</p> |
|
|
||||||
|
|
||||||
<a name="AprilFoolsJokeClass+start"></a>
|
|
||||||
|
|
||||||
### aprilFoolsJokeClass.start(id, forced)
|
|
||||||
<p>Запуск шутки</p>
|
|
||||||
|
|
||||||
**Kind**: instance method of [<code>AprilFoolsJokeClass</code>](#AprilFoolsJokeClass)
|
|
||||||
|
|
||||||
| Param | Type | Default |
|
|
||||||
| --- | --- | --- |
|
|
||||||
| id | | |
|
|
||||||
| forced | <code>boolean</code> | <code>false</code> |
|
|
||||||
|
|
||||||
<a name="AprilFoolsJokeClass+startAll"></a>
|
|
||||||
|
|
||||||
### aprilFoolsJokeClass.startAll()
|
|
||||||
<p>Запуск всех шуток</p>
|
|
||||||
|
|
||||||
**Kind**: instance method of [<code>AprilFoolsJokeClass</code>](#AprilFoolsJokeClass)
|
|
||||||
<a name="Joke"></a>
|
|
||||||
|
|
||||||
## Joke
|
|
||||||
<p>Объект, описывающий шутку</p>
|
|
||||||
|
|
||||||
**Kind**: global class
|
|
||||||
<a name="ShakeJoke"></a>
|
|
||||||
|
|
||||||
## ShakeJoke
|
|
||||||
<p>Форумо-трясение</p>
|
|
||||||
<p>Страница форума начинает трястись</p>
|
|
||||||
|
|
||||||
**Kind**: global class
|
|
||||||
**Author**: Kozhilya
|
|
||||||
<a name="AprilFoolsJokeClass"></a>
|
|
||||||
|
|
||||||
## AprilFoolsJokeClass
|
|
||||||
<p>Объект хранения шуток</p>
|
|
||||||
|
|
||||||
**Kind**: global variable
|
|
||||||
|
|
||||||
* [AprilFoolsJokeClass](#AprilFoolsJokeClass)
|
|
||||||
* [.add(joke)](#AprilFoolsJokeClass+add)
|
|
||||||
* [.setSettings(settings)](#AprilFoolsJokeClass+setSettings)
|
|
||||||
* [.check(chance)](#AprilFoolsJokeClass+check) ⇒ <code>boolean</code>
|
|
||||||
* [.start(id, forced)](#AprilFoolsJokeClass+start)
|
|
||||||
* [.startAll()](#AprilFoolsJokeClass+startAll)
|
|
||||||
|
|
||||||
<a name="AprilFoolsJokeClass+add"></a>
|
|
||||||
|
|
||||||
### aprilFoolsJokeClass.add(joke)
|
|
||||||
<p>Добавление шутки</p>
|
|
||||||
|
|
||||||
**Kind**: instance method of [<code>AprilFoolsJokeClass</code>](#AprilFoolsJokeClass)
|
|
||||||
|
|
||||||
| Param |
|
|
||||||
| --- |
|
|
||||||
| joke |
|
|
||||||
|
|
||||||
<a name="AprilFoolsJokeClass+setSettings"></a>
|
|
||||||
|
|
||||||
### aprilFoolsJokeClass.setSettings(settings)
|
|
||||||
<p>Запись новых настроек</p>
|
|
||||||
|
|
||||||
**Kind**: instance method of [<code>AprilFoolsJokeClass</code>](#AprilFoolsJokeClass)
|
|
||||||
|
|
||||||
| Param |
|
|
||||||
| --- |
|
|
||||||
| settings |
|
|
||||||
|
|
||||||
<a name="AprilFoolsJokeClass+check"></a>
|
|
||||||
|
|
||||||
### aprilFoolsJokeClass.check(chance) ⇒ <code>boolean</code>
|
|
||||||
<p>Проверка вероятности</p>
|
|
||||||
|
|
||||||
**Kind**: instance method of [<code>AprilFoolsJokeClass</code>](#AprilFoolsJokeClass)
|
|
||||||
**Returns**: <code>boolean</code> - <p>Флаг срабатывания (true - сработало)</p>
|
|
||||||
|
|
||||||
| Param | Type | Description |
|
|
||||||
| --- | --- | --- |
|
|
||||||
| chance | <code>number</code> | <p>Вероятность срабатывания</p> |
|
|
||||||
|
|
||||||
<a name="AprilFoolsJokeClass+start"></a>
|
|
||||||
|
|
||||||
### aprilFoolsJokeClass.start(id, forced)
|
|
||||||
<p>Запуск шутки</p>
|
|
||||||
|
|
||||||
**Kind**: instance method of [<code>AprilFoolsJokeClass</code>](#AprilFoolsJokeClass)
|
|
||||||
|
|
||||||
| Param | Type | Default |
|
|
||||||
| --- | --- | --- |
|
|
||||||
| id | | |
|
|
||||||
| forced | <code>boolean</code> | <code>false</code> |
|
|
||||||
|
|
||||||
<a name="AprilFoolsJokeClass+startAll"></a>
|
|
||||||
|
|
||||||
### aprilFoolsJokeClass.startAll()
|
|
||||||
<p>Запуск всех шуток</p>
|
|
||||||
|
|
||||||
**Kind**: instance method of [<code>AprilFoolsJokeClass</code>](#AprilFoolsJokeClass)
|
|
||||||
<a name="Joke"></a>
|
|
||||||
|
|
||||||
## Joke
|
|
||||||
<p>Объект, описывающий шутку, которая может быть остановлена</p>
|
|
||||||
|
|
||||||
**Kind**: global variable
|
|
||||||
+11
-11
@@ -6,6 +6,16 @@ import { Joke, JokeSettings } from "./joke";
|
|||||||
* @author Kozhilya
|
* @author Kozhilya
|
||||||
*/
|
*/
|
||||||
export class AprilFoolsJokeClass {
|
export class AprilFoolsJokeClass {
|
||||||
|
/**
|
||||||
|
* Проверка вероятности
|
||||||
|
*
|
||||||
|
* @param {number} chance Вероятность срабатывания
|
||||||
|
* @returns {boolean} Флаг срабатывания (true - сработало)
|
||||||
|
*/
|
||||||
|
static check(chance: number): boolean {
|
||||||
|
return Math.random() < 0.01 * chance;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Добавление шутки
|
* Добавление шутки
|
||||||
*
|
*
|
||||||
@@ -29,16 +39,6 @@ export class AprilFoolsJokeClass {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Проверка вероятности
|
|
||||||
*
|
|
||||||
* @param {number} chance Вероятность срабатывания
|
|
||||||
* @returns {boolean} Флаг срабатывания (true - сработало)
|
|
||||||
*/
|
|
||||||
check(chance: number): boolean {
|
|
||||||
return Math.random() < 0.01 * chance;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Запуск шутки
|
* Запуск шутки
|
||||||
*
|
*
|
||||||
@@ -51,7 +51,7 @@ export class AprilFoolsJokeClass {
|
|||||||
|
|
||||||
const joke = this.jokes[id];
|
const joke = this.jokes[id];
|
||||||
|
|
||||||
if (!forced && !this.check(joke.settings.chance)) {
|
if (!forced && !AprilFoolsJokeClass.check(joke.settings.chance)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,60 @@
|
|||||||
|
import { Joke, JokeSettings, StopableJoke } from "../joke";
|
||||||
|
import $ from "jquery";
|
||||||
|
import { AprilFoolsJokeClass } from "../handler";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* **Зеркало**
|
||||||
|
*
|
||||||
|
* Элементы форума отражаются (по крайней мере, пытаются)
|
||||||
|
*
|
||||||
|
* @author Kozhilya
|
||||||
|
*/
|
||||||
|
export class CarnivalJoke extends Joke {
|
||||||
|
settings: CarnivalJokeSettings;
|
||||||
|
|
||||||
|
start(): void {
|
||||||
|
$(this.settings.selector).each((_, elem) => {
|
||||||
|
const filters: string[] = [];
|
||||||
|
|
||||||
|
for (const entry of Object.entries(this.settings.variants)) {
|
||||||
|
if (!AprilFoolsJokeClass.check(this.settings.variant_chance)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
filters.push(entry[0].replace('{0}', Math.round(Math.random() * entry[1]).toString()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (filters.length > 0) {
|
||||||
|
$(elem).css('filter', filters.join(' '));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class CarnivalJokeSettings implements JokeSettings {
|
||||||
|
chance: number = 30;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Селектор всех элементов, которые будут трястись
|
||||||
|
*/
|
||||||
|
selector: string = 'img[src*="/avatars/"]';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Вероятность применения фильтра
|
||||||
|
*/
|
||||||
|
variant_chance: number = 20;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Список фильтров и диапозона случайных параметров
|
||||||
|
*/
|
||||||
|
variants: CarnivalJokeFilters = {
|
||||||
|
'sepia({0}%)': 100,
|
||||||
|
'saturate({0}%)': 100,
|
||||||
|
'hue-rotate({0}deg)': 360,
|
||||||
|
'invert({0}%)': 100,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CarnivalJokeFilters {
|
||||||
|
[key: string]: number;
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
import { Joke, JokeSettings, StopableJoke } from "../joke";
|
||||||
|
import $ from "jquery";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* **Ад гуманитария**
|
||||||
|
*
|
||||||
|
* Все "тся" заменяются на "ться", а все "ться" на "тся".
|
||||||
|
*
|
||||||
|
* @author Kozhilya
|
||||||
|
*/
|
||||||
|
export class CrazyLettersJoke extends Joke {
|
||||||
|
settings: CrazyLettersJokeSettings;
|
||||||
|
|
||||||
|
start(): void {
|
||||||
|
$(this.settings.selector).each((_, elem) => {
|
||||||
|
let text = $(this).text();
|
||||||
|
let result = '';
|
||||||
|
|
||||||
|
for (let i = 0; i < text.length; i++) {
|
||||||
|
result += text[i][(i % 2) ? 'toLowerCase' : 'toUpperCase']();
|
||||||
|
}
|
||||||
|
|
||||||
|
$(this).text(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class CrazyLettersJokeSettings implements JokeSettings {
|
||||||
|
chance: number = 20;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Селектор всех элементов, которые будут затронуты
|
||||||
|
*/
|
||||||
|
selector: string = '.pa-author a';
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
import { Joke, JokeSettings, StopableJoke } from "../joke";
|
||||||
|
import $ from "jquery";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* **Ад гуманитария**
|
||||||
|
*
|
||||||
|
* Все "тся" заменяются на "ться", а все "ться" на "тся".
|
||||||
|
*
|
||||||
|
* @author Kozhilya
|
||||||
|
*/
|
||||||
|
export class HumanitarianHellJoke extends Joke {
|
||||||
|
settings: HumanitarianHellJokeSettings;
|
||||||
|
|
||||||
|
start(): void {
|
||||||
|
$(this.settings.selector).each(function () {
|
||||||
|
$(this).html($(this).html().replace(/(ть?ся)/g, function (fnd) {
|
||||||
|
return (fnd.indexOf('ь') > 0) ? 'тся' : 'ться';
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class HumanitarianHellJokeSettings implements JokeSettings {
|
||||||
|
chance: number = 20;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Селектор всех элементов, которые будут затронуты
|
||||||
|
*/
|
||||||
|
selector: string = '.post-content';
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
import { Joke, JokeSettings, StopableJoke } from "../joke";
|
||||||
|
import $ from "jquery";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* **Зеркало**
|
||||||
|
*
|
||||||
|
* Элементы форума отражаются (по крайней мере, пытаются)
|
||||||
|
*
|
||||||
|
* @author Kozhilya
|
||||||
|
*/
|
||||||
|
export class MirrorJoke extends Joke {
|
||||||
|
settings: MirrorJokeSettings;
|
||||||
|
|
||||||
|
start(): void {
|
||||||
|
$('.post, .post h3, .post-links, .post-author, .post-content')
|
||||||
|
.css('transform', 'scaleX(-1)').css('-moz-transform', 'scaleX(-1)').css('-moz-transform', 'scaleX(-1)').css('filter', 'FlipH').css('-ms-filter', '"FlipH"');
|
||||||
|
$('#pun-title #title-logo').animate('')
|
||||||
|
$('.post-links, .post-links ul, .post h3 span').css('margin-left', '0');
|
||||||
|
$('.post h3 span').css('margin-right', '25em');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class MirrorJokeSettings implements JokeSettings {
|
||||||
|
chance: number = 30;
|
||||||
|
}
|
||||||
+3
-3
@@ -1,7 +1,8 @@
|
|||||||
import { Joke, JokeSettings, StopableJoke } from "../joke";
|
import { Joke, JokeSettings, StopableJoke } from "../joke";
|
||||||
|
import $ from "jquery";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Форумо-трясение
|
* **Форумо-трясение**
|
||||||
*
|
*
|
||||||
* Страница форума начинает трястись
|
* Страница форума начинает трястись
|
||||||
*
|
*
|
||||||
@@ -17,7 +18,6 @@ export class ShakeJoke extends StopableJoke {
|
|||||||
|
|
||||||
private data_name: string = 'april-fools-shake';
|
private data_name: string = 'april-fools-shake';
|
||||||
|
|
||||||
|
|
||||||
rand(a: number): number {
|
rand(a: number): number {
|
||||||
return a + this.settings.force * (Math.random() * 2 - 1);
|
return a + this.settings.force * (Math.random() * 2 - 1);
|
||||||
}
|
}
|
||||||
@@ -85,6 +85,6 @@ export class ShakeJokeSettings implements JokeSettings {
|
|||||||
force: number = 0.5;
|
force: number = 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ShakeJokeMargin {
|
export interface ShakeJokeMargin {
|
||||||
[key: string]: number;
|
[key: string]: number;
|
||||||
}
|
}
|
||||||
+2
-1
@@ -4,7 +4,8 @@
|
|||||||
"lib": ["es2017", "dom"],
|
"lib": ["es2017", "dom"],
|
||||||
"rootDir": "./src/",
|
"rootDir": "./src/",
|
||||||
"outFile": "./bin/april-fools.js",
|
"outFile": "./bin/april-fools.js",
|
||||||
"moduleResolution": "nodenext"
|
"moduleResolution": "nodenext",
|
||||||
|
"esModuleInterop": true
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"src/main.ts"
|
"src/main.ts"
|
||||||
|
|||||||
Reference in New Issue
Block a user