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 | ' ~', |
||
| 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> |