HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers84/zuiderbos.nl/vendor/nqxcode/phpmorphy/src/phpMorphy/Aot/Mwz/File.php
<?php
/*
* This file is part of phpMorphy project
*
* Copyright (c) 2007-2012 Kamaev Vladimir <heromantor@users.sourceforge.net>
*
*     This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
*     This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
*     You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/

class phpMorphy_Aot_Mwz_File {
    protected
        $mwz_path,
        $values = array();

    function __construct($filePath) {
        $this->mwz_path = $filePath;
        $this->parseFile($filePath);
    }

    function export() {
        return $this->values;
    }

    function keyExists($key) {
        return array_key_exists($key, $this->values);
    }

    function getValue($key) {
        if(!$this->keyExists($key)) {
            throw new phpMorphy_Aot_Mrd_Exception("Key $key not exists in mwz file '$this->mwz_path'");
        }

        return $this->values[$key];
    }

    function getMrdPath() {
        return dirname($this->mwz_path) . DIRECTORY_SEPARATOR . $this->getValue('MRD_FILE');
    }

    function getEncoding() {
        $lang = $this->getLanguage();

        if(false === ($default = $this->getEncodingForLang($lang))) {
            throw new phpMorphy_Aot_Mrd_Exception("Can`t determine encoding for '$lang' language");
        }

        return $default;
    }

    function getLanguage() {
        return strtolower($this->getValue('LANG'));
    }

    static function getEncodingForLang($lang) {
        switch(strtolower($lang)) {
            case 'russian':
                return 'windows-1251';
            case 'english':
                return 'windows-1250';
            case 'german':
                return 'windows-1252';
            default:
                return false;
        }
    }

    protected function parseFile($path) {
        try {
            $lines = iterator_to_array($this->openFile($path));
        } catch (Exception $e) {
            throw new phpMorphy_Aot_Mrd_Exception("Can`t open $path mwz file '$path': " . $e->getMessage());
        }

        foreach(array_map('trim', $lines) as $line) {
            $pos = strcspn($line, " \t");

            if($pos !== strlen($line)) {
                $key = trim(substr($line, 0, $pos));
                $value = trim(substr($line, $pos + 1));

                if(strlen($key)) {
                    $this->values[$key] = $value;
                }
            } elseif(strlen($line)) {
                $this->values[$line] = null;
            }
        }
    }

    protected function openFile($file) {
        return new SplFileObject($file);
    }
}