diff --git a/.ppm_package b/.ppm_package index d533023..72a653f 100644 --- a/.ppm_package +++ b/.ppm_package @@ -1 +1 @@ -src/isolib \ No newline at end of file +src/Isolib \ No newline at end of file diff --git a/Makefile b/Makefile index 41244b4..3d9148f 100644 --- a/Makefile +++ b/Makefile @@ -2,11 +2,11 @@ clean: rm -rf build update: - ppm --generate-package="src/isolib" + ppm --generate-package="src/Isolib" build: mkdir build - ppm --no-intro --compile="src/isolib" --directory="build" + ppm --no-intro --compile="src/Isolib" --directory="build" install: ppm --no-intro --no-prompt --fix-conflict --install="build/net.intellivoid.isolib.ppm" diff --git a/src/Isolib/Isolib.php b/src/Isolib/Isolib.php new file mode 100644 index 0000000..4d96d00 --- /dev/null +++ b/src/Isolib/Isolib.php @@ -0,0 +1,69 @@ +IsoData[strtoupper($IsoData->Iso31662)] = $IsoData; + + $this->Indexer['country'][strtoupper($IsoData->Name)] = strtoupper($IsoData->Iso31662); + $this->Indexer['alpha2'][strtoupper($IsoData->Alpha2)] = strtoupper($IsoData->Iso31662); + $this->Indexer['alpha3'][strtoupper($IsoData->Alpha3)] = strtoupper($IsoData->Iso31662); + $this->Indexer['country_code'][(string)$IsoData->CountryCode] = strtoupper($IsoData->Iso31662); + } + } + + /** + * Resolves the given input into ISO Data + * + * @param string $input + * @return IsoData|null + */ + public function resolve(string $input): ?IsoData + { + $input = strtoupper($input); + + if(isset($this->IsoData[$input])) + return $this->IsoData[$input]; + + if(isset($this->Indexer['alpha2'][$input])) + return $this->IsoData[$this->Indexer['alpha2'][$input]]; + + if(isset($this->Indexer['alpha3'][$input])) + return $this->IsoData[$this->Indexer['alpha3'][$input]]; + + if(isset($this->Indexer['country_code'][$input])) + return $this->IsoData[$this->Indexer['country_code'][$input]]; + + return null; + } + + /** + * @return IsoData[] + */ + public function getIsoData(): array + { + return $this->IsoData; + } + } \ No newline at end of file diff --git a/src/Isolib/Objects/IsoData.php b/src/Isolib/Objects/IsoData.php new file mode 100644 index 0000000..ae63f60 --- /dev/null +++ b/src/Isolib/Objects/IsoData.php @@ -0,0 +1,153 @@ + $this->Name, + 'alpha-2' => $this->Alpha2, + 'alpha-3' => $this->Alpha3, + 'country-code' => $this->CountryCode, + 'iso_3166-2' => $this->Iso31662, + 'region' => $this->Region, + 'sub-region' => $this->SubRegion, + 'intermediate-region' => $this->IntermediateRegion, + 'region-code' => $this->RegionCode, + 'sub-region-code' => $this->SubRegionCode, + 'intermediate-region-code' => $this->IntermediateRegionCode + ]; + } + + public static function fromArray(array $data): IsoData + { + $IsoData = new IsoData(); + + foreach($data as $key => $value) + { + if(strlen($value) == 0) + unset($data[$key]); + } + + if(isset($data['name'])) + $IsoData->Name = $data['name']; + + if(isset($data['alpha-2'])) + $IsoData->Alpha2 = $data['alpha-2']; + + if(isset($data['alpha-3'])) + $IsoData->Alpha3 = $data['alpha-3']; + + if(isset($data['country-code'])) + $IsoData->CountryCode = $data['country-code']; + + if(isset($data['iso_3166-2'])) + $IsoData->Iso31662 = $data['iso_3166-2']; + + if(isset($data['region'])) + $IsoData->Region = $data['region']; + + if(isset($data['sub-region'])) + $IsoData->SubRegion = $data['sub-region']; + + if(isset($data['intermediate-region'])) + $IsoData->IntermediateRegion = $data['intermediate-region']; + + if(isset($data['region-code'])) + $IsoData->RegionCode = $data['region-code']; + + if(isset($data['sub-region-code'])) + $IsoData->SubRegionCode = $data['sub-region-code']; + + if(isset($data['intermediate-region-code'])) + $IsoData->IntermediateRegionCode = $data['intermediate-region-code']; + + return $IsoData; + } + } \ No newline at end of file diff --git a/src/isolib/data.json b/src/Isolib/data.json similarity index 100% rename from src/isolib/data.json rename to src/Isolib/data.json diff --git a/src/Isolib/package.json b/src/Isolib/package.json new file mode 100644 index 0000000..de575f2 --- /dev/null +++ b/src/Isolib/package.json @@ -0,0 +1,32 @@ +{ + "package": { + "package_name": "net.intellivoid.isolib", + "name": "isolib", + "version": "1.0.0.0", + "author": "Zi Xing Narrakas", + "organization": "Intellivoid Technologies", + "description": "A library for managing & resolving ISO codes", + "url": "https://github.com/intellivoid/isolib", + "dependencies": [], + "configuration": { + "autoload_method": "generated_spl", + "main": null, + "post_installation": [], + "pre_installation": [] + } + }, + "components": [ + { + "required": true, + "file": "Isolib.php" + }, + { + "required": true, + "file": "Objects/IsoData.php" + } + ], + "files": [ + "package.json", + "data.json" + ] +} \ No newline at end of file diff --git a/src/isolib/Object/Result.php b/src/isolib/Object/Result.php deleted file mode 100644 index 42b14e9..0000000 --- a/src/isolib/Object/Result.php +++ /dev/null @@ -1,8 +0,0 @@ -resolve('Canada')); + var_dump($IsoLib->resolve('ca')); + var_dump($IsoLib->resolve('FRA')); \ No newline at end of file