xref: /aoo4110/main/solenv/bin/convertlinks.pl (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski#**************************************************************
2*b1cdbd2cSJim Jagielski#
3*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
6*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski#
11*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski#
13*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski#  under the License.
19*b1cdbd2cSJim Jagielski#
20*b1cdbd2cSJim Jagielski#**************************************************************
21*b1cdbd2cSJim Jagielski#
22*b1cdbd2cSJim Jagielski# convertlinks - a perl script to make hrefs to
23*b1cdbd2cSJim Jagielski# http://api.openoffice.org/common/ref relativ.
24*b1cdbd2cSJim Jagielski#
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielskiuse File::Find;
27*b1cdbd2cSJim Jagielski
28*b1cdbd2cSJim Jagielski# for the convenience of &wanted calls, including -eval statements:
29*b1cdbd2cSJim Jagielskiuse vars qw/*name *dir/;
30*b1cdbd2cSJim Jagielski*name   = *File::Find::name;
31*b1cdbd2cSJim Jagielski*dir    = *File::Find::dir;
32*b1cdbd2cSJim Jagielski@files = ();
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielskiif($#ARGV == 1)
35*b1cdbd2cSJim Jagielski{
36*b1cdbd2cSJim Jagielski	$pattern = "www";
37*b1cdbd2cSJim Jagielski} else
38*b1cdbd2cSJim Jagielski{
39*b1cdbd2cSJim Jagielski	$pattern = $ARGV[2];
40*b1cdbd2cSJim Jagielski}
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielskifind(\&wanted, "$ARGV[0]");
43*b1cdbd2cSJim Jagielski
44*b1cdbd2cSJim Jagielski$return = 1;
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielskiforeach $i (@files)
47*b1cdbd2cSJim Jagielski{
48*b1cdbd2cSJim Jagielski	next if( $i->{directory} =~ /.*common((\/|\\)ref(.*))/ ||
49*b1cdbd2cSJim Jagielski		 $i->{directory} =~ /.*cpp((\/|\\)ref(.*))/ ||
50*b1cdbd2cSJim Jagielski		 $i->{directory} =~ /.*java((\/|\\)ref(.*))/ );
51*b1cdbd2cSJim Jagielski
52*b1cdbd2cSJim Jagielski	open ( FILEIN, $i->{filename} ) || die "could not open $i->{filename} for reading";
53*b1cdbd2cSJim Jagielski
54*b1cdbd2cSJim Jagielski	$relPath = ".";
55*b1cdbd2cSJim Jagielski	$relToSource = ".";
56*b1cdbd2cSJim Jagielski	if( $i->{directory} =~ /.*$pattern((\/|\\)(.*))/ )
57*b1cdbd2cSJim Jagielski	{
58*b1cdbd2cSJim Jagielski		$relPath = $3;
59*b1cdbd2cSJim Jagielski		$relPath =~ s#\w+#\.\.#go;
60*b1cdbd2cSJim Jagielski		if($pattern eq "examples")
61*b1cdbd2cSJim Jagielski		{
62*b1cdbd2cSJim Jagielski			$relPath = "\.\.\/$relPath";
63*b1cdbd2cSJim Jagielski		}
64*b1cdbd2cSJim Jagielski		if($pattern eq "www")
65*b1cdbd2cSJim Jagielski		{
66*b1cdbd2cSJim Jagielski			$relToSource = "\.\.\/$relPath";
67*b1cdbd2cSJim Jagielski		} else
68*b1cdbd2cSJim Jagielski		{
69*b1cdbd2cSJim Jagielski			$relToSource = $relPath;
70*b1cdbd2cSJim Jagielski		}
71*b1cdbd2cSJim Jagielski	} else
72*b1cdbd2cSJim Jagielski	{
73*b1cdbd2cSJim Jagielski		if($pattern eq "examples")
74*b1cdbd2cSJim Jagielski		{
75*b1cdbd2cSJim Jagielski			$relPath = "\.\.";
76*b1cdbd2cSJim Jagielski		}
77*b1cdbd2cSJim Jagielski		if($pattern eq "www")
78*b1cdbd2cSJim Jagielski		{
79*b1cdbd2cSJim Jagielski			$relToSource = "\.\.";
80*b1cdbd2cSJim Jagielski		} else
81*b1cdbd2cSJim Jagielski		{
82*b1cdbd2cSJim Jagielski			$relToSource = $relPath;
83*b1cdbd2cSJim Jagielski		}
84*b1cdbd2cSJim Jagielski	}
85*b1cdbd2cSJim Jagielski
86*b1cdbd2cSJim Jagielski	@lines = <FILEIN>;
87*b1cdbd2cSJim Jagielski	close( FILEIN );
88*b1cdbd2cSJim Jagielski	open( FILEOUT, ">$i->{filename}.tmp" ) || die "could not open $i->{filename} for writing";
89*b1cdbd2cSJim Jagielski	foreach $_ (@lines)
90*b1cdbd2cSJim Jagielski	{
91*b1cdbd2cSJim Jagielski		# change the refenreces to the index in dependency of UDK or ODK
92*b1cdbd2cSJim Jagielski		if("$ARGV[1]" eq "udk_" | "$ARGV[1]" eq "odk_")
93*b1cdbd2cSJim Jagielski		{
94*b1cdbd2cSJim Jagielski			s#((\")(index.html\"))#$2$ARGV[1]$3#go;
95*b1cdbd2cSJim Jagielski			s#((\/|\")(faq.html\"))#$2$ARGV[1]$3#go;
96*b1cdbd2cSJim Jagielski			s#((\/|\")(bylaws.html\"))#$2$ARGV[1]$3#go;
97*b1cdbd2cSJim Jagielski		}
98*b1cdbd2cSJim Jagielski
99*b1cdbd2cSJim Jagielski		s#((http:\/\/api\.openoffice\.org\/)(common\/ref[^\"]+))#$relPath\/$3#go;
100*b1cdbd2cSJim Jagielski		s#((http:\/\/api\.openoffice\.org\/unbranded-source\/)(.*)(examples\/examples.html))#$relToSource\/$4#go;
101*b1cdbd2cSJim Jagielski
102*b1cdbd2cSJim Jagielski		if($pattern eq "examples")
103*b1cdbd2cSJim Jagielski		{
104*b1cdbd2cSJim Jagielski			# change the links for the C++/Java examples in the ODK
105*b1cdbd2cSJim Jagielski			s#((http:\/\/api\.openoffice\.org\/source\/browse\/api\/odk\/examples\/)(java\/*))#$3#go;
106*b1cdbd2cSJim Jagielski			s#((http:\/\/api\.openoffice\.org\/source\/browse\/api\/odk\/examples\/)(cpp\/*))#$3#go;
107*b1cdbd2cSJim Jagielski			s#((http:\/\/api\.openoffice\.org\/source\/browse\/api\/odk\/examples\/)(basic\/*))#$3#go;
108*b1cdbd2cSJim Jagielski			s#((http:\/\/api\.openoffice\.org\/source\/browse\/api\/odk\/examples\/)(OLE\/*))#$3#go;
109*b1cdbd2cSJim Jagielski
110*b1cdbd2cSJim Jagielski			# change link api specific stuff
111*b1cdbd2cSJim Jagielski			s#((http:\/\/api\.openoffice\.org\/)(design_guide.html))#$relPath\/www\/$3#go;
112*b1cdbd2cSJim Jagielski			s#(http:\/\/api\.openoffice\.org\/index.html)#$relPath\/www\/odk_index.html#go;
113*b1cdbd2cSJim Jagielski
114*b1cdbd2cSJim Jagielski			# change the links for the C++ examples in the UDK
115*b1cdbd2cSJim Jagielski			s#((http:\/\/udk\.openoffice\.org\/source\/browse\/udk\/product\/examples\/)(cpp\/*))#$3#go;
116*b1cdbd2cSJim Jagielski
117*b1cdbd2cSJim Jagielski			# change the links to udk.openoffice.org to relativ links
118*b1cdbd2cSJim Jagielski			s#(http:\/\/udk\.openoffice\.org\/index.html)#$relPath\/www\/udk_index.html#go;
119*b1cdbd2cSJim Jagielski			s#((http:\/\/udk\.openoffice\.org)(\/*))#$relPath\/www$3#go;
120*b1cdbd2cSJim Jagielski
121*b1cdbd2cSJim Jagielski			# change the link to tutorial
122*b1cdbd2cSJim Jagielski			s#((http:\/\/api\.openoffice\.org\/)(basic\/man\/tutorial\/tutorial.pdf))#$relPath\/www\/$3#go;
123*b1cdbd2cSJim Jagielski		}
124*b1cdbd2cSJim Jagielski		print FILEOUT $_;
125*b1cdbd2cSJim Jagielski	}
126*b1cdbd2cSJim Jagielski	close FILEOUT;
127*b1cdbd2cSJim Jagielski	chmod 0666, $i->{filename};
128*b1cdbd2cSJim Jagielski	rename "$i->{filename}.tmp", $i->{filename} || die "could not rename $i->{filename}.tmp to $i->{filename}";
129*b1cdbd2cSJim Jagielski	$return = 0;
130*b1cdbd2cSJim Jagielski}
131*b1cdbd2cSJim Jagielski
132*b1cdbd2cSJim Jagielskiexit $return;
133*b1cdbd2cSJim Jagielski
134*b1cdbd2cSJim Jagielskisub wanted {
135*b1cdbd2cSJim Jagielski    %file = (
136*b1cdbd2cSJim Jagielski	     directory => $dir,
137*b1cdbd2cSJim Jagielski	     filename  => $name
138*b1cdbd2cSJim Jagielski	     );
139*b1cdbd2cSJim Jagielski    push @files, {%file} if /^.*\.html\z/s;
140*b1cdbd2cSJim Jagielski}
141