Files
oddmuse/modules/mac.pl
Alex Schroeder 8f3db6ebfe Changed EN DASH to - in copyright lines
The EN DASH is not really required in year ranges such as 2012–2015 when
we're talking about comments in source code that is probably being
displayed in a fixed font anyway. Changing back to an ordinary hypen
allows us to make a meaningful test for use utf8.
2015-07-28 22:14:37 +02:00

96 lines
2.6 KiB
Perl

# Copyright (C) 2005-2015 Alex Schroeder <alex@gnu.org>
#
# This program is free software: 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 3 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.
use strict;
AddModuleDescription('mac.pl', 'Mac');
our (%InterSite, %IndexHash, @IndexList, @MyInitVariables, $UseGrep, %Namespaces, $NamespaceRoot);
use Unicode::Normalize;
*OldMacAllPagesList = \&AllPagesList;
*AllPagesList = \&NewMacAllPagesList;
sub NewMacAllPagesList {
return @IndexList if @IndexList and not GetParam('refresh', 0);
OldMacAllPagesList(@_);
my @new = ();
%IndexHash = ();
foreach my $id (@IndexList) {
$id = NFC($id);
push(@new, $id);
$IndexHash{$id} = 1;
}
@IndexList = @new;
return @new;
}
*OldMacGrepFiltered = \&GrepFiltered;
*GrepFiltered = \&NewMacGrepFiltered;
sub NewMacGrepFiltered {
my @pages = OldMacGrepFiltered(@_);
foreach my $id (@pages) {
$id = NFC($id);
}
return @pages;
}
push(@MyInitVariables, \&MacFixEncoding);
sub MacFixEncoding {
# disable grep if searching for non-ascii stuff:
# $ mkdir /tmp/dir
# $ echo schroeder > /tmp/dir/schroeder
# $ echo schröder > /tmp/dir/schröder
# $ echo SCHRÖDER > /tmp/dir/SCHRÖDER-UP # don't use SCHRÖDER because of HFS
# $ grep -rli schröder /tmp/dir
# /tmp/dir/schröder
# $ grep -rli SCHRÖDER /tmp/dir
# /tmp/dir/schröder
#
# Why is grep not finding the upper case variant in the SCHRÖDER-UP
# file?
$UseGrep = 0 if GetParam('search', '') =~ /[x{0080}-\x{fffd}]/;
# the rest is only necessary if using namespaces.pl
return unless %Namespaces;
my %hash = ();
for my $key (keys %Namespaces) {
utf8::decode($key);
$key = NFC($key);
$hash{$key} = $NamespaceRoot . '/' . $key . '/';
}
%Namespaces = %hash;
%hash = ();
for my $key (keys %InterSite) {
utf8::decode($key);
$key = NFC($key);
$hash{$key} = $Namespaces{$key} if $Namespaces{$key};
}
%InterSite = %hash;
}
# for drafts.pl
*OldMacDraftFiles = \&DraftFiles;
*DraftFiles = \&NewMacDraftFiles;
sub NewMacDraftFiles {
return map { NFC($_) } OldMacDraftFiles(@_);
}