Files
faveo/vendor/giggsey/libphonenumber-for-php/build/libphonenumber/buildtools/GenerateTimeZonesMapData.php
2015-12-22 14:09:23 +05:30

78 lines
1.9 KiB
PHP

<?php
namespace libphonenumber\buildtools;
use libphonenumber\PhoneNumberToTimeZonesMapper;
class GenerateTimeZonesMapData
{
const GENERATION_COMMENT = <<<'EOT'
/**
* This file is automatically @generated by {@link GeneratePhonePrefixData}.
* Please don't modify it directly.
*/
EOT;
private $inputTextFile;
public function __construct($inputFile, $outputDir)
{
$this->inputTextFile = $inputFile;
if (!is_readable($this->inputTextFile)) {
throw new \RuntimeException("The provided input text file does not exist.");
}
$data = $this->parseTextFile();
$this->writeMappingFile($outputDir, $data);
}
/**
* Reads phone prefix data from the provided input stream and returns a SortedMap with the
* prefix to time zones mappings.
*/
private function parseTextFile()
{
$data = file($this->inputTextFile);
$timeZoneMap = array();
foreach ($data as $line) {
// Remove \n
$line = str_replace("\n", "", $line);
$line = str_replace("\r", "", $line);
$line = trim($line);
if (strlen($line) == 0 || substr($line, 0, 1) == '#') {
continue;
}
if (strpos($line, '|')) {
// Valid line
$parts = explode('|', $line);
$prefix = $parts[0];
$timezone = $parts[1];
$timeZoneMap[$prefix] = $timezone;
}
}
return $timeZoneMap;
}
private function writeMappingFile($outputFile, $data)
{
$phpSource = '<?php' . PHP_EOL
. self::GENERATION_COMMENT
. 'return ' . var_export($data, true) . ';'
. PHP_EOL;
$outputPath = $outputFile . DIRECTORY_SEPARATOR . PhoneNumberToTimeZonesMapper::MAPPING_DATA_FILE_NAME;
file_put_contents($outputPath, $phpSource);
}
}