source: subversion/sites/www.openstreetbrowser.org/src/wiki_stuff.php @ 19726

Last change on this file since 19726 was 19714, checked in by skunk, 10 years ago

Script to parse wiki-data and create config

File size: 2.1 KB
Line 
1<?
2/* this file holds functions to read config from wiki-stylesheet
3*/
4
5function get_row($r, $f) {
6  $row=array();
7
8  if(substr($r, 0, 2)=="|-")
9    return null;
10  if(substr($r, 0, 2)=="|}")
11    return null;
12
13  do {
14    $cells=explode("||", $r);
15    if($cells[0]=="")
16      array_splice($cells, 0, 1);
17    elseif(ereg("^\|.*\|(.*)$", $r, $m))
18      $cells[0]=$m[1];
19
20    $row=array_merge($row, $cells);
21    $r=fgets($f);
22  } while(!in_array(substr($r, 0, 2), array("|-", "|}")));
23
24  return $row;
25}
26
27function read_wiki() {
28  global $wiki_stylesheet;
29  global $columns;
30  $data=array();
31
32  $f=fopen($wiki_stylesheet, "r");
33  unset($this_part);
34
35  while($r=fgets($f)) {
36    $r=chop($r);
37
38    if(ereg("==([^=]+)==", $r, $m)) {
39      $mode=0;
40      $part=trim($m[1]);
41    }
42
43    if(substr($r, 0, 1)=="|") {
44      $this_row=get_row($r, $f);
45
46      if($this_row&&($columns[$part])) { 
47        $src=array();
48        foreach($this_row as $i=>$r2) {
49          $src[$columns[$part][$i]]=trim($r2);
50        }
51     
52        $data[$part][]=$src;
53      }
54    }
55  }
56
57  fclose($f);
58  return $data;
59}
60
61function parse_key($key, $list_columns) {
62  $ret="";
63
64  if(eregi("\{\{Tag\|(.*)\|(.*)\}\}", $key, $m)) {
65    $ret="\"$m[1]\"='$m[2]'";
66    if($i==0)
67      $list_columns[$m[1]][]=$m[2];
68  }
69  elseif(eregi("\{\{Tag\|([^\}]*)\}\}", $key, $m)) {
70    $ret="\"$m[1]\" is not null";
71    if($i==0)
72      $list_columns[$m[1]][]="*";
73  }
74  else {
75    $l1=explode("=", $key);
76    if(sizeof($l1)==1)
77      return null;
78    if($l1[1]=="*") {
79      $ret="\"$l1[0]\" is not null";
80      if($i==0)
81        $list_columns[$l1[0]][]="*";
82    }
83    else {
84      $ret="\"$l1[0]\"='$l1[1]'";
85      if($i==0)
86        $list_columns[$l1[0]][]=$l1[1];
87    }
88  }
89
90  return $ret;
91}
92
93function parse_wholekey($k, $list_columns) {
94  $ret=array();
95
96  $keys_list=explode(",", $k);
97  foreach($keys_list as $keys_part) {
98    $keys=explode(" ", $keys_part);
99
100    $l=array();
101    foreach($keys as $i=>$k) {
102      $l1=parse_key($k, &$list_columns);
103      if($l1) $l[]=$l1;
104    }
105
106    $ret[]=implode(" AND ", $l);
107  }
108
109  if(sizeof($ret)>1)
110    return "(".implode(") OR (", $ret).")";
111  else
112    return $ret[0];
113}
Note: See TracBrowser for help on using the repository browser.