-
Notifications
You must be signed in to change notification settings - Fork 0
/
vulgar_fractions_filter.module
63 lines (57 loc) · 1.75 KB
/
vulgar_fractions_filter.module
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
<?php
/**
* Implementation of hook_filter_tips().
*
* This hook allows filters to provide help text to users during the content
* editing process. Short tips are provided on the content editing screen, while
* long tips are provided on a separate linked page. Short tips are optional,
* but long tips are highly recommended.
*/
function vulgar_fractions_filter_filter_tips($delta, $format, $long = FALSE) {
switch ($delta) {
case 0:
if ($long) {
return t('Replaces fractions written as "1/2" with HTML entities representing vulgar fractions such as ½.');
}
else {
return t('Use 1/2 to represent ½');
}
break;
}
}
/**
* Implementation of hook_filter
*
* converts vulgar fractions written in the form 1/2 to HTML entities
*
*/
function vulgar_fractions_filter_filter($op, $delta = 0, $format = -1, $text = '', $cache_id = 0) {
switch($op) {
case 'list':
return array(0 => t('Fraction filter'));
case
'prepare':
return $text;
case
'process':
// convert 1/2
$text = preg_replace('@([\s-]|^)1/2([\s"]|$)@', '$1½$2', $text);
// convert 1/4
$text = preg_replace('@([\s-]|^)1/4([\s"]|$)@', '$1¼$2', $text);
// convert 3/4
$text = preg_replace('@([\s-]|^)3/4([\s"]|$)@', '$1¾$2', $text);
// convert 1/3
$text = preg_replace('@([\s-]|^)1/3([\s"]|$)@', '$1⅓$2', $text);
// convert 2/3
$text = preg_replace('@([\s-]|^)2/3([\s"]|$)@', '$1⅔$2', $text);
// convert 1/6
$text = preg_replace('@([\s-]|^)1/6([\s"]|$)@', '$1⅙$2', $text);
// convert 1/8
$text = preg_replace('@([\s-]|^)1/8([\s"]|$)@', '$1⅛$2', $text);
return $text;
default:
return
$text;
}
}
?>