Rev 223 |
    Rev 230 |
    Go to most recent revision |
    Blame |
    Compare with Previous |
    Last modification |
    View Log
    | RSS feed
  
  
    1
  
  
<!DOCTYPE html>
<html lang="en"">
  <head>
    <meta charset="UTF-8">
    <title>Modern Golic Vulcan – Federation Standard English Dictionary</title>
    <style type="text/css">
      ol {
        padding-left: 0;
        list-style-type: none;
      }
      ol li {
        margin-left: 0;
      }
      ol ol {
        padding-left: 1em;
      }
    </style>
  </head>
  <body>
    <h1>Modern Golic Vulcan – Federation Standard English Dictionary</h1>
      
<?php
        define('REGEXP_PREFIX_EXAMPLE', '/^ex\s*=\s*/');
        $source_lang = 'vuh-Latn-Gol-modern';
        $target_lang = 'en-Latn-Federation';
        $lines = file('vul-gol-en.dict');
        if ($lines)
        {
          $last_indent = -1;
          $last_phrases = array();
          foreach ($lines as $line)
          {
            preg_match('/^(?<lws>\s*)(?<phrase>[^:]+)\s*:\s*(?<transl>.+)/u', $line, $matches);
// var_dump($matches);
            if ($matches)
            {
              $phrase = $matches['phrase'];
              if (mb_strpos($phrase, '#') === false)
              {
                $indent = mb_strlen($matches['lws']) / 2;
                if ($indent > $last_indent)
                {
                  echo '<ol>';
                }
                else
                {
                  echo str_repeat('</ol>', $last_indent - $indent);
                }
                echo '<li>';
                $is_example = preg_match(REGEXP_PREFIX_EXAMPLE
, $phrase);
                if ($is_example)
                {
                  $phrase = preg_replace(REGEXP_PREFIX_EXAMPLE
, '', $phrase);
                }
                if ($indent > $last_indent)
                {
                  $last_phrases[] = $phrase;
                }
                else if ($indent < $last_indent)
                {
                  $last_phrases = array_slice($last_phrases, 0, $indent + 1);
                }
                if ($indent <= $last_indent)
                {
                  $last_phrases[count($last_phrases) - 1] = $phrase;
                }
                $phrase = preg_replace(
                  array(
                    '/~/',
                    '/[()]/',
                  ),
                  array(
                    '=',
                    '|',
                  ),
                  $phrase);
                if ($last_phrases)
                {
                  end($last_phrases);
                  while (($last_phrase = prev($last_phrases)) !== false)
                  {
                    while (mb_strlen($last_phrase) > 1)
                    {
                      if (preg_match('/' . preg_quote($last_phrase) . '/i',
                            $phrase, $last_sub_matches))
                      {
                        $phrase = preg_replace('/' . $last_sub_matches[0] . '/i',
                          '<u>\\0</u>', $phrase);
                        break 2;
                      }
                      $last_phrase = mb_strcut($last_phrase, 0, mb_strlen($last_phrase) - 1);
                    }
                  }
                }
                $transl = preg_replace(
                  array(
                    '/"([^"]+)"/',
                    '/\\/([\\s\\w\'()-]+)\\//u',
                    '/\|(.*)(?<!\|)/',
                    '/\\s+~/',
                  ),
                  array(
                    '“\\1”',
                    '<i lang="' . $source_lang . '">\\1</i>',
                    '/\\1',
                    ' ~',
                  ),
                  $matches['transl']);
                echo ($is_example ? 
"<i lang='$source_lang'>" : "<b lang='$source_lang'>")
                  . $phrase
                  . ($is_example ? 
'</i>' : '</b>')
                  . " <span lang='$target_lang'>" . $transl . '</span>';
                $last_indent = $indent;
              }
            }
          }
        ?>
    </ol>
  
<?php } ?>
  </body>
</html>