root/trunk/pukiwiki2tracwiki/pukiwiki2tracwiki.sh

Revision 118, 1.7 kB (checked in by akiyan, 2 years ago)

maintenance

  • Property svn:executable set to *
Line 
1 #!/usr/local/bin/php
2 <?php
3 $body = join('', file('php://stdin'));
4 $body = convHead($body);
5 $body = convPre($body);
6 $body = convList($body);
7 $body = removeAnchor($body);
8 $body = convLink($body);
9 $body = convModule($body);
10 echo $body . "\n";
11
12 function convHead($body)
13 {
14   //preg_match_all('!^\*.*$!m', $body, $match); var_dump($match);exit;
15   $body = preg_replace('!^\*([^\*].*)$!m', '= $1 =', $body);
16   $body = preg_replace('!^\*\*([^\*].*)$!m', '== $1 ==', $body);
17   $body = preg_replace('!^\*\*\*([^\*].*)$!m', '=== $1 ===', $body);
18   //var_dump($body);exit;
19   return $body;
20 }
21 function convPre($body)
22 {
23   $lines = mb_split("\n", $body);
24   $result = array();
25   $start_pre = false;
26   foreach ($lines as $line) {
27     if (preg_match('!^ !', $line)) {
28       if (!$start_pre) {
29         $start_pre = true;
30         $result[] = '{{{';
31       }
32       $result[] = preg_replace('!^ !', '', $line);
33     } else {
34       if ($start_pre) {
35         $result[] = '}}}';
36       }
37       $start_pre = false;
38       $result[] = $line;
39     }
40   }
41   if ($start_pre) {
42    $result[] = '}}}';
43   }
44   return join("\n", $result);
45 }
46 function convLIst($body)
47 {
48   $body = preg_replace('!^-!m', ' * ', $body);
49   return $body;
50 }
51 function removeAnchor($body)
52 {
53   $body = preg_replace('!\[#[^\]]+]!m', '', $body);
54   return $body;
55 }
56 function convModule($body)
57 {
58   $body = preg_replace('!^#contents!m', '[[PageOutline]]', $body);
59   $body = preg_replace('!^#ls2\((.+?)\)!m', '[[TitleIndex($1)]]', $body);
60   $body = preg_replace('!^#ref\((.+?)\)!m', 'attachment:"$1"', $body);
61   return $body;
62 }
63 function convLink($body)
64 {
65   $body = preg_replace('!\[\[(.+?):(.+?)\]\]!m', '[$2 $1]', $body);
66   $body = preg_replace('!\[\[([^:]+?)\]\]!m', '[wiki:$1]', $body);
67   return $body;
68 }
69 ?>
Note: See TracBrowser for help on using the browser.