Subversion Repositories LCARS

Rev

Rev 224 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
223 PointedEar 1
<!DOCTYPE html>
2
<html lang="en"">
3
  <head>
4
    <meta charset="UTF-8">
5
    <title>Modern Golic Vulcan – Federation Standard English Dictionary</title>
6
    <style type="text/css">
7
      ol {
8
        padding-left: 0;
9
        list-style-type: none;
10
      }
11
 
12
      ol li {
13
        margin-left: 0;
14
      }
15
 
16
      ol ol {
17
        padding-left: 1em;
18
      }
19
    </style>
20
  </head>
21
 
22
  <body>
23
    <h1>Modern Golic Vulcan – Federation Standard English Dictionary</h1>
24
      <?php
25
        define('REGEXP_PREFIX_EXAMPLE', '/^ex\s*=\s*/');
26
 
27
        $source_lang = 'vuh-Latn-Gol-modern';
28
        $target_lang = 'en-Latn-Federation';
29
        $lines = file('vul-gol-en.dict');
30
 
31
        if ($lines)
32
        {
33
          $last_indent = -1;
34
          $last_phrases = array();
35
 
36
          foreach ($lines as $line)
37
          {
38
            preg_match('/^(?<lws>\s*)(?<phrase>[^:]+)\s*:\s*(?<transl>.+)/u', $line, $matches);
39
// var_dump($matches);
40
            if ($matches)
41
            {
42
              $phrase = $matches['phrase'];
43
 
44
              if (mb_strpos($phrase, '#') === false)
45
              {
46
                $indent = mb_strlen($matches['lws']) / 2;
47
 
48
                if ($indent > $last_indent)
49
                {
50
                  echo '<ol>';
51
                }
52
                else
53
                {
54
                  echo str_repeat('</ol>', $last_indent - $indent);
55
                }
56
 
57
                echo '<li>';
58
 
59
                $is_example = preg_match(REGEXP_PREFIX_EXAMPLE, $phrase);
60
                if ($is_example)
61
                {
62
                  $phrase = preg_replace(REGEXP_PREFIX_EXAMPLE, '', $phrase);
63
                }
64
 
65
                if ($indent > $last_indent)
66
                {
67
                  $last_phrases[] = $phrase;
68
                }
69
                else if ($indent < $last_indent)
70
                {
71
                  $last_phrases = array_slice($last_phrases, 0, $indent + 1);
72
                }
73
 
74
                if ($indent <= $last_indent)
75
                {
76
                  $last_phrases[count($last_phrases) - 1] = $phrase;
77
                }
78
 
79
                $phrase = preg_replace(
80
                  array(
81
                    '/~/',
82
                    '/[()]/',
83
                  ),
84
                  array(
85
                    '=',
86
                    '|',
87
                  ),
88
                  $phrase);
89
 
90
                if ($last_phrases)
91
                {
92
                  end($last_phrases);
93
 
94
                  while (($last_phrase = prev($last_phrases)) !== false)
95
                  {
96
                    while (mb_strlen($last_phrase) > 1)
97
                    {
98
                      if (preg_match('/' . preg_quote($last_phrase) . '/i',
99
                            $phrase, $last_sub_matches))
100
                      {
101
                        $phrase = preg_replace('/' . $last_sub_matches[0] . '/i',
102
                          '<u>\\0</u>', $phrase);
103
                        break 2;
104
                      }
105
 
106
                      $last_phrase = mb_strcut($last_phrase, 0, mb_strlen($last_phrase) - 1);
107
                    }
108
                  }
109
                }
110
 
111
                $transl = preg_replace(
112
                  array(
113
                    '/"([^"]+)"/',
114
                    '/\\/([\\s\\w\'()-]+)\\//u',
115
                    '/\|(.*)(?<!\|)/',
116
                    '/\\s+~/',
117
                  ),
118
                  array(
119
                    '“\\1”',
120
                    '<i lang="' . $source_lang . '">\\1</i>',
121
                    '/\\1',
122
                    '&nbsp;~',
123
                  ),
124
                  strip_tags($matches['transl']));
125
 
126
                echo ($is_example ? "<i lang='$source_lang'>" : "<b lang='$source_lang'>")
127
                  . $phrase
128
                  . ($is_example ? '</i>' : '</b>')
129
                  . " <span lang='$target_lang'>" . $transl . '</span>';
130
 
131
                $last_indent = $indent;
132
              }
133
            }
134
          }
135
        ?>
136
    </ol>
137
  <?php } ?>
138
  </body>
139
</html>