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
|
<?php if (!defined('PmWiki')) exit();
/* Copyright 2001-2017 Patrick R. Michaud (pmichaud@pobox.com)
This file is part of PmWiki; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
by the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. See pmwiki.php for full details.
This script adds WikiWord (CamelCase) processing to PmWiki.
Originally WikiWords were part of the default configuration,
but their usage has died out over time and so it's now optional.
To enable WikiWord links, simply add the following to
a local customization file:
$EnableWikiWords = 1;
To have PmWiki recognize and process WikiWords but not link
them (i.e., the default behavior in PmWiki 2.1), also add
$LinkWikiWords = 0;
If you want only the first occurrence of a WikiWord to be converted
to a link, set $WikiWordCountMax=1.
$WikiWordCountMax = 1; # converts only first WikiWord
$WikiWordCountMax = 0; # another way to disable WikiWord links
The $WikiWordCount array can be used to control the number of times
a WikiWord is converted to a link. This is useful for disabling
or limiting specific WikiWords.
$WikiWordCount['PhD'] = 0; # disables 'PhD'
$WikiWordCount['PmWiki'] = 1; # convert only first 'PmWiki'
$WikiWordCount['WikiWord'] = -1; # ignore $SpaceWikiWord setting
By default, PmWiki is configured such that only the first occurrence
of 'PmWiki' in a page is treated as a WikiWord. If you want to
restore 'PmWiki' to be treated like other WikiWords, uncomment the
line below.
unset($WikiWordCount['PmWiki']);
If you want to disable WikiWords matching a pattern, you can use
something like the following. Note that the first argument has to
be different for each call to Markup(). The example below disables
WikiWord links like COM1, COM2, COM1234, etc.
Markup('COM\d+', '<wikilink', '/\\bCOM\\d+/', "Keep");
Script maintained by Petko YOTOV www.pmwiki.org/petko
*/
SDV($LinkWikiWords, 1);
## bare wikilinks
Markup('wikilink', '>urllink',
"/\\b(?<![#&])($GroupPattern([\\/.]))?($WikiWordPattern)/",
"MarkupWikiLink");
function MarkupWikiLink($m) {
extract($GLOBALS["MarkupToHTML"]); # get $pagename
return Keep('<span class="wikiword">'.WikiLink($pagename,$m[0]).'</span>', 'L');
}
function WikiLink($pagename, $word) {
global $LinkWikiWords, $WikiWordCount, $SpaceWikiWords, $AsSpacedFunction,
$MarkupFrame, $WikiWordCountMax;
if (!$LinkWikiWords || (@$WikiWordCount[$word] < 0)) return $word;
$text = ($SpaceWikiWords) ? $AsSpacedFunction($word) : $word;
$text = preg_replace('!.*/!', '', $text);
if (!isset($MarkupFrame[0]['wwcount'][$word]))
$MarkupFrame[0]['wwcount'][$word] = $WikiWordCountMax;
if ($MarkupFrame[0]['wwcount'][$word]-- < 1) return $text;
return MakeLink($pagename, $word, $text);
}
|