Skip to content

Commit 265c77b

Browse files
committed
implement json source
1 parent fef33f3 commit 265c77b

26 files changed

+178
-273
lines changed

.gitattributes

+2
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,5 @@
99
.php_cs export-ignore
1010
.travis.yml export-ignore
1111
phpunit.xml.dist export-ignore
12+
pint.json export-ignore
13+

.php_cs

-114
This file was deleted.

.scrutinizer.yml

-21
This file was deleted.

.styleci.yml

-3
This file was deleted.

.travis.yml

-44
This file was deleted.

phpcs.xml

-20
This file was deleted.

pint.json

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"preset": "psr12"
3+
}

resources/Zip32_11208.zip

472 KB
Binary file not shown.

resources/Zip32_utf8_10501_1.zip

-416 KB
Binary file not shown.

resources/converter.php

+33-12
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@
22

33
include __DIR__.'/../vendor/autoload.php';
44

5-
use Recca0120\Twzipcode\Sources\CSV;
5+
use Recca0120\Twzipcode\Sources\Csv;
6+
use Recca0120\Twzipcode\Sources\Json;
67
use Recca0120\Twzipcode\Storages\File;
78

9+
// https://data.gov.tw/dataset/5948
10+
$downloadUrl = 'https://quality.data.gov.tw/dq_download_json.php?nid=5948&md5_url=e1f6004ad33eb3ff3a824fb992a4b01a';
11+
$extension = 'json';
12+
$file = __DIR__.'/Zip32_11208.zip';
13+
814
set_error_handler(static function ($severity, $message, $file, $line) {
915
throw new ErrorException($message, $severity, $severity, $file, $line);
1016
});
1117

12-
$start = microtime(true);
13-
$file = __DIR__.'/Zip32_utf8_10501_1.zip';
14-
15-
// https://data.gov.tw/dataset/5948
16-
$url = 'https://quality.data.gov.tw/dq_download_csv.php?nid=5948&md5_url=e1f6004ad33eb3ff3a824fb992a4b01a';
17-
18-
if (file_exists($file) === false) {
19-
touch($file);
18+
function csv($url)
19+
{
2020
$contents = file_get_contents($url);
2121

2222
$encoding = mb_detect_encoding($contents, ['UCS-2LE', 'BIG5', 'UTF-8']);
@@ -30,11 +30,32 @@
3030
throw new RuntimeException($contents);
3131
}
3232

33-
$zip = new ZipArchive;
33+
return $contents;
34+
}
35+
36+
function json($url)
37+
{
38+
return file_get_contents($url);
39+
}
40+
41+
$start = microtime(true);
42+
if (file_exists($file) === false) {
43+
$contents = $extension($downloadUrl);
44+
45+
touch($file);
46+
$zip = new ZipArchive();
3447
$zip->open($file, ZipArchive::OVERWRITE);
35-
$zip->addFromString(pathinfo($file, PATHINFO_FILENAME).'.csv', $contents);
48+
$zip->addFromString(pathinfo($file, PATHINFO_FILENAME).'.'.$extension, $contents);
3649
$zip->close();
3750
}
3851

39-
(new File)->load(new CSV($file));
52+
$lookup = [
53+
'csv' => Csv::class,
54+
'json' => Json::class,
55+
];
56+
$class = $lookup[$extension];
57+
58+
$source = new $class($file);
59+
60+
(new File())->load($source);
4061
echo 'benchmark: '.(microtime(true) - $start)."\n";

resources/data/zip5.rules

-7.73 KB
Binary file not shown.

ruleset.xml

-29
This file was deleted.

src/Address.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@
77
class Address
88
{
99
/** @var int */
10-
const NO = 0;
10+
public const NO = 0;
1111

1212
/** @var int */
13-
const SUBNO = 1;
13+
public const SUBNO = 1;
1414

1515
/** @var int */
16-
const NAME = 2;
16+
public const NAME = 2;
1717

1818
/** @var int */
19-
const UNIT = 3;
19+
public const UNIT = 3;
2020

2121
/** @var Normalizer */
2222
public $normalizer;

src/Rule.php

+9-4
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,8 @@ private function tokenize($rule, Closure $addressResolver)
138138
'[連至單雙全](?=[\d全]|$)',
139139
];
140140

141-
$addressResolver($this->normalize($rule)->replace('/'.implode('|', $pattern).'/u',
141+
$addressResolver($this->normalize($rule)->replace(
142+
'/'.implode('|', $pattern).'/u',
142143
function ($m) use (&$tokens) {
143144
$token = &$m[0];
144145
if ($token === '') {
@@ -148,7 +149,8 @@ function ($m) use (&$tokens) {
148149
$tokens[] = $token;
149150

150151
return $token === '附號全' ? '' : '';
151-
}));
152+
}
153+
));
152154

153155
return $tokens;
154156
}
@@ -187,8 +189,11 @@ private function normalizeAddress(Address $address, JArray $ruleAddressTokens)
187189

188190
return new Address(
189191
new JArray($address->tokens()->filter(function ($token) use ($removeUnits) {
190-
return isset($token[Address::UNIT]) === true && in_array($token[Address::UNIT], $removeUnits,
191-
true) === false;
192+
return isset($token[Address::UNIT]) === true && in_array(
193+
$token[Address::UNIT],
194+
$removeUnits,
195+
true
196+
) === false;
192197
})->map(function ($token) {
193198
return implode('', $token);
194199
}))

src/Rules.php

+1-4
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,9 @@ class Rules
1414
*/
1515
private $storage;
1616

17-
/**
18-
* @param Storage|null $storage
19-
*/
2017
public function __construct(Storage $storage = null)
2118
{
22-
$this->storage = $storage ?: new File;
19+
$this->storage = $storage ?: new File();
2320
}
2421

2522
/**

src/Sources/CSV.php src/Sources/Csv.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Recca0120\Twzipcode\Sources;
44

5-
class CSV extends Source
5+
class Csv extends Source
66
{
77
/** @var string */
88
protected $file;

0 commit comments

Comments
 (0)