-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathgenerateCurrencyEnum.php
80 lines (57 loc) · 1.56 KB
/
generateCurrencyEnum.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
/**
* This file is part of the Pixidos package.
*
* (c) Ondra Votava <ondra@votava.dev>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
*/
$xml = file_get_contents('https://www.currency-iso.org/dam/downloads/lists/list_one.xml');
/** @noinspection PhpComposerExtensionStubsInspection */
$dom = simplexml_load_string($xml);
$header = <<<HEADER
<?php
/**
* This file is part of the Pixidos package.
*
* (c) Ondra Votava <ondra@votava.dev>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
*/
declare(strict_types=1);
namespace Pixidos\GPWebPay\Enum;
use Grifart\Enum\AutoInstances;
use Grifart\Enum\Enum;
use Stringable;
HEADER;
$docBloc = <<<DOCBLOC
/**
* \n
DOCBLOC;
$classDeffinition = <<<CDEF
final class Currency extends Enum implements Stringable
{
use AutoInstances;
CDEF;
$currencies = [];
$constants = '';
foreach ($dom->CcyTbl->CcyNtry as $ccy) {
$curr = (string)$ccy->Ccy;
if ($curr !== '' && !in_array($curr, $currencies, true)) {
$constants .= ' public const ' . $curr . ' = ' . "'$ccy->CcyNbr'" . '; // ' . $ccy->CcyNm . "\n";
$docBloc .= ' * @method static Currency ' . $curr . "()\n";
$currencies[] = $curr;
}
}
$docBloc .= " */\n";
$content = $header . $docBloc . $classDeffinition . $constants;
$content .= <<<CONTENT
}
CONTENT;
$file = fopen(__DIR__ . '/src/Enum/Currency.php', 'wb');
fwrite($file, $content);
fclose($file);