-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtransliterate-cyrillic.php
106 lines (99 loc) · 2.72 KB
/
transliterate-cyrillic.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
namespace Grav\Plugin;
use Grav\Common\Grav;
use Grav\Common\Plugin;
use Grav\Common\Page\Page;
use Grav\Common\Twig\Twig;
use RocketTheme\Toolbox\Event\Event;
require 'transliterate-cyrillic-method.php';
use TransliterateCyrillicPlugin\TransliterateCyrillicMethod as TransliterateCyrillic;
/**
* Transliterates cyrillic text into latin
*
* Class TransliterateCyrillicPlugin
*
* @package Grav\Plugin
* @return void
* @license MIT License by Ole Vik
*/
class TransliterateCyrillicPlugin extends Plugin
{
/**
* Register events with Grav
*
* @return array
*/
public static function getSubscribedEvents()
{
return [
'onPluginsInitialized' => ['onPluginsInitialized', 0]
];
}
/**
* Initialize the plugin
*
* @return array
*/
public function onPluginsInitialized()
{
if ($this->isAdmin()) {
return;
}
$config = (array) $this->config->get('plugins');
$config = $config['transliterate-cyrillic'];
if (!isset($config['event'])) {
if ($config['mode'] == 'markdown') {
$event = 'onPageContentRaw';
} elseif ($config['mode'] == 'html') {
$event = 'onPageContentProcessed';
} else {
$event = 'onPageContentProcessed';
}
} else {
$event = $config['event'];
}
if ($config['enabled']) {
$this->enable(
[
$event => ['output', 0],
'onTwigExtensions' => ['onTwigExtensions', 0]
]
);
} else {
return;
}
}
/**
* Replaces content with transliterated Cyrillic content
*
* @param Event $event Instance of RocketTheme\Toolbox\Event\Event
*
* @return void
*/
public function output(Event $event)
{
$page = $event['page'];
$config = (array) $this->config->get('plugins');
$config = $config['transliterate-cyrillic'];
if ($config['mode'] == 'markdown') {
$content = $page->getRawContent();
$content = TransliterateCyrillic::process($content);
} elseif ($config['mode'] == 'html') {
$content = $page->content();
$content = TransliterateCyrillic::process($content);
} else {
return;
}
$page->setRawContent($content);
}
/**
* Add Twig Extension
*
* @return void
*/
public function onTwigExtensions()
{
include_once __DIR__ . '/twig/TransliterateCyrillicExtension.php';
$this->grav['twig']->twig->addExtension(new TransliterateCyrillicExtension());
}
}