From a2b1bc858cc95854f5d5e22373149042bf24cb71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Bourgoin?= Date: Thu, 9 Jan 2020 11:51:17 +0100 Subject: [PATCH 1/5] Add support for PHP 7.3 & 7.4 --- .travis.yml | 2 + composer.json | 4 +- composer.lock | 175 +++++++++++++++++++++++++------------------------- 3 files changed, 92 insertions(+), 89 deletions(-) diff --git a/.travis.yml b/.travis.yml index bc0bd3f..2012c62 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,8 @@ language: php php: - '7.1' - '7.2' + - '7.3' + - '7.4' before_script: - rm composer.lock diff --git a/composer.json b/composer.json index 24c3992..e7831ab 100644 --- a/composer.json +++ b/composer.json @@ -19,10 +19,10 @@ "issues": "https://github.com/biblys/isbn/issues" }, "require": { - "php": ">=7.1.0" + "php": "^7.1 || ^7.2" }, "require-dev": { - "phpunit/phpunit": "^7.1 || ^8.3", + "phpunit/phpunit": "^7 || ^8", "guzzlehttp/guzzle": "^6.2" }, "autoload": { diff --git a/composer.lock b/composer.lock index aa97899..847cc06 100644 --- a/composer.lock +++ b/composer.lock @@ -4,21 +4,21 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4c531734c4725ac00d14fee9327f50bf", + "content-hash": "c50fef18d6d64393affbe448e3779448", "packages": [], "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "a2c590166b2133a4633738648b6b064edae0814a" + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", - "reference": "a2c590166b2133a4633738648b6b064edae0814a", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", "shasum": "" }, "require": { @@ -61,48 +61,50 @@ "constructor", "instantiate" ], - "time": "2019-03-17T17:37:11+00:00" + "time": "2019-10-21T16:45:58+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "6.3.3", + "version": "6.5.2", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" + "reference": "43ece0e75098b7ecd8d13918293029e555a50f82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", - "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/43ece0e75098b7ecd8d13918293029e555a50f82", + "reference": "43ece0e75098b7ecd8d13918293029e555a50f82", "shasum": "" }, "require": { + "ext-json": "*", "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.4", + "guzzlehttp/psr7": "^1.6.1", "php": ">=5.5" }, "require-dev": { "ext-curl": "*", "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.0" + "psr/log": "^1.1" }, "suggest": { + "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.3-dev" + "dev-master": "6.5-dev" } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\": "src/" - } + }, + "files": [ + "src/functions_include.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -126,7 +128,7 @@ "rest", "web service" ], - "time": "2018-04-22T15:46:56+00:00" + "time": "2019-12-23T11:57:10+00:00" }, { "name": "guzzlehttp/promises", @@ -252,16 +254,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.9.3", + "version": "1.9.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea" + "reference": "579bb7356d91f9456ccd505f24ca8b667966a0a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea", - "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/579bb7356d91f9456ccd505f24ca8b667966a0a7", + "reference": "579bb7356d91f9456ccd505f24ca8b667966a0a7", "shasum": "" }, "require": { @@ -296,7 +298,7 @@ "object", "object graph" ], - "time": "2019-08-09T12:45:53+00:00" + "time": "2019-12-15T19:12:40+00:00" }, { "name": "phar-io/manifest", @@ -336,18 +338,18 @@ "authors": [ { "name": "Arne Blankerts", - "role": "Developer", - "email": "arne@blankerts.de" + "email": "arne@blankerts.de", + "role": "Developer" }, { "name": "Sebastian Heuer", - "role": "Developer", - "email": "sebastian@phpeople.de" + "email": "sebastian@phpeople.de", + "role": "Developer" }, { "name": "Sebastian Bergmann", - "role": "Developer", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "Developer" } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", @@ -383,18 +385,18 @@ "authors": [ { "name": "Arne Blankerts", - "role": "Developer", - "email": "arne@blankerts.de" + "email": "arne@blankerts.de", + "role": "Developer" }, { "name": "Sebastian Heuer", - "role": "Developer", - "email": "sebastian@phpeople.de" + "email": "sebastian@phpeople.de", + "role": "Developer" }, { "name": "Sebastian Bergmann", - "role": "Developer", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "Developer" } ], "description": "Library for handling version information and constraints", @@ -454,16 +456,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.2", + "version": "4.3.4", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e" + "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e", - "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", + "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", "shasum": "" }, "require": { @@ -475,6 +477,7 @@ "require-dev": { "doctrine/instantiator": "^1.0.5", "mockery/mockery": "^1.0", + "phpdocumentor/type-resolver": "0.4.*", "phpunit/phpunit": "^6.4" }, "type": "library", @@ -501,7 +504,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-09-12T14:27:41+00:00" + "time": "2019-12-28T18:55:12+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -552,33 +555,33 @@ }, { "name": "phpspec/prophecy", - "version": "1.9.0", + "version": "1.10.1", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203" + "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/f6811d96d97bdf400077a0cc100ae56aa32b9203", - "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/cbe1df668b3fe136bcc909126a0f529a78d4cbbc", + "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/comparator": "^1.2.3|^2.0|^3.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", + "phpspec/phpspec": "^2.5 || ^3.2", "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8.x-dev" + "dev-master": "1.10.x-dev" } }, "autoload": { @@ -611,20 +614,20 @@ "spy", "stub" ], - "time": "2019-10-03T11:07:50+00:00" + "time": "2019-12-22T21:05:45+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "7.0.8", + "version": "7.0.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "aa0d179a13284c7420fc281fc32750e6cc7c9e2f" + "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/aa0d179a13284c7420fc281fc32750e6cc7c9e2f", - "reference": "aa0d179a13284c7420fc281fc32750e6cc7c9e2f", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf", + "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf", "shasum": "" }, "require": { @@ -674,7 +677,7 @@ "testing", "xunit" ], - "time": "2019-09-17T06:24:36+00:00" + "time": "2019-11-20T13:55:58+00:00" }, { "name": "phpunit/php-file-iterator", @@ -714,8 +717,8 @@ "authors": [ { "name": "Sebastian Bergmann", - "role": "lead", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], "description": "FilterIterator implementation that filters files based on a list of suffixes.", @@ -805,8 +808,8 @@ "authors": [ { "name": "Sebastian Bergmann", - "role": "lead", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], "description": "Utility class for timing", @@ -867,16 +870,16 @@ }, { "name": "phpunit/phpunit", - "version": "8.4.1", + "version": "8.5.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "366a4a0f2b971fd43b7c351d621e8dd7d7131869" + "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/366a4a0f2b971fd43b7c351d621e8dd7d7131869", - "reference": "366a4a0f2b971fd43b7c351d621e8dd7d7131869", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/018b6ac3c8ab20916db85fa91bf6465acb64d1e0", + "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0", "shasum": "" }, "require": { @@ -920,7 +923,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "8.4-dev" + "dev-master": "8.5-dev" } }, "autoload": { @@ -946,7 +949,7 @@ "testing", "xunit" ], - "time": "2019-10-07T12:57:41+00:00" + "time": "2020-01-08T08:49:49+00:00" }, { "name": "psr/http-message", @@ -1205,16 +1208,16 @@ }, { "name": "sebastian/environment", - "version": "4.2.2", + "version": "4.2.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", - "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", "shasum": "" }, "require": { @@ -1254,7 +1257,7 @@ "environment", "hhvm" ], - "time": "2019-05-05T09:05:15+00:00" + "time": "2019-11-20T08:46:58+00:00" }, { "name": "sebastian/exporter", @@ -1655,16 +1658,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4" + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", "shasum": "" }, "require": { @@ -1676,7 +1679,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -1709,7 +1712,7 @@ "polyfill", "portable" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "theseer/tokenizer", @@ -1744,8 +1747,8 @@ "authors": [ { "name": "Arne Blankerts", - "role": "Developer", - "email": "arne@blankerts.de" + "email": "arne@blankerts.de", + "role": "Developer" } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", @@ -1753,31 +1756,29 @@ }, { "name": "webmozart/assert", - "version": "1.5.0", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4" + "reference": "573381c0a64f155a0d9a23f4b0c797194805b925" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4", - "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4", + "url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925", + "reference": "573381c0a64f155a0d9a23f4b0c797194805b925", "shasum": "" }, "require": { "php": "^5.3.3 || ^7.0", "symfony/polyfill-ctype": "^1.8" }, + "conflict": { + "vimeo/psalm": "<3.6.0" + }, "require-dev": { "phpunit/phpunit": "^4.8.36 || ^7.5.13" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, "autoload": { "psr-4": { "Webmozart\\Assert\\": "src/" @@ -1799,7 +1800,7 @@ "check", "validate" ], - "time": "2019-08-24T08:43:50+00:00" + "time": "2019-11-24T13:36:37+00:00" } ], "aliases": [], @@ -1808,7 +1809,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.1.0" + "php": "^7.1 || ^7.2" }, "platform-dev": [] } From a1e1ab8b4e80846789dad05b95420f950e2d1227 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Bourgoin?= Date: Thu, 9 Jan 2020 17:12:01 +0100 Subject: [PATCH 2/5] Update ISBN ranges --- src/Biblys/Isbn/ranges-array.php | 695 ++++++++++++++++++------------- 1 file changed, 414 insertions(+), 281 deletions(-) diff --git a/src/Biblys/Isbn/ranges-array.php b/src/Biblys/Isbn/ranges-array.php index ffd85ba..cb47e48 100644 --- a/src/Biblys/Isbn/ranges-array.php +++ b/src/Biblys/Isbn/ranges-array.php @@ -144,115 +144,120 @@ ), 5 => array ( - 'Range' => '5500000-6859999', + 'Range' => '5500000-6499999', 'Length' => '5', ), 6 => array ( - 'Range' => '6860000-7139999', + 'Range' => '6500000-6799999', 'Length' => '4', ), 7 => + array ( + 'Range' => '6800000-6859999', + 'Length' => '5', + ), + 8 => + array ( + 'Range' => '6860000-7139999', + 'Length' => '4', + ), + 9 => array ( 'Range' => '7140000-7169999', 'Length' => '3', ), - 8 => + 10 => array ( 'Range' => '7170000-7319999', 'Length' => '4', ), - 9 => + 11 => array ( 'Range' => '7320000-7399999', 'Length' => '7', ), - 10 => + 12 => array ( 'Range' => '7400000-7749999', 'Length' => '5', ), - 11 => + 13 => array ( 'Range' => '7750000-7753999', 'Length' => '7', ), - 12 => + 14 => array ( 'Range' => '7754000-7763999', 'Length' => '5', ), - 13 => + 15 => array ( 'Range' => '7764000-7764999', 'Length' => '7', ), - 14 => + 16 => array ( 'Range' => '7765000-7769999', 'Length' => '5', ), - 15 => + 17 => array ( 'Range' => '7770000-7776999', 'Length' => '7', ), - 16 => + 18 => array ( 'Range' => '7777000-7899999', 'Length' => '5', ), - 17 => + 19 => array ( 'Range' => '7900000-7999999', 'Length' => '4', ), - 18 => + 20 => array ( 'Range' => '8000000-8671999', 'Length' => '5', ), - 19 => + 21 => array ( 'Range' => '8672000-8675999', 'Length' => '4', ), - 20 => + 22 => array ( 'Range' => '8676000-8697999', 'Length' => '5', ), - 21 => + 23 => array ( 'Range' => '8698000-9159999', 'Length' => '6', ), - 22 => - array ( - 'Range' => '9160000-9163999', - 'Length' => '7', - ), - 23 => + 24 => array ( - 'Range' => '9164000-9165059', + 'Range' => '9160000-9165059', 'Length' => '7', ), - 24 => + 25 => array ( 'Range' => '9165060-9729999', 'Length' => '6', ), - 25 => + 26 => array ( 'Range' => '9730000-9877999', 'Length' => '4', ), - 26 => + 27 => array ( 'Range' => '9878000-9989999', 'Length' => '6', ), - 27 => + 28 => array ( 'Range' => '9990000-9999999', 'Length' => '7', @@ -834,60 +839,55 @@ array ( 0 => array ( - 'Range' => '0000000-0099999', - 'Length' => '0', - ), - 1 => - array ( - 'Range' => '0100000-0299999', + 'Range' => '0000000-0299999', 'Length' => '2', ), - 2 => + 1 => array ( 'Range' => '0300000-0399999', 'Length' => '3', ), - 3 => + 2 => array ( 'Range' => '0400000-0999999', 'Length' => '2', ), - 4 => + 3 => array ( 'Range' => '1000000-1999999', 'Length' => '3', ), - 5 => + 4 => array ( 'Range' => '2000000-2399999', 'Length' => '4', ), - 6 => + 5 => array ( 'Range' => '2400000-3999999', 'Length' => '3', ), - 7 => + 6 => array ( 'Range' => '4000000-5999999', 'Length' => '4', ), - 8 => + 7 => array ( 'Range' => '6000000-7499999', 'Length' => '5', ), - 9 => + 8 => array ( 'Range' => '7500000-7999999', 'Length' => '4', ), - 10 => + 9 => array ( 'Range' => '8000000-8999999', 'Length' => '5', ), - 11 => + 10 => array ( 'Range' => '9000000-9999999', 'Length' => '4', @@ -1509,6 +1509,47 @@ ), ), 30 => + array ( + 'Prefix' => '978-625', + 'Agency' => 'Turkey', + 'Rules' => + array ( + 'Rule' => + array ( + 0 => + array ( + 'Range' => '0000000-0099999', + 'Length' => '2', + ), + 1 => + array ( + 'Range' => '0100000-3999999', + 'Length' => '0', + ), + 2 => + array ( + 'Range' => '4000000-4499999', + 'Length' => '3', + ), + 3 => + array ( + 'Range' => '4500000-6999999', + 'Length' => '0', + ), + 4 => + array ( + 'Range' => '7000000-7999999', + 'Length' => '4', + ), + 5 => + array ( + 'Range' => '8000000-9999999', + 'Length' => '0', + ), + ), + ), + ), + 31 => array ( 'Prefix' => '978-65', 'Agency' => 'Brazil', @@ -1533,38 +1574,38 @@ ), 3 => array ( - 'Range' => '5000000-5104999', + 'Range' => '5000000-5129999', 'Length' => '4', ), 4 => array ( - 'Range' => '5105000-7999999', + 'Range' => '5130000-7999999', 'Length' => '0', ), 5 => array ( - 'Range' => '8000000-8119999', + 'Range' => '8000000-8169999', 'Length' => '5', ), 6 => array ( - 'Range' => '8120000-8999999', + 'Range' => '8170000-8999999', 'Length' => '0', ), 7 => array ( - 'Range' => '9000000-9019999', + 'Range' => '9000000-9021999', 'Length' => '6', ), 8 => array ( - 'Range' => '9020000-9999999', + 'Range' => '9022000-9999999', 'Length' => '0', ), ), ), ), - 31 => + 32 => array ( 'Prefix' => '978-7', 'Agency' => 'China, People\'s Republic', @@ -1600,7 +1641,7 @@ ), ), ), - 32 => + 33 => array ( 'Prefix' => '978-80', 'Agency' => 'former Czechoslovakia', @@ -1641,7 +1682,7 @@ ), ), ), - 33 => + 34 => array ( 'Prefix' => '978-81', 'Agency' => 'India', @@ -1677,7 +1718,7 @@ ), ), ), - 34 => + 35 => array ( 'Prefix' => '978-82', 'Agency' => 'Norway', @@ -1718,7 +1759,7 @@ ), ), ), - 35 => + 36 => array ( 'Prefix' => '978-83', 'Agency' => 'Poland', @@ -1759,7 +1800,7 @@ ), ), ), - 36 => + 37 => array ( 'Prefix' => '978-84', 'Agency' => 'Spain', @@ -1840,7 +1881,7 @@ ), ), ), - 37 => + 38 => array ( 'Prefix' => '978-85', 'Agency' => 'Brazil', @@ -1976,7 +2017,7 @@ ), ), ), - 38 => + 39 => array ( 'Prefix' => '978-86', 'Agency' => 'former Yugoslavia', @@ -2012,7 +2053,7 @@ ), ), ), - 39 => + 40 => array ( 'Prefix' => '978-87', 'Agency' => 'Denmark', @@ -2068,7 +2109,7 @@ ), ), ), - 40 => + 41 => array ( 'Prefix' => '978-88', 'Agency' => 'Italy', @@ -2174,7 +2215,7 @@ ), ), ), - 41 => + 42 => array ( 'Prefix' => '978-89', 'Agency' => 'Korea, Republic', @@ -2220,7 +2261,7 @@ ), ), ), - 42 => + 43 => array ( 'Prefix' => '978-90', 'Agency' => 'Netherlands', @@ -2281,7 +2322,7 @@ ), ), ), - 43 => + 44 => array ( 'Prefix' => '978-91', 'Agency' => 'Sweden', @@ -2311,12 +2352,12 @@ ), 4 => array ( - 'Range' => '7000000-7999999', + 'Range' => '7000000-8199999', 'Length' => '4', ), 5 => array ( - 'Range' => '8000000-8499999', + 'Range' => '8200000-8499999', 'Length' => '0', ), 6 => @@ -2337,7 +2378,7 @@ ), ), ), - 44 => + 45 => array ( 'Prefix' => '978-92', 'Agency' => 'International NGO Publishers and EU Organizations', @@ -2378,7 +2419,7 @@ ), ), ), - 45 => + 46 => array ( 'Prefix' => '978-93', 'Agency' => 'India', @@ -2414,7 +2455,7 @@ ), ), ), - 46 => + 47 => array ( 'Prefix' => '978-94', 'Agency' => 'Netherlands', @@ -2440,7 +2481,7 @@ ), ), ), - 47 => + 48 => array ( 'Prefix' => '978-950', 'Agency' => 'Argentina', @@ -2471,7 +2512,7 @@ ), ), ), - 48 => + 49 => array ( 'Prefix' => '978-951', 'Agency' => 'Finland', @@ -2507,7 +2548,7 @@ ), ), ), - 49 => + 50 => array ( 'Prefix' => '978-952', 'Agency' => 'Finland', @@ -2568,7 +2609,7 @@ ), ), ), - 50 => + 51 => array ( 'Prefix' => '978-953', 'Agency' => 'Croatia', @@ -2629,7 +2670,7 @@ ), ), ), - 51 => + 52 => array ( 'Prefix' => '978-954', 'Agency' => 'Bulgaria', @@ -2670,7 +2711,7 @@ ), ), ), - 52 => + 53 => array ( 'Prefix' => '978-955', 'Agency' => 'Sri Lanka', @@ -2751,7 +2792,7 @@ ), ), ), - 53 => + 54 => array ( 'Prefix' => '978-956', 'Agency' => 'Chile', @@ -2792,7 +2833,7 @@ ), ), ), - 54 => + 55 => array ( 'Prefix' => '978-957', 'Agency' => 'Taiwan', @@ -2853,7 +2894,7 @@ ), ), ), - 55 => + 56 => array ( 'Prefix' => '978-958', 'Agency' => 'Colombia', @@ -2904,7 +2945,7 @@ ), ), ), - 56 => + 57 => array ( 'Prefix' => '978-959', 'Agency' => 'Cuba', @@ -2935,7 +2976,7 @@ ), ), ), - 57 => + 58 => array ( 'Prefix' => '978-960', 'Agency' => 'Greece', @@ -2991,7 +3032,7 @@ ), ), ), - 58 => + 59 => array ( 'Prefix' => '978-961', 'Agency' => 'Slovenia', @@ -3027,7 +3068,7 @@ ), ), ), - 59 => + 60 => array ( 'Prefix' => '978-962', 'Agency' => 'Hong Kong, China', @@ -3068,7 +3109,7 @@ ), ), ), - 60 => + 61 => array ( 'Prefix' => '978-963', 'Agency' => 'Hungary', @@ -3104,7 +3145,7 @@ ), ), ), - 61 => + 62 => array ( 'Prefix' => '978-964', 'Agency' => 'Iran', @@ -3155,7 +3196,7 @@ ), ), ), - 62 => + 63 => array ( 'Prefix' => '978-965', 'Agency' => 'Israel', @@ -3196,7 +3237,7 @@ ), ), ), - 63 => + 64 => array ( 'Prefix' => '978-966', 'Agency' => 'Ukraine', @@ -3277,7 +3318,7 @@ ), ), ), - 64 => + 65 => array ( 'Prefix' => '978-967', 'Agency' => 'Malaysia', @@ -3343,7 +3384,7 @@ ), ), ), - 65 => + 66 => array ( 'Prefix' => '978-968', 'Agency' => 'Mexico', @@ -3379,7 +3420,7 @@ ), ), ), - 66 => + 67 => array ( 'Prefix' => '978-969', 'Agency' => 'Pakistan', @@ -3420,7 +3461,7 @@ ), ), ), - 67 => + 68 => array ( 'Prefix' => '978-970', 'Agency' => 'Mexico', @@ -3456,7 +3497,7 @@ ), ), ), - 68 => + 69 => array ( 'Prefix' => '978-971', 'Agency' => 'Philippines', @@ -3522,7 +3563,7 @@ ), ), ), - 69 => + 70 => array ( 'Prefix' => '978-972', 'Agency' => 'Portugal', @@ -3558,7 +3599,7 @@ ), ), ), - 70 => + 71 => array ( 'Prefix' => '978-973', 'Agency' => 'Romania', @@ -3614,7 +3655,7 @@ ), ), ), - 71 => + 72 => array ( 'Prefix' => '978-974', 'Agency' => 'Thailand', @@ -3655,7 +3696,7 @@ ), ), ), - 72 => + 73 => array ( 'Prefix' => '978-975', 'Agency' => 'Turkey', @@ -3701,7 +3742,7 @@ ), ), ), - 73 => + 74 => array ( 'Prefix' => '978-976', 'Agency' => 'Caribbean Community', @@ -3737,7 +3778,7 @@ ), ), ), - 74 => + 75 => array ( 'Prefix' => '978-977', 'Agency' => 'Egypt', @@ -3783,7 +3824,7 @@ ), ), ), - 75 => + 76 => array ( 'Prefix' => '978-978', 'Agency' => 'Nigeria', @@ -3819,7 +3860,7 @@ ), ), ), - 76 => + 77 => array ( 'Prefix' => '978-979', 'Agency' => 'Indonesia', @@ -3870,7 +3911,7 @@ ), ), ), - 77 => + 78 => array ( 'Prefix' => '978-980', 'Agency' => 'Venezuela', @@ -3896,7 +3937,7 @@ ), ), ), - 78 => + 79 => array ( 'Prefix' => '978-981', 'Agency' => 'Singapore', @@ -3942,7 +3983,7 @@ ), ), ), - 79 => + 80 => array ( 'Prefix' => '978-982', 'Agency' => 'South Pacific', @@ -3978,7 +4019,7 @@ ), ), ), - 80 => + 81 => array ( 'Prefix' => '978-983', 'Agency' => 'Malaysia', @@ -4034,7 +4075,7 @@ ), ), ), - 81 => + 82 => array ( 'Prefix' => '978-984', 'Agency' => 'Bangladesh', @@ -4065,7 +4106,7 @@ ), ), ), - 82 => + 83 => array ( 'Prefix' => '978-985', 'Agency' => 'Belarus', @@ -4101,7 +4142,7 @@ ), ), ), - 83 => + 84 => array ( 'Prefix' => '978-986', 'Agency' => 'Taiwan', @@ -4132,7 +4173,7 @@ ), ), ), - 84 => + 85 => array ( 'Prefix' => '978-987', 'Agency' => 'Argentina', @@ -4218,7 +4259,7 @@ ), ), ), - 85 => + 86 => array ( 'Prefix' => '978-988', 'Agency' => 'Hong Kong, China', @@ -4264,7 +4305,7 @@ ), ), ), - 86 => + 87 => array ( 'Prefix' => '978-989', 'Agency' => 'Portugal', @@ -4305,10 +4346,10 @@ ), ), ), - 87 => + 88 => array ( - 'Prefix' => '978-9917', - 'Agency' => 'Bolivia', + 'Prefix' => '978-9916', + 'Agency' => 'Estonia', 'Rules' => array ( 'Rule' => @@ -4320,41 +4361,87 @@ ), 1 => array ( - 'Range' => '1000000-2999999', - 'Length' => '0', + 'Range' => '1000000-3999999', + 'Length' => '2', ), 2 => array ( - 'Range' => '3000000-3499999', - 'Length' => '2', + 'Range' => '4000000-4999999', + 'Length' => '1', ), 3 => array ( - 'Range' => '3500000-5999999', + 'Range' => '5000000-5999999', 'Length' => '0', ), 4 => array ( - 'Range' => '6000000-6999999', + 'Range' => '6000000-7499999', 'Length' => '3', ), 5 => array ( - 'Range' => '7000000-9799999', + 'Range' => '7500000-9499999', 'Length' => '0', ), 6 => array ( - 'Range' => '9800000-9999999', + 'Range' => '9500000-9999999', 'Length' => '4', ), ), ), ), - 88 => + 89 => array ( - 'Prefix' => '978-9918', - 'Agency' => 'Malta', + 'Prefix' => '978-9917', + 'Agency' => 'Bolivia', + 'Rules' => + array ( + 'Rule' => + array ( + 0 => + array ( + 'Range' => '0000000-0999999', + 'Length' => '1', + ), + 1 => + array ( + 'Range' => '1000000-2999999', + 'Length' => '0', + ), + 2 => + array ( + 'Range' => '3000000-3499999', + 'Length' => '2', + ), + 3 => + array ( + 'Range' => '3500000-5999999', + 'Length' => '0', + ), + 4 => + array ( + 'Range' => '6000000-6999999', + 'Length' => '3', + ), + 5 => + array ( + 'Range' => '7000000-9799999', + 'Length' => '0', + ), + 6 => + array ( + 'Range' => '9800000-9999999', + 'Length' => '4', + ), + ), + ), + ), + 90 => + array ( + 'Prefix' => '978-9918', + 'Agency' => 'Malta', 'Rules' => array ( 'Rule' => @@ -4397,7 +4484,7 @@ ), ), ), - 89 => + 91 => array ( 'Prefix' => '978-9919', 'Agency' => 'Mongolia', @@ -4438,7 +4525,7 @@ ), ), ), - 90 => + 92 => array ( 'Prefix' => '978-9920', 'Agency' => 'Morocco', @@ -4458,12 +4545,12 @@ ), 2 => array ( - 'Range' => '4000000-6249999', + 'Range' => '4000000-5999999', 'Length' => '0', ), 3 => array ( - 'Range' => '6250000-7999999', + 'Range' => '6000000-7999999', 'Length' => '3', ), 4 => @@ -4479,7 +4566,7 @@ ), ), ), - 91 => + 93 => array ( 'Prefix' => '978-9921', 'Agency' => 'Kuwait', @@ -4525,7 +4612,7 @@ ), ), ), - 92 => + 94 => array ( 'Prefix' => '978-9922', 'Agency' => 'Iraq', @@ -4566,7 +4653,7 @@ ), ), ), - 93 => + 95 => array ( 'Prefix' => '978-9923', 'Agency' => 'Jordan', @@ -4607,7 +4694,7 @@ ), ), ), - 94 => + 96 => array ( 'Prefix' => '978-9924', 'Agency' => 'Cambodia', @@ -4648,7 +4735,7 @@ ), ), ), - 95 => + 97 => array ( 'Prefix' => '978-9925', 'Agency' => 'Cyprus', @@ -4679,7 +4766,7 @@ ), ), ), - 96 => + 98 => array ( 'Prefix' => '978-9926', 'Agency' => 'Bosnia and Herzegovina', @@ -4710,7 +4797,7 @@ ), ), ), - 97 => + 99 => array ( 'Prefix' => '978-9927', 'Agency' => 'Qatar', @@ -4741,7 +4828,7 @@ ), ), ), - 98 => + 100 => array ( 'Prefix' => '978-9928', 'Agency' => 'Albania', @@ -4772,7 +4859,7 @@ ), ), ), - 99 => + 101 => array ( 'Prefix' => '978-9929', 'Agency' => 'Guatemala', @@ -4803,7 +4890,7 @@ ), ), ), - 100 => + 102 => array ( 'Prefix' => '978-9930', 'Agency' => 'Costa Rica', @@ -4829,7 +4916,7 @@ ), ), ), - 101 => + 103 => array ( 'Prefix' => '978-9931', 'Agency' => 'Algeria', @@ -4855,7 +4942,7 @@ ), ), ), - 102 => + 104 => array ( 'Prefix' => '978-9932', 'Agency' => 'Lao People\'s Democratic Republic', @@ -4881,7 +4968,7 @@ ), ), ), - 103 => + 105 => array ( 'Prefix' => '978-9933', 'Agency' => 'Syria', @@ -4912,7 +4999,7 @@ ), ), ), - 104 => + 106 => array ( 'Prefix' => '978-9934', 'Agency' => 'Latvia', @@ -4943,7 +5030,7 @@ ), ), ), - 105 => + 107 => array ( 'Prefix' => '978-9935', 'Agency' => 'Iceland', @@ -4974,7 +5061,7 @@ ), ), ), - 106 => + 108 => array ( 'Prefix' => '978-9936', 'Agency' => 'Afghanistan', @@ -5005,7 +5092,7 @@ ), ), ), - 107 => + 109 => array ( 'Prefix' => '978-9937', 'Agency' => 'Nepal', @@ -5036,7 +5123,7 @@ ), ), ), - 108 => + 110 => array ( 'Prefix' => '978-9938', 'Agency' => 'Tunisia', @@ -5062,7 +5149,7 @@ ), ), ), - 109 => + 111 => array ( 'Prefix' => '978-9939', 'Agency' => 'Armenia', @@ -5098,7 +5185,7 @@ ), ), ), - 110 => + 112 => array ( 'Prefix' => '978-9940', 'Agency' => 'Montenegro', @@ -5139,7 +5226,7 @@ ), ), ), - 111 => + 113 => array ( 'Prefix' => '978-9941', 'Agency' => 'Georgia', @@ -5175,7 +5262,7 @@ ), ), ), - 112 => + 114 => array ( 'Prefix' => '978-9942', 'Agency' => 'Ecuador', @@ -5211,7 +5298,7 @@ ), ), ), - 113 => + 115 => array ( 'Prefix' => '978-9943', 'Agency' => 'Uzbekistan', @@ -5242,7 +5329,7 @@ ), ), ), - 114 => + 116 => array ( 'Prefix' => '978-9944', 'Agency' => 'Turkey', @@ -5288,7 +5375,7 @@ ), ), ), - 115 => + 117 => array ( 'Prefix' => '978-9945', 'Agency' => 'Dominican Republic', @@ -5334,7 +5421,7 @@ ), ), ), - 116 => + 118 => array ( 'Prefix' => '978-9946', 'Agency' => 'Korea, P.D.R.', @@ -5365,7 +5452,7 @@ ), ), ), - 117 => + 119 => array ( 'Prefix' => '978-9947', 'Agency' => 'Algeria', @@ -5391,7 +5478,7 @@ ), ), ), - 118 => + 120 => array ( 'Prefix' => '978-9948', 'Agency' => 'United Arab Emirates', @@ -5417,7 +5504,7 @@ ), ), ), - 119 => + 121 => array ( 'Prefix' => '978-9949', 'Agency' => 'Estonia', @@ -5468,7 +5555,7 @@ ), ), ), - 120 => + 122 => array ( 'Prefix' => '978-9950', 'Agency' => 'Palestine', @@ -5494,7 +5581,7 @@ ), ), ), - 121 => + 123 => array ( 'Prefix' => '978-9951', 'Agency' => 'Kosova', @@ -5520,7 +5607,7 @@ ), ), ), - 122 => + 124 => array ( 'Prefix' => '978-9952', 'Agency' => 'Azerbaijan', @@ -5551,7 +5638,7 @@ ), ), ), - 123 => + 125 => array ( 'Prefix' => '978-9953', 'Agency' => 'Lebanon', @@ -5597,7 +5684,7 @@ ), ), ), - 124 => + 126 => array ( 'Prefix' => '978-9954', 'Agency' => 'Morocco', @@ -5633,7 +5720,7 @@ ), ), ), - 125 => + 127 => array ( 'Prefix' => '978-9955', 'Agency' => 'Lithuania', @@ -5659,7 +5746,7 @@ ), ), ), - 126 => + 128 => array ( 'Prefix' => '978-9956', 'Agency' => 'Cameroon', @@ -5690,7 +5777,7 @@ ), ), ), - 127 => + 129 => array ( 'Prefix' => '978-9957', 'Agency' => 'Jordan', @@ -5736,7 +5823,7 @@ ), ), ), - 128 => + 130 => array ( 'Prefix' => '978-9958', 'Agency' => 'Bosnia and Herzegovina', @@ -5797,7 +5884,7 @@ ), ), ), - 129 => + 131 => array ( 'Prefix' => '978-9959', 'Agency' => 'Libya', @@ -5838,7 +5925,7 @@ ), ), ), - 130 => + 132 => array ( 'Prefix' => '978-9960', 'Agency' => 'Saudi Arabia', @@ -5864,7 +5951,7 @@ ), ), ), - 131 => + 133 => array ( 'Prefix' => '978-9961', 'Agency' => 'Algeria', @@ -5895,7 +5982,7 @@ ), ), ), - 132 => + 134 => array ( 'Prefix' => '978-9962', 'Agency' => 'Panama', @@ -5931,7 +6018,7 @@ ), ), ), - 133 => + 135 => array ( 'Prefix' => '978-9963', 'Agency' => 'Cyprus', @@ -5982,7 +6069,7 @@ ), ), ), - 134 => + 136 => array ( 'Prefix' => '978-9964', 'Agency' => 'Ghana', @@ -6008,7 +6095,7 @@ ), ), ), - 135 => + 137 => array ( 'Prefix' => '978-9965', 'Agency' => 'Kazakhstan', @@ -6034,7 +6121,7 @@ ), ), ), - 136 => + 138 => array ( 'Prefix' => '978-9966', 'Agency' => 'Kenya', @@ -6100,7 +6187,7 @@ ), ), ), - 137 => + 139 => array ( 'Prefix' => '978-9967', 'Agency' => 'Kyrgyz Republic', @@ -6126,7 +6213,7 @@ ), ), ), - 138 => + 140 => array ( 'Prefix' => '978-9968', 'Agency' => 'Costa Rica', @@ -6152,7 +6239,7 @@ ), ), ), - 139 => + 141 => array ( 'Prefix' => '978-9970', 'Agency' => 'Uganda', @@ -6178,7 +6265,7 @@ ), ), ), - 140 => + 142 => array ( 'Prefix' => '978-9971', 'Agency' => 'Singapore', @@ -6209,7 +6296,7 @@ ), ), ), - 141 => + 143 => array ( 'Prefix' => '978-9972', 'Agency' => 'Peru', @@ -6255,7 +6342,7 @@ ), ), ), - 142 => + 144 => array ( 'Prefix' => '978-9973', 'Agency' => 'Tunisia', @@ -6296,7 +6383,7 @@ ), ), ), - 143 => + 145 => array ( 'Prefix' => '978-9974', 'Agency' => 'Uruguay', @@ -6342,7 +6429,7 @@ ), ), ), - 144 => + 146 => array ( 'Prefix' => '978-9975', 'Agency' => 'Moldova', @@ -6388,7 +6475,7 @@ ), ), ), - 145 => + 147 => array ( 'Prefix' => '978-9976', 'Agency' => 'Tanzania', @@ -6424,7 +6511,7 @@ ), ), ), - 146 => + 148 => array ( 'Prefix' => '978-9977', 'Agency' => 'Costa Rica', @@ -6450,7 +6537,7 @@ ), ), ), - 147 => + 149 => array ( 'Prefix' => '978-9978', 'Agency' => 'Ecuador', @@ -6486,7 +6573,7 @@ ), ), ), - 148 => + 150 => array ( 'Prefix' => '978-9979', 'Agency' => 'Iceland', @@ -6527,7 +6614,7 @@ ), ), ), - 149 => + 151 => array ( 'Prefix' => '978-9980', 'Agency' => 'Papua New Guinea', @@ -6558,7 +6645,7 @@ ), ), ), - 150 => + 152 => array ( 'Prefix' => '978-9981', 'Agency' => 'Morocco', @@ -6599,7 +6686,7 @@ ), ), ), - 151 => + 153 => array ( 'Prefix' => '978-9982', 'Agency' => 'Zambia', @@ -6625,7 +6712,7 @@ ), ), ), - 152 => + 154 => array ( 'Prefix' => '978-9983', 'Agency' => 'Gambia', @@ -6656,7 +6743,7 @@ ), ), ), - 153 => + 155 => array ( 'Prefix' => '978-9984', 'Agency' => 'Latvia', @@ -6682,7 +6769,7 @@ ), ), ), - 154 => + 156 => array ( 'Prefix' => '978-9985', 'Agency' => 'Estonia', @@ -6713,7 +6800,7 @@ ), ), ), - 155 => + 157 => array ( 'Prefix' => '978-9986', 'Agency' => 'Lithuania', @@ -6749,7 +6836,7 @@ ), ), ), - 156 => + 158 => array ( 'Prefix' => '978-9987', 'Agency' => 'Tanzania', @@ -6775,7 +6862,7 @@ ), ), ), - 157 => + 159 => array ( 'Prefix' => '978-9988', 'Agency' => 'Ghana', @@ -6806,7 +6893,7 @@ ), ), ), - 158 => + 160 => array ( 'Prefix' => '978-9989', 'Agency' => 'Macedonia', @@ -6847,7 +6934,7 @@ ), ), ), - 159 => + 161 => array ( 'Prefix' => '978-99901', 'Agency' => 'Bahrain', @@ -6873,7 +6960,7 @@ ), ), ), - 160 => + 162 => array ( 'Prefix' => '978-99902', 'Agency' => 'Reserved Agency', @@ -6889,7 +6976,7 @@ ), ), ), - 161 => + 163 => array ( 'Prefix' => '978-99903', 'Agency' => 'Mauritius', @@ -6915,7 +7002,7 @@ ), ), ), - 162 => + 164 => array ( 'Prefix' => '978-99904', 'Agency' => 'CuraƧao', @@ -6941,7 +7028,7 @@ ), ), ), - 163 => + 165 => array ( 'Prefix' => '978-99905', 'Agency' => 'Bolivia', @@ -6967,7 +7054,7 @@ ), ), ), - 164 => + 166 => array ( 'Prefix' => '978-99906', 'Agency' => 'Kuwait', @@ -7008,7 +7095,7 @@ ), ), ), - 165 => + 167 => array ( 'Prefix' => '978-99908', 'Agency' => 'Malawi', @@ -7034,7 +7121,7 @@ ), ), ), - 166 => + 168 => array ( 'Prefix' => '978-99909', 'Agency' => 'Malta', @@ -7060,7 +7147,7 @@ ), ), ), - 167 => + 169 => array ( 'Prefix' => '978-99910', 'Agency' => 'Sierra Leone', @@ -7086,7 +7173,7 @@ ), ), ), - 168 => + 170 => array ( 'Prefix' => '978-99911', 'Agency' => 'Lesotho', @@ -7107,7 +7194,7 @@ ), ), ), - 169 => + 171 => array ( 'Prefix' => '978-99912', 'Agency' => 'Botswana', @@ -7138,7 +7225,7 @@ ), ), ), - 170 => + 172 => array ( 'Prefix' => '978-99913', 'Agency' => 'Andorra', @@ -7174,7 +7261,7 @@ ), ), ), - 171 => + 173 => array ( 'Prefix' => '978-99914', 'Agency' => 'International NGO Publishers', @@ -7210,7 +7297,7 @@ ), ), ), - 172 => + 174 => array ( 'Prefix' => '978-99915', 'Agency' => 'Maldives', @@ -7236,7 +7323,7 @@ ), ), ), - 173 => + 175 => array ( 'Prefix' => '978-99916', 'Agency' => 'Namibia', @@ -7262,7 +7349,7 @@ ), ), ), - 174 => + 176 => array ( 'Prefix' => '978-99917', 'Agency' => 'Brunei Darussalam', @@ -7288,7 +7375,7 @@ ), ), ), - 175 => + 177 => array ( 'Prefix' => '978-99918', 'Agency' => 'Faroe Islands', @@ -7314,7 +7401,7 @@ ), ), ), - 176 => + 178 => array ( 'Prefix' => '978-99919', 'Agency' => 'Benin', @@ -7345,7 +7432,7 @@ ), ), ), - 177 => + 179 => array ( 'Prefix' => '978-99920', 'Agency' => 'Andorra', @@ -7371,7 +7458,7 @@ ), ), ), - 178 => + 180 => array ( 'Prefix' => '978-99921', 'Agency' => 'Qatar', @@ -7407,7 +7494,7 @@ ), ), ), - 179 => + 181 => array ( 'Prefix' => '978-99922', 'Agency' => 'Guatemala', @@ -7433,7 +7520,7 @@ ), ), ), - 180 => + 182 => array ( 'Prefix' => '978-99923', 'Agency' => 'El Salvador', @@ -7459,7 +7546,7 @@ ), ), ), - 181 => + 183 => array ( 'Prefix' => '978-99924', 'Agency' => 'Nicaragua', @@ -7485,7 +7572,7 @@ ), ), ), - 182 => + 184 => array ( 'Prefix' => '978-99925', 'Agency' => 'Paraguay', @@ -7511,7 +7598,7 @@ ), ), ), - 183 => + 185 => array ( 'Prefix' => '978-99926', 'Agency' => 'Honduras', @@ -7547,7 +7634,7 @@ ), ), ), - 184 => + 186 => array ( 'Prefix' => '978-99927', 'Agency' => 'Albania', @@ -7573,7 +7660,7 @@ ), ), ), - 185 => + 187 => array ( 'Prefix' => '978-99928', 'Agency' => 'Georgia', @@ -7599,7 +7686,7 @@ ), ), ), - 186 => + 188 => array ( 'Prefix' => '978-99929', 'Agency' => 'Mongolia', @@ -7625,7 +7712,7 @@ ), ), ), - 187 => + 189 => array ( 'Prefix' => '978-99930', 'Agency' => 'Armenia', @@ -7651,7 +7738,7 @@ ), ), ), - 188 => + 190 => array ( 'Prefix' => '978-99931', 'Agency' => 'Seychelles', @@ -7677,7 +7764,7 @@ ), ), ), - 189 => + 191 => array ( 'Prefix' => '978-99932', 'Agency' => 'Malta', @@ -7713,7 +7800,7 @@ ), ), ), - 190 => + 192 => array ( 'Prefix' => '978-99933', 'Agency' => 'Nepal', @@ -7739,7 +7826,7 @@ ), ), ), - 191 => + 193 => array ( 'Prefix' => '978-99934', 'Agency' => 'Dominican Republic', @@ -7765,7 +7852,7 @@ ), ), ), - 192 => + 194 => array ( 'Prefix' => '978-99935', 'Agency' => 'Haiti', @@ -7801,7 +7888,7 @@ ), ), ), - 193 => + 195 => array ( 'Prefix' => '978-99936', 'Agency' => 'Bhutan', @@ -7827,7 +7914,7 @@ ), ), ), - 194 => + 196 => array ( 'Prefix' => '978-99937', 'Agency' => 'Macau', @@ -7853,7 +7940,7 @@ ), ), ), - 195 => + 197 => array ( 'Prefix' => '978-99938', 'Agency' => 'Srpska, Republic of', @@ -7884,7 +7971,7 @@ ), ), ), - 196 => + 198 => array ( 'Prefix' => '978-99939', 'Agency' => 'Guatemala', @@ -7910,7 +7997,7 @@ ), ), ), - 197 => + 199 => array ( 'Prefix' => '978-99940', 'Agency' => 'Georgia', @@ -7936,7 +8023,7 @@ ), ), ), - 198 => + 200 => array ( 'Prefix' => '978-99941', 'Agency' => 'Armenia', @@ -7962,7 +8049,7 @@ ), ), ), - 199 => + 201 => array ( 'Prefix' => '978-99942', 'Agency' => 'Sudan', @@ -7988,7 +8075,7 @@ ), ), ), - 200 => + 202 => array ( 'Prefix' => '978-99943', 'Agency' => 'Albania', @@ -8014,7 +8101,7 @@ ), ), ), - 201 => + 203 => array ( 'Prefix' => '978-99944', 'Agency' => 'Ethiopia', @@ -8040,7 +8127,7 @@ ), ), ), - 202 => + 204 => array ( 'Prefix' => '978-99945', 'Agency' => 'Namibia', @@ -8066,7 +8153,7 @@ ), ), ), - 203 => + 205 => array ( 'Prefix' => '978-99946', 'Agency' => 'Nepal', @@ -8092,7 +8179,7 @@ ), ), ), - 204 => + 206 => array ( 'Prefix' => '978-99947', 'Agency' => 'Tajikistan', @@ -8118,7 +8205,7 @@ ), ), ), - 205 => + 207 => array ( 'Prefix' => '978-99948', 'Agency' => 'Eritrea', @@ -8144,7 +8231,7 @@ ), ), ), - 206 => + 208 => array ( 'Prefix' => '978-99949', 'Agency' => 'Mauritius', @@ -8170,7 +8257,7 @@ ), ), ), - 207 => + 209 => array ( 'Prefix' => '978-99950', 'Agency' => 'Cambodia', @@ -8196,7 +8283,7 @@ ), ), ), - 208 => + 210 => array ( 'Prefix' => '978-99951', 'Agency' => 'Reserved Agency', @@ -8212,7 +8299,7 @@ ), ), ), - 209 => + 211 => array ( 'Prefix' => '978-99952', 'Agency' => 'Mali', @@ -8238,7 +8325,7 @@ ), ), ), - 210 => + 212 => array ( 'Prefix' => '978-99953', 'Agency' => 'Paraguay', @@ -8269,7 +8356,7 @@ ), ), ), - 211 => + 213 => array ( 'Prefix' => '978-99954', 'Agency' => 'Bolivia', @@ -8300,7 +8387,7 @@ ), ), ), - 212 => + 214 => array ( 'Prefix' => '978-99955', 'Agency' => 'Srpska, Republic of', @@ -8331,7 +8418,7 @@ ), ), ), - 213 => + 215 => array ( 'Prefix' => '978-99956', 'Agency' => 'Albania', @@ -8357,7 +8444,7 @@ ), ), ), - 214 => + 216 => array ( 'Prefix' => '978-99957', 'Agency' => 'Malta', @@ -8388,7 +8475,7 @@ ), ), ), - 215 => + 217 => array ( 'Prefix' => '978-99958', 'Agency' => 'Bahrain', @@ -8419,7 +8506,7 @@ ), ), ), - 216 => + 218 => array ( 'Prefix' => '978-99959', 'Agency' => 'Luxembourg', @@ -8445,7 +8532,7 @@ ), ), ), - 217 => + 219 => array ( 'Prefix' => '978-99960', 'Agency' => 'Malawi', @@ -8471,7 +8558,7 @@ ), ), ), - 218 => + 220 => array ( 'Prefix' => '978-99961', 'Agency' => 'El Salvador', @@ -8502,7 +8589,7 @@ ), ), ), - 219 => + 221 => array ( 'Prefix' => '978-99962', 'Agency' => 'Mongolia', @@ -8528,7 +8615,7 @@ ), ), ), - 220 => + 222 => array ( 'Prefix' => '978-99963', 'Agency' => 'Cambodia', @@ -8554,7 +8641,7 @@ ), ), ), - 221 => + 223 => array ( 'Prefix' => '978-99964', 'Agency' => 'Nicaragua', @@ -8580,7 +8667,7 @@ ), ), ), - 222 => + 224 => array ( 'Prefix' => '978-99965', 'Agency' => 'Macau', @@ -8611,7 +8698,7 @@ ), ), ), - 223 => + 225 => array ( 'Prefix' => '978-99966', 'Agency' => 'Kuwait', @@ -8647,7 +8734,7 @@ ), ), ), - 224 => + 226 => array ( 'Prefix' => '978-99967', 'Agency' => 'Paraguay', @@ -8673,7 +8760,7 @@ ), ), ), - 225 => + 227 => array ( 'Prefix' => '978-99968', 'Agency' => 'Botswana', @@ -8704,7 +8791,7 @@ ), ), ), - 226 => + 228 => array ( 'Prefix' => '978-99969', 'Agency' => 'Oman', @@ -8730,7 +8817,7 @@ ), ), ), - 227 => + 229 => array ( 'Prefix' => '978-99970', 'Agency' => 'Haiti', @@ -8756,7 +8843,7 @@ ), ), ), - 228 => + 230 => array ( 'Prefix' => '978-99971', 'Agency' => 'Myanmar', @@ -8782,7 +8869,7 @@ ), ), ), - 229 => + 231 => array ( 'Prefix' => '978-99972', 'Agency' => 'Faroe Islands', @@ -8808,7 +8895,7 @@ ), ), ), - 230 => + 232 => array ( 'Prefix' => '978-99973', 'Agency' => 'Mongolia', @@ -8834,7 +8921,7 @@ ), ), ), - 231 => + 233 => array ( 'Prefix' => '978-99974', 'Agency' => 'Bolivia', @@ -8880,7 +8967,7 @@ ), ), ), - 232 => + 234 => array ( 'Prefix' => '978-99975', 'Agency' => 'Tajikistan', @@ -8911,7 +8998,7 @@ ), ), ), - 233 => + 235 => array ( 'Prefix' => '978-99976', 'Agency' => 'Srpska, Republic of', @@ -8947,7 +9034,7 @@ ), ), ), - 234 => + 236 => array ( 'Prefix' => '978-99977', 'Agency' => 'Rwanda', @@ -8983,7 +9070,7 @@ ), ), ), - 235 => + 237 => array ( 'Prefix' => '978-99978', 'Agency' => 'Mongolia', @@ -9009,7 +9096,7 @@ ), ), ), - 236 => + 238 => array ( 'Prefix' => '978-99979', 'Agency' => 'Honduras', @@ -9035,7 +9122,7 @@ ), ), ), - 237 => + 239 => array ( 'Prefix' => '978-99980', 'Agency' => 'Bhutan', @@ -9071,7 +9158,7 @@ ), ), ), - 238 => + 240 => array ( 'Prefix' => '978-99981', 'Agency' => 'Macau', @@ -9096,18 +9183,18 @@ ), 3 => array ( - 'Range' => '5000000-8999999', + 'Range' => '5000000-7999999', 'Length' => '0', ), 4 => array ( - 'Range' => '9000000-9999999', + 'Range' => '8000000-9999999', 'Length' => '3', ), ), ), ), - 239 => + 241 => array ( 'Prefix' => '978-99982', 'Agency' => 'Benin', @@ -9148,7 +9235,7 @@ ), ), ), - 240 => + 242 => array ( 'Prefix' => '978-99983', 'Agency' => 'El Salvador', @@ -9184,7 +9271,7 @@ ), ), ), - 241 => + 243 => array ( 'Prefix' => '979-10', 'Agency' => 'France', @@ -9220,7 +9307,7 @@ ), ), ), - 242 => + 244 => array ( 'Prefix' => '979-11', 'Agency' => 'Korea, Republic', @@ -9256,7 +9343,7 @@ ), ), ), - 243 => + 245 => array ( 'Prefix' => '979-12', 'Agency' => 'Italy', @@ -9282,6 +9369,42 @@ ), ), ), + 246 => + array ( + 'Prefix' => '979-8', + 'Agency' => 'United States', + 'Rules' => + array ( + 'Rule' => + array ( + 0 => + array ( + 'Range' => '00000000-59999999', + 'Length' => '0', + ), + 1 => + array ( + 'Range' => '6000000-6999999', + 'Length' => '4', + ), + 2 => + array ( + 'Range' => '70000000-98499999', + 'Length' => '0', + ), + 3 => + array ( + 'Range' => '9850000-9850009', + 'Length' => '7', + ), + 4 => + array ( + 'Range' => '98500100-99999999', + 'Length' => '0', + ), + ), + ), + ), ); $prefixes = array ( 0 => @@ -9360,7 +9483,17 @@ ), 2 => array ( - 'Range' => '1300000-9999999', + 'Range' => '1300000-7999999', + 'Length' => '0', + ), + 3 => + array ( + 'Range' => '8000000-8999999', + 'Length' => '1', + ), + 4 => + array ( + 'Range' => '9000000-9999999', 'Length' => '0', ), ), From 5ea69ba236ae6732c0ae15addc9867d70026eda7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Bourgoin?= Date: Thu, 9 Jan 2020 17:12:38 +0100 Subject: [PATCH 3/5] Fix invalid country test case after updating ranges --- tests/IsbnTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/IsbnTest.php b/tests/IsbnTest.php index 02de043..58419b5 100644 --- a/tests/IsbnTest.php +++ b/tests/IsbnTest.php @@ -88,10 +88,10 @@ public function testIsbnWithInvalidProductCode() public function testIsbnWithInvalidCountryCode() { $this->expectException("Exception"); - $this->expectExceptionMessage("Cannot format invalid ISBN: [9798887382562] Country code is unknown"); - $isbn = new Isbn('9798887382562'); + $this->expectExceptionMessage("Cannot format invalid ISBN: [9792887382562] Country code is unknown"); + $isbn = new Isbn('9792887382562'); $this->assertFalse($isbn->isValid()); - $this->assertEquals($isbn->format('EAN'), '9798887382562'); + $this->assertEquals($isbn->format('EAN'), '9792887382562'); } /** From 49e9c5672b57619941937daf130481b496ba7735 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Bourgoin?= Date: Thu, 9 Jan 2020 18:14:14 +0100 Subject: [PATCH 4/5] Fix #21: Undefined offset error when formatting a mexican ISBN --- src/Biblys/Isbn/Isbn.php | 20 ++++++++++++++------ tests/IsbnTest.php | 10 ++++++++++ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/Biblys/Isbn/Isbn.php b/src/Biblys/Isbn/Isbn.php index 47b25e2..53950a1 100644 --- a/src/Biblys/Isbn/Isbn.php +++ b/src/Biblys/Isbn/Isbn.php @@ -261,9 +261,9 @@ private function removeCountryCode($code) */ private function removePublisherCode($code) { - - // Get the seven first digits + // Get the seven first digits or less $first7 = substr($code, 0, 7); + $codeLength = strlen($first7); // Select the right set of rules according to the agency (product + country code) foreach ($this->getRanges()->getGroups() as $g) { @@ -275,13 +275,21 @@ private function removePublisherCode($code) $this->setAgency($g['Agency']); // Select the right rule - foreach ($rules as $r) { - $ra = explode('-', $r['Range']); - if ($first7 < $ra[0] || $first7 > $ra[1]) { + foreach ($rules as $rule) { + + // Get min and max value in range + // and trim values to match code length + $range = explode('-', $rule['Range']); + $min = substr($range[0], 0, $codeLength); + $max = substr($range[1], 0, $codeLength); + + // If first 7 digits is smaller than min + // or greater than max, continue to next rule + if ($first7 < $min || $first7 > $max) { continue; } - $length = $r['Length']; + $length = $rule['Length']; $this->setPublisher(substr($code, 0, $length)); $this->setPublication(substr($code, $length)); break; diff --git a/tests/IsbnTest.php b/tests/IsbnTest.php index 58419b5..ba4af58 100644 --- a/tests/IsbnTest.php +++ b/tests/IsbnTest.php @@ -113,4 +113,14 @@ public function testValidateInvalidIsbn() $isbn = new Isbn('6752843449499'); $isbn->validate(); } + + /** + * Validate method should not throw for a mexican ISBN + */ + public function testValidateMexicanIsbn() + { + $isbn = new Isbn("9700764923"); + $this->assertTrue($isbn->isValid()); + $this->assertEquals($isbn->format("ISBN-13"), "978-970-07-6492-4"); + } } From 8d95f5b93f542cde7d9a5e0e2cd9b0370ea62411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Bourgoin?= Date: Thu, 9 Jan 2020 18:21:42 +0100 Subject: [PATCH 5/5] Bump version to 2.1.3 --- README.md | 2 +- composer.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 656b044..b8a2fd4 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ This package can be used to: Install with composer: ```console -composer require biblys/isbn:^2.1.2 +composer require biblys/isbn:^2.1.3 ``` ## Usage diff --git a/composer.json b/composer.json index e7831ab..a18e2e0 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "biblys/isbn", "description": "A PHP library to convert and validate ISBNs & EANs", - "time": "2019-10-13", + "time": "2020-01-09", "keywords": [ "ISBN", "EAN",