From 2d7cbc78c9a462c4e4893e84df81187634c53986 Mon Sep 17 00:00:00 2001 From: Piotr Horzycki Date: Fri, 6 Apr 2018 19:52:19 +0200 Subject: [PATCH 01/45] PHPUnit updated to version 7 --- composer.json | 2 +- composer.lock | 564 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 381 insertions(+), 185 deletions(-) diff --git a/composer.json b/composer.json index bdf73ac..77c37e4 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,7 @@ "psr/http-message": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^6.0", + "phpunit/phpunit": "^7", "squizlabs/php_codesniffer": "1.5.*" }, "autoload": { diff --git a/composer.lock b/composer.lock index 863381e..6d07558 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "967b2d81af5c0ae65ab57db374efe747", + "content-hash": "11923844dc08a980976eb449d12993cf", "packages": [ { "name": "psr/http-message", @@ -60,32 +60,32 @@ "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.0.5", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { "athletic/athletic": "~0.1.8", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -110,41 +110,44 @@ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" + "time": "2017-07-22T11:58:36+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.6.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe" + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/5a5a9fc8025a08d8919be87d6884d5a92520cefe", - "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": "^5.6 || ^7.0" }, "require-dev": { - "doctrine/collections": "1.*", - "phpunit/phpunit": "~4.1" + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^4.1" }, "type": "library", "autoload": { "psr-4": { "DeepCopy\\": "src/DeepCopy/" - } + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "Create deep copies (clones) of your objects", - "homepage": "https://github.com/myclabs/DeepCopy", "keywords": [ "clone", "copy", @@ -152,20 +155,122 @@ "object", "object graph" ], - "time": "2017-01-26T22:05:40+00:00" + "time": "2017-10-19T19:58:43+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "1.0", + "name": "phar-io/manifest", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + "url": "https://github.com/phar-io/manifest.git", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^1.0.1", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2017-03-05T18:14:27+00:00" + }, + { + "name": "phar-io/version", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2017-03-05T17:38:23+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", "shasum": "" }, "require": { @@ -206,33 +311,39 @@ "reflection", "static analysis" ], - "time": "2015-12-27T11:43:31+00:00" + "time": "2017-09-11T18:02:19+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "3.1.1", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", "shasum": "" }, "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0@dev", - "phpdocumentor/type-resolver": "^0.2.0", + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", "webmozart/assert": "^1.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ @@ -251,24 +362,24 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-09-30T07:12:33+00:00" + "time": "2017-11-30T07:14:17+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.2.1", + "version": "0.4.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", "shasum": "" }, "require": { - "php": ">=5.5", + "php": "^5.5 || ^7.0", "phpdocumentor/reflection-common": "^1.0" }, "require-dev": { @@ -298,37 +409,37 @@ "email": "me@mikevanriel.com" } ], - "time": "2016-11-25T06:54:22+00:00" + "time": "2017-07-14T14:27:02+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.7.0", + "version": "1.7.5", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" + "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/dfd6be44111a7c41c2e884a336cc4f461b3b2401", + "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", "sebastian/comparator": "^1.1|^2.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, "require-dev": { "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8 || ^5.6.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.7.x-dev" } }, "autoload": { @@ -361,44 +472,44 @@ "spy", "stub" ], - "time": "2017-03-02T20:05:34+00:00" + "time": "2018-02-19T10:16:54+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "5.0.3", + "version": "6.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "4e99e1c4f9b05cbf4d6e84b100b3ff4107cf8cd1" + "reference": "774a82c0c5da4c1c7701790c262035d235ab7856" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4e99e1c4f9b05cbf4d6e84b100b3ff4107cf8cd1", - "reference": "4e99e1c4f9b05cbf4d6e84b100b3ff4107cf8cd1", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/774a82c0c5da4c1c7701790c262035d235ab7856", + "reference": "774a82c0c5da4c1c7701790c262035d235ab7856", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^7.0", - "phpunit/php-file-iterator": "^1.3", - "phpunit/php-text-template": "^1.2", - "phpunit/php-token-stream": "^1.4.11 || ^2.0", - "sebastian/code-unit-reverse-lookup": "^1.0", - "sebastian/environment": "^2.0", - "sebastian/version": "^2.0" + "php": "^7.1", + "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.1", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" }, "require-dev": { - "ext-xdebug": "^2.5", - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^7.0" }, "suggest": { - "ext-xdebug": "^2.5.1" + "ext-xdebug": "^2.6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0.x-dev" + "dev-master": "6.0-dev" } }, "autoload": { @@ -413,7 +524,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -424,20 +535,20 @@ "testing", "xunit" ], - "time": "2017-03-06T14:22:16+00:00" + "time": "2018-04-06T15:39:20+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.2", + "version": "1.4.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", "shasum": "" }, "require": { @@ -471,7 +582,7 @@ "filesystem", "iterator" ], - "time": "2016-10-03T07:40:28+00:00" + "time": "2017-11-27T13:52:08+00:00" }, { "name": "phpunit/php-text-template", @@ -516,28 +627,28 @@ }, { "name": "phpunit/php-timer", - "version": "1.0.9", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b8454ea6958c3dee38453d3bd571e023108c91f", + "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -552,7 +663,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -561,33 +672,33 @@ "keywords": [ "timer" ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2018-02-01T13:07:23+00:00" }, { "name": "phpunit/php-token-stream", - "version": "1.4.11", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7" + "reference": "21ad88bbba7c3d93530d93994e0a33cd45f02ace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7", - "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/21ad88bbba7c3d93530d93994e0a33cd45f02ace", + "reference": "21ad88bbba7c3d93530d93994e0a33cd45f02ace", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -610,20 +721,20 @@ "keywords": [ "tokenizer" ], - "time": "2017-02-27T10:12:30+00:00" + "time": "2018-02-01T13:16:43+00:00" }, { "name": "phpunit/phpunit", - "version": "6.0.8", + "version": "7.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "47ee3fa1bca5c50f1d25105201eb20df777bd7b6" + "reference": "f7fe5127889519e421600fe0feeb113a5e210f20" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/47ee3fa1bca5c50f1d25105201eb20df777bd7b6", - "reference": "47ee3fa1bca5c50f1d25105201eb20df777bd7b6", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f7fe5127889519e421600fe0feeb113a5e210f20", + "reference": "f7fe5127889519e421600fe0feeb113a5e210f20", "shasum": "" }, "require": { @@ -632,33 +743,31 @@ "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.3", - "php": "^7.0", - "phpspec/prophecy": "^1.6.2", - "phpunit/php-code-coverage": "^5.0", - "phpunit/php-file-iterator": "^1.4", - "phpunit/php-text-template": "^1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^4.0", - "sebastian/comparator": "^1.2.4 || ^2.0", - "sebastian/diff": "^1.2", - "sebastian/environment": "^2.0", - "sebastian/exporter": "^2.0 || ^3.0", - "sebastian/global-state": "^1.1 || ^2.0", - "sebastian/object-enumerator": "^2.0 || ^3.0", + "myclabs/deep-copy": "^1.6.1", + "phar-io/manifest": "^1.0.1", + "phar-io/version": "^1.0", + "php": "^7.1", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^6.0.1", + "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.0", + "phpunit/phpunit-mock-objects": "^6.1", + "sebastian/comparator": "^2.1", + "sebastian/diff": "^3.0", + "sebastian/environment": "^3.1", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", "sebastian/resource-operations": "^1.0", - "sebastian/version": "^2.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2", - "phpunit/dbunit": "<3.0" + "sebastian/version": "^2.0.1" }, "require-dev": { "ext-pdo": "*" }, "suggest": { "ext-xdebug": "*", - "phpunit/php-invoker": "^1.1" + "phpunit/php-invoker": "^2.0" }, "bin": [ "phpunit" @@ -666,7 +775,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.0.x-dev" + "dev-master": "7.1-dev" } }, "autoload": { @@ -692,33 +801,30 @@ "testing", "xunit" ], - "time": "2017-03-02T15:24:03+00:00" + "time": "2018-04-06T12:39:30+00:00" }, { "name": "phpunit/phpunit-mock-objects", - "version": "4.0.1", + "version": "6.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "eabce450df194817a7d7e27e19013569a903a2bf" + "reference": "3f5ca97eee66a07951d018f6726017629c85c86d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/eabce450df194817a7d7e27e19013569a903a2bf", - "reference": "eabce450df194817a7d7e27e19013569a903a2bf", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3f5ca97eee66a07951d018f6726017629c85c86d", + "reference": "3f5ca97eee66a07951d018f6726017629c85c86d", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^3.0" - }, - "conflict": { - "phpunit/phpunit": "<6.0" + "doctrine/instantiator": "^1.0.5", + "php": "^7.1", + "phpunit/php-text-template": "^1.2.1", + "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^7.0" }, "suggest": { "ext-soap": "*" @@ -726,7 +832,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "6.1-dev" } }, "autoload": { @@ -741,7 +847,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -751,7 +857,7 @@ "mock", "xunit" ], - "time": "2017-03-03T06:30:20+00:00" + "time": "2018-04-06T08:14:40+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -800,30 +906,30 @@ }, { "name": "sebastian/comparator", - "version": "2.0.0", + "version": "2.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "20f84f468cb67efee293246e6a09619b891f55f0" + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/20f84f468cb67efee293246e6a09619b891f55f0", - "reference": "20f84f468cb67efee293246e6a09619b891f55f0", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", "shasum": "" }, "require": { "php": "^7.0", - "sebastian/diff": "^1.2", - "sebastian/exporter": "^3.0" + "sebastian/diff": "^2.0 || ^3.0", + "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.1.x-dev" } }, "autoload": { @@ -854,38 +960,39 @@ } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2017-03-03T06:26:08+00:00" + "time": "2018-02-01T13:46:46+00:00" }, { "name": "sebastian/diff", - "version": "1.4.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + "reference": "e09160918c66281713f1c324c1f4c4c3037ba1e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", - "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/e09160918c66281713f1c324c1f4c4c3037ba1e8", + "reference": "e09160918c66281713f1c324c1f4c4c3037ba1e8", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "~4.8" + "phpunit/phpunit": "^7.0", + "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -910,34 +1017,37 @@ "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2015-12-08T07:14:41+00:00" + "time": "2018-02-01T13:45:15+00:00" }, { "name": "sebastian/environment", - "version": "2.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^5.0" + "phpunit/phpunit": "^6.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -962,20 +1072,20 @@ "environment", "hhvm" ], - "time": "2016-11-26T07:53:53+00:00" + "time": "2017-07-01T08:51:00+00:00" }, { "name": "sebastian/exporter", - "version": "3.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "b82d077cb3459e393abcf4867ae8f7230dcb51f6" + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/b82d077cb3459e393abcf4867ae8f7230dcb51f6", - "reference": "b82d077cb3459e393abcf4867ae8f7230dcb51f6", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", "shasum": "" }, "require": { @@ -989,7 +1099,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -1029,27 +1139,27 @@ "export", "exporter" ], - "time": "2017-03-03T06:25:06+00:00" + "time": "2017-04-03T13:19:02+00:00" }, { "name": "sebastian/global-state", - "version": "1.1.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.0" }, "suggest": { "ext-uopz": "*" @@ -1057,7 +1167,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1080,24 +1190,25 @@ "keywords": [ "global state" ], - "time": "2015-10-12T03:26:01+00:00" + "time": "2017-04-27T15:39:26+00:00" }, { "name": "sebastian/object-enumerator", - "version": "3.0.0", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "de6e32f7192dfea2e4bedc892434f4830b5c5794" + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/de6e32f7192dfea2e4bedc892434f4830b5c5794", - "reference": "de6e32f7192dfea2e4bedc892434f4830b5c5794", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", "shasum": "" }, "require": { "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", "sebastian/recursion-context": "^3.0" }, "require-dev": { @@ -1126,7 +1237,52 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-03-03T06:21:01+00:00" + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" }, { "name": "sebastian/recursion-context", @@ -1342,17 +1498,57 @@ "time": "2014-12-04T22:32:15+00:00" }, { - "name": "webmozart/assert", - "version": "1.2.0", + "name": "theseer/tokenizer", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2017-04-07T12:08:54+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a", "shasum": "" }, "require": { @@ -1389,7 +1585,7 @@ "check", "validate" ], - "time": "2016-11-23T20:04:58+00:00" + "time": "2018-01-29T19:49:41+00:00" } ], "aliases": [], From b6d0a5879a30662c65f7151ac19b5dc22f595eaf Mon Sep 17 00:00:00 2001 From: Piotr Horzycki Date: Fri, 6 Apr 2018 19:58:35 +0200 Subject: [PATCH 02/45] PHP Code Sniffer updated to version 3 --- Behavioral/Strategy/Context.php | 2 +- composer.json | 2 +- composer.lock | 54 +++++++++------------------------ 3 files changed, 17 insertions(+), 41 deletions(-) diff --git a/Behavioral/Strategy/Context.php b/Behavioral/Strategy/Context.php index 6279f0e..6478492 100644 --- a/Behavioral/Strategy/Context.php +++ b/Behavioral/Strategy/Context.php @@ -20,4 +20,4 @@ class Context return $elements; } -} \ No newline at end of file +} diff --git a/composer.json b/composer.json index 77c37e4..37aec81 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ }, "require-dev": { "phpunit/phpunit": "^7", - "squizlabs/php_codesniffer": "1.5.*" + "squizlabs/php_codesniffer": "^3" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 6d07558..d380198 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "11923844dc08a980976eb449d12993cf", + "content-hash": "4a0ecca27d108ff51eafc6a5a5cd17fe", "packages": [ { "name": "psr/http-message", @@ -1424,61 +1424,37 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "1.5.6", + "version": "3.2.3", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "6f3e42d311b882b25b4d409d23a289f4d3b803d5" + "reference": "4842476c434e375f9d3182ff7b89059583aa8b27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/6f3e42d311b882b25b4d409d23a289f4d3b803d5", - "reference": "6f3e42d311b882b25b4d409d23a289f4d3b803d5", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/4842476c434e375f9d3182ff7b89059583aa8b27", + "reference": "4842476c434e375f9d3182ff7b89059583aa8b27", "shasum": "" }, "require": { + "ext-simplexml": "*", "ext-tokenizer": "*", - "php": ">=5.1.2" + "ext-xmlwriter": "*", + "php": ">=5.4.0" }, - "suggest": { - "phpunit/php-timer": "dev-master" + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, "bin": [ - "scripts/phpcs" + "bin/phpcs", + "bin/phpcbf" ], "type": "library", "extra": { "branch-alias": { - "dev-phpcs-fixer": "2.0.x-dev" + "dev-master": "3.x-dev" } }, - "autoload": { - "classmap": [ - "CodeSniffer.php", - "CodeSniffer/CLI.php", - "CodeSniffer/Exception.php", - "CodeSniffer/File.php", - "CodeSniffer/Report.php", - "CodeSniffer/Reporting.php", - "CodeSniffer/Sniff.php", - "CodeSniffer/Tokens.php", - "CodeSniffer/Reports/", - "CodeSniffer/CommentParser/", - "CodeSniffer/Tokenizers/", - "CodeSniffer/DocGenerators/", - "CodeSniffer/Standards/AbstractPatternSniff.php", - "CodeSniffer/Standards/AbstractScopeSniff.php", - "CodeSniffer/Standards/AbstractVariableSniff.php", - "CodeSniffer/Standards/IncorrectPatternException.php", - "CodeSniffer/Standards/Generic/Sniffs/", - "CodeSniffer/Standards/MySource/Sniffs/", - "CodeSniffer/Standards/PEAR/Sniffs/", - "CodeSniffer/Standards/PSR1/Sniffs/", - "CodeSniffer/Standards/PSR2/Sniffs/", - "CodeSniffer/Standards/Squiz/Sniffs/", - "CodeSniffer/Standards/Zend/Sniffs/" - ] - }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" @@ -1489,13 +1465,13 @@ "role": "lead" } ], - "description": "PHP_CodeSniffer tokenises PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", "homepage": "http://www.squizlabs.com/php-codesniffer", "keywords": [ "phpcs", "standards" ], - "time": "2014-12-04T22:32:15+00:00" + "time": "2018-02-20T21:35:23+00:00" }, { "name": "theseer/tokenizer", From 15e802dab1ee50bf979dea44a20cbee1c495a3e0 Mon Sep 17 00:00:00 2001 From: Piotr Horzycki Date: Fri, 6 Apr 2018 20:47:12 +0200 Subject: [PATCH 03/45] Dropped support for PHP 7.0 --- .travis.yml | 1 - composer.json | 2 +- composer.lock | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index f98ed8d..ae675bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,6 @@ language: php sudo: false php: - - 7.0 - 7.1 - 7.2 diff --git a/composer.json b/composer.json index 37aec81..c9c8e6a 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,7 @@ ], "minimum-stability": "stable", "require": { - "php": ">=7.0", + "php": ">=7.1", "psr/http-message": "^1.0" }, "require-dev": { diff --git a/composer.lock b/composer.lock index d380198..35105d1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "4a0ecca27d108ff51eafc6a5a5cd17fe", + "content-hash": "af39391ec89831e5552cd0018816e53e", "packages": [ { "name": "psr/http-message", @@ -1570,7 +1570,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.0" + "php": ">=7.1" }, "platform-dev": [] } From b4599ec67c53b405a79e6695e32643a6a2405004 Mon Sep 17 00:00:00 2001 From: Miroslav Trninic Date: Sun, 29 Apr 2018 15:55:54 +0200 Subject: [PATCH 04/45] enhance delegation example --- More/Delegation/JuniorDeveloper.php | 7 +++++++ More/Delegation/TeamLead.php | 12 ++++++++++++ More/Delegation/Tests/DelegationTest.php | 15 ++++++++++++++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/More/Delegation/JuniorDeveloper.php b/More/Delegation/JuniorDeveloper.php index dbaa30a..22da577 100644 --- a/More/Delegation/JuniorDeveloper.php +++ b/More/Delegation/JuniorDeveloper.php @@ -8,4 +8,11 @@ class JuniorDeveloper { return 'Some junior developer generated code...'; } + /** + * Junior is authorized to call method on TeamLead (real delegation) + */ + public function writeReallyBadCode(TeamLead $teamLead): string + { + return $teamLead->writeReallyBadCode(); + } } diff --git a/More/Delegation/TeamLead.php b/More/Delegation/TeamLead.php index 67d9bdf..90c04d3 100644 --- a/More/Delegation/TeamLead.php +++ b/More/Delegation/TeamLead.php @@ -21,4 +21,16 @@ class TeamLead { return $this->junior->writeBadCode(); } + public function writeBadCode(): string + { + //note that we are passing $this from teamLead context + return $this->junior->writeReallyBadCode($this); + } + /** + * Junior can call this method + */ + public function writeReallyBadCode(): string + { + return 'Even team lead can write bad code...'; + } } diff --git a/More/Delegation/Tests/DelegationTest.php b/More/Delegation/Tests/DelegationTest.php index 888555a..b521240 100644 --- a/More/Delegation/Tests/DelegationTest.php +++ b/More/Delegation/Tests/DelegationTest.php @@ -7,11 +7,24 @@ use PHPUnit\Framework\TestCase; class DelegationTest extends TestCase { - public function testHowTeamLeadWriteCode() + /** + * @test + */ + public function teamLeadCanBlameJuniorForBadCode() { $junior = new Delegation\JuniorDeveloper(); $teamLead = new Delegation\TeamLead($junior); $this->assertEquals($junior->writeBadCode(), $teamLead->writeCode()); } + /** + * @test + */ + public function teamLeadCanWriteBadCode() + { + $junior = new Delegation\JuniorDeveloper(); + $teamLead = new Delegation\TeamLead($junior); + + $this->assertEquals($junior->writeReallyBadCode($teamLead), $teamLead->writeBadCode()); + } } From 63220c73c63ec1ac969892244c18e8bcf6f153b8 Mon Sep 17 00:00:00 2001 From: Miroslav Trninic Date: Mon, 30 Apr 2018 21:46:36 +0200 Subject: [PATCH 05/45] Fix formatting (new line before comment) --- More/Delegation/JuniorDeveloper.php | 1 + More/Delegation/TeamLead.php | 1 + More/Delegation/Tests/DelegationTest.php | 1 + 3 files changed, 3 insertions(+) diff --git a/More/Delegation/JuniorDeveloper.php b/More/Delegation/JuniorDeveloper.php index 22da577..c8da3ee 100644 --- a/More/Delegation/JuniorDeveloper.php +++ b/More/Delegation/JuniorDeveloper.php @@ -8,6 +8,7 @@ class JuniorDeveloper { return 'Some junior developer generated code...'; } + /** * Junior is authorized to call method on TeamLead (real delegation) */ diff --git a/More/Delegation/TeamLead.php b/More/Delegation/TeamLead.php index 90c04d3..1b990a1 100644 --- a/More/Delegation/TeamLead.php +++ b/More/Delegation/TeamLead.php @@ -26,6 +26,7 @@ class TeamLead //note that we are passing $this from teamLead context return $this->junior->writeReallyBadCode($this); } + /** * Junior can call this method */ diff --git a/More/Delegation/Tests/DelegationTest.php b/More/Delegation/Tests/DelegationTest.php index b521240..fc48048 100644 --- a/More/Delegation/Tests/DelegationTest.php +++ b/More/Delegation/Tests/DelegationTest.php @@ -17,6 +17,7 @@ class DelegationTest extends TestCase $this->assertEquals($junior->writeBadCode(), $teamLead->writeCode()); } + /** * @test */ From 05a21fab486a2f45263f4d30e3340fff266fc687 Mon Sep 17 00:00:00 2001 From: Marcelo Diniz Date: Thu, 3 May 2018 17:51:51 -0300 Subject: [PATCH 06/45] translate EAV --- locale/pt_BR/LC_MESSAGES/More/EAV/README.po | 91 ++++++++------------- 1 file changed, 33 insertions(+), 58 deletions(-) diff --git a/locale/pt_BR/LC_MESSAGES/More/EAV/README.po b/locale/pt_BR/LC_MESSAGES/More/EAV/README.po index d0113c0..8067aa6 100644 --- a/locale/pt_BR/LC_MESSAGES/More/EAV/README.po +++ b/locale/pt_BR/LC_MESSAGES/More/EAV/README.po @@ -1,78 +1,53 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2015, Dominik Liebler and contributors -# This file is distributed under the same license as the DesignPatternsPHP -# package. -# FIRST AUTHOR , 2016. -# -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: DesignPatternsPHP 1.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-03 23:59+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Project-Id-Version: DesignPatternsPHP " +"d4972f03fc93de3ef10bb31220de49931487d5e0\n" +"POT-Creation-Date: 2016-09-19 17:00-0500\n" +"Last-Translator: Marcelo Diniz \n" +"Content-Type: text/plain; " +"charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" -#: ../../More/EAV/README.rst:2 -msgid "`Entity-Attribute-Value (EAV)`__" -msgstr "" +#: ../../More/EAV/README.rst:1 +msgid "Entity-Attribute-Value (EAV)" +msgstr "Entidade–Atributo–Valor (EAV)" #: ../../More/EAV/README.rst:4 -msgid "" -"The Entity–attribute–value (EAV) pattern in order to implement EAV model " -"with PHP." -msgstr "" +msgid "The Entity–attribute–value (EAV) pattern in order to implement EAV model with PHP." +msgstr "O padrão Entidade–atributo–valor (EAV), a fim de implementar o modelo EAV com o PHP." -#: ../../More/EAV/README.rst:7 +#: ../../More/EAV/README.rst:6 msgid "Purpose" -msgstr "" +msgstr "Objetivo" #: ../../More/EAV/README.rst:9 msgid "" -"The Entity–attribute–value (EAV) model is a data model to describe " -"entities where the number of attributes (properties, parameters) that can" -" be used to describe them is potentially vast, but the number that will " -"actually apply to a given entity is relatively modest." +"The Entity–attribute–value (EAV) model is a data model to describe entities " +"where the number of attributes (properties, parameters) that can be used " +"to describe them is potentially vast, but the number that will actually apply " +"to a given entity is relatively modest." msgstr "" +"O modelo Entidade–atributo–valor (EAV) é um modelo de dados para descrever entidades " +"onde o número de atributos (propriedades, parâmetros) que podem ser usados " +"para descrevê-lo é potencialmente vasto, mas o número que realmente se aplicará " +"para uma dada entidade é relativamente modesta." -#: ../../More/EAV/README.rst:15 -msgid "Examples" -msgstr "" - -#: ../../More/EAV/README.rst:17 -msgid "Check full work example in `example.php`_ file." -msgstr "" - -#: ../../More/EAV/README.rst:90 +#: ../../More/EAV/README.rst:14 msgid "UML Diagram" -msgstr "" +msgstr "Diagrama UML" -#: ../../More/EAV/README.rst:97 +#: ../../More/EAV/README.rst:18 +msgid "EAV UML Diagram" +msgstr "Diagrama UML EAV" + +#: ../../More/EAV/README.rst:21 msgid "Code" -msgstr "" +msgstr "Código" -#: ../../More/EAV/README.rst:99 +#: ../../More/EAV/README.rst:24 msgid "You can also find this code on `GitHub`_" -msgstr "" +msgstr "Você pode encontrar o código no `Github`_" -#: ../../More/EAV/README.rst:102 +#: ../../More/EAV/README.rst:44 msgid "Test" -msgstr "" - -#: ../../More/EAV/README.rst:104 -msgid "Tests/EntityTest.php" -msgstr "" - -#: ../../More/EAV/README.rst:110 -msgid "Tests/AttributeTest.php" -msgstr "" - -#: ../../More/EAV/README.rst:116 -msgid "Tests/ValueTest.php" -msgstr "" - +msgstr "Teste" \ No newline at end of file From 6a06eb5d956ecaaf6b4cb5c227d3475cb7bd2207 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Fri, 4 May 2018 23:05:24 +0300 Subject: [PATCH 07/45] Return links rst definitions --- README.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.rst b/README.rst index 7254f57..bfbaef5 100644 --- a/README.rst +++ b/README.rst @@ -44,3 +44,6 @@ To establish a consistent code quality, please check your code using `PHP CodeSniffer`_ against `PSR2 standard`_ using ``./vendor/bin/phpcs -p --standard=PSR2 --ignore=vendor .``. +.. _`design patterns`: http://en.wikipedia.org/wiki/Software_design_pattern +.. _`PHP CodeSniffer`: https://github.com/squizlabs/PHP_CodeSniffer +.. _`PSR2 standard`: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md From c182e09248c1fa0674bfbcd677e5d68b45a1b4f6 Mon Sep 17 00:00:00 2001 From: Carl Whittick Date: Thu, 10 May 2018 08:45:11 +0100 Subject: [PATCH 08/45] Added a missing word to the Readme --- Structural/Facade/README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Structural/Facade/README.rst b/Structural/Facade/README.rst index 46b729b..95e8a17 100644 --- a/Structural/Facade/README.rst +++ b/Structural/Facade/README.rst @@ -4,7 +4,7 @@ Purpose ------- -The primary goal of a Facade Pattern is not to avoid you to read the +The primary goal of a Facade Pattern is not to avoid you having to read the manual of a complex API. It's only a side-effect. The first goal is to reduce coupling and follow the Law of Demeter. From bb22ef0e0f16eda340880e2cd02be80bc78927a6 Mon Sep 17 00:00:00 2001 From: Miroslav Trninic Date: Sun, 13 May 2018 19:19:53 +0200 Subject: [PATCH 09/45] fix test annotation and one line separation issues --- More/Delegation/TeamLead.php | 1 + More/Delegation/Tests/DelegationTest.php | 10 ++-------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/More/Delegation/TeamLead.php b/More/Delegation/TeamLead.php index 1b990a1..8a515e6 100644 --- a/More/Delegation/TeamLead.php +++ b/More/Delegation/TeamLead.php @@ -21,6 +21,7 @@ class TeamLead { return $this->junior->writeBadCode(); } + public function writeBadCode(): string { //note that we are passing $this from teamLead context diff --git a/More/Delegation/Tests/DelegationTest.php b/More/Delegation/Tests/DelegationTest.php index fc48048..0dd8083 100644 --- a/More/Delegation/Tests/DelegationTest.php +++ b/More/Delegation/Tests/DelegationTest.php @@ -7,10 +7,7 @@ use PHPUnit\Framework\TestCase; class DelegationTest extends TestCase { - /** - * @test - */ - public function teamLeadCanBlameJuniorForBadCode() + public function testTeamLeadCanBlameJuniorForBadCode() { $junior = new Delegation\JuniorDeveloper(); $teamLead = new Delegation\TeamLead($junior); @@ -18,10 +15,7 @@ class DelegationTest extends TestCase $this->assertEquals($junior->writeBadCode(), $teamLead->writeCode()); } - /** - * @test - */ - public function teamLeadCanWriteBadCode() + public function testTeamLeadCanWriteBadCode() { $junior = new Delegation\JuniorDeveloper(); $teamLead = new Delegation\TeamLead($junior); From 477a6d623a234156fb270d08eca194cad88fac5e Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Thu, 14 Jun 2018 17:17:58 +0200 Subject: [PATCH 10/45] introduced Storage interface --- More/Repository/MemoryStorage.php | 2 +- More/Repository/PostRepository.php | 4 ++-- More/Repository/Storage.php | 12 ++++++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 More/Repository/Storage.php diff --git a/More/Repository/MemoryStorage.php b/More/Repository/MemoryStorage.php index f0fd69a..d6173c9 100644 --- a/More/Repository/MemoryStorage.php +++ b/More/Repository/MemoryStorage.php @@ -2,7 +2,7 @@ namespace DesignPatterns\More\Repository; -class MemoryStorage +class MemoryStorage implements Storage { /** * @var array diff --git a/More/Repository/PostRepository.php b/More/Repository/PostRepository.php index 417bf52..d4b6bd1 100644 --- a/More/Repository/PostRepository.php +++ b/More/Repository/PostRepository.php @@ -14,11 +14,11 @@ namespace DesignPatterns\More\Repository; class PostRepository { /** - * @var MemoryStorage + * @var Storage */ private $persistence; - public function __construct(MemoryStorage $persistence) + public function __construct(Storage $persistence) { $this->persistence = $persistence; } diff --git a/More/Repository/Storage.php b/More/Repository/Storage.php new file mode 100644 index 0000000..befe1ab --- /dev/null +++ b/More/Repository/Storage.php @@ -0,0 +1,12 @@ + Date: Thu, 14 Jun 2018 17:19:47 +0200 Subject: [PATCH 11/45] introduced sub-namespace Domain --- More/Repository/{ => Domain}/Post.php | 2 +- More/Repository/PostRepository.php | 2 ++ More/Repository/Tests/RepositoryTest.php | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) rename More/Repository/{ => Domain}/Post.php (95%) diff --git a/More/Repository/Post.php b/More/Repository/Domain/Post.php similarity index 95% rename from More/Repository/Post.php rename to More/Repository/Domain/Post.php index 44aaefa..779e938 100644 --- a/More/Repository/Post.php +++ b/More/Repository/Domain/Post.php @@ -1,6 +1,6 @@ Date: Thu, 14 Jun 2018 17:45:45 +0200 Subject: [PATCH 12/45] Repository is supposed to generate IDs --- More/Repository/Domain/Post.php | 20 +++++---- More/Repository/MemoryStorage.php | 14 ++++--- More/Repository/PostRepository.php | 18 ++++---- More/Repository/Storage.php | 4 +- More/Repository/Tests/PostRepositoryTest.php | 44 ++++++++++++++++++++ More/Repository/Tests/RepositoryTest.php | 22 ---------- 6 files changed, 78 insertions(+), 44 deletions(-) create mode 100644 More/Repository/Tests/PostRepositoryTest.php delete mode 100644 More/Repository/Tests/RepositoryTest.php diff --git a/More/Repository/Domain/Post.php b/More/Repository/Domain/Post.php index 779e938..25cc604 100644 --- a/More/Repository/Domain/Post.php +++ b/More/Repository/Domain/Post.php @@ -5,7 +5,7 @@ namespace DesignPatterns\More\Repository\Domain; class Post { /** - * @var int|null + * @var int */ private $id; @@ -19,6 +19,15 @@ class Post */ private $text; + public static function draft(int $id, string $title, string $text): Post + { + return new self( + $id, + $title, + $text + ); + } + public static function fromState(array $state): Post { return new self( @@ -29,22 +38,17 @@ class Post } /** - * @param int|null $id + * @param int $id * @param string $text * @param string $title */ - public function __construct($id, string $title, string $text) + private function __construct(int $id, string $title, string $text) { $this->id = $id; $this->text = $text; $this->title = $title; } - public function setId(int $id) - { - $this->id = $id; - } - public function getId(): int { return $this->id; diff --git a/More/Repository/MemoryStorage.php b/More/Repository/MemoryStorage.php index d6173c9..6463b21 100644 --- a/More/Repository/MemoryStorage.php +++ b/More/Repository/MemoryStorage.php @@ -14,20 +14,22 @@ class MemoryStorage implements Storage */ private $lastId = 0; - public function persist(array $data): int + public function generateId(): int { $this->lastId++; - $data['id'] = $this->lastId; - $this->data[$this->lastId] = $data; - return $this->lastId; } + public function persist(array $data) + { + $this->data[$this->lastId] = $data; + } + public function retrieve(int $id): array { if (!isset($this->data[$id])) { - throw new \OutOfRangeException(sprintf('No data found for ID %d', $id)); + throw new \OutOfBoundsException(sprintf('No data found for ID %d', $id)); } return $this->data[$id]; @@ -36,7 +38,7 @@ class MemoryStorage implements Storage public function delete(int $id) { if (!isset($this->data[$id])) { - throw new \OutOfRangeException(sprintf('No data found for ID %d', $id)); + throw new \OutOfBoundsException(sprintf('No data found for ID %d', $id)); } unset($this->data[$id]); diff --git a/More/Repository/PostRepository.php b/More/Repository/PostRepository.php index 6a9d450..e559492 100644 --- a/More/Repository/PostRepository.php +++ b/More/Repository/PostRepository.php @@ -25,12 +25,17 @@ class PostRepository $this->persistence = $persistence; } + public function generateId(): int + { + return $this->persistence->generateId(); + } + public function findById(int $id): Post { - $arrayData = $this->persistence->retrieve($id); - - if (is_null($arrayData)) { - throw new \InvalidArgumentException(sprintf('Post with ID %d does not exist', $id)); + try { + $arrayData = $this->persistence->retrieve($id); + } catch (\OutOfBoundsException $e) { + throw new \OutOfBoundsException(sprintf('Post with id %d does not exist', $id), 0, $e); } return Post::fromState($arrayData); @@ -38,11 +43,10 @@ class PostRepository public function save(Post $post) { - $id = $this->persistence->persist([ + $this->persistence->persist([ + 'id' => $post->getId(), 'text' => $post->getText(), 'title' => $post->getTitle(), ]); - - $post->setId($id); } } diff --git a/More/Repository/Storage.php b/More/Repository/Storage.php index befe1ab..1bbd1ed 100644 --- a/More/Repository/Storage.php +++ b/More/Repository/Storage.php @@ -4,7 +4,9 @@ namespace DesignPatterns\More\Repository; interface Storage { - public function persist(array $data): int; + public function generateId(): int; + + public function persist(array $data); public function retrieve(int $id): array; diff --git a/More/Repository/Tests/PostRepositoryTest.php b/More/Repository/Tests/PostRepositoryTest.php new file mode 100644 index 0000000..b1b85c3 --- /dev/null +++ b/More/Repository/Tests/PostRepositoryTest.php @@ -0,0 +1,44 @@ +repository = new PostRepository(new MemoryStorage()); + } + + public function testCanGenerateId() + { + $this->assertEquals(1, $this->repository->generateId()); + } + + /** + * @expectedException \OutOfBoundsException + * @expectedExceptionMessage Post with id 42 does not exist + */ + public function testThrowsExceptionWhenTryingToFindPostWhichDoesNotExist() + { + $this->repository->findById(42); + } + + public function testCanPersistPostDraft() + { + $postId = $this->repository->generateId(); + $post = Post::draft($postId, 'Repository Pattern', 'Design Patterns PHP'); + $this->repository->save($post); + + $this->assertEquals($postId, $this->repository->findById($postId)->getId()); + } +} diff --git a/More/Repository/Tests/RepositoryTest.php b/More/Repository/Tests/RepositoryTest.php deleted file mode 100644 index 4c3fa53..0000000 --- a/More/Repository/Tests/RepositoryTest.php +++ /dev/null @@ -1,22 +0,0 @@ -save($post); - - $this->assertEquals(1, $post->getId()); - $this->assertEquals($post->getId(), $repository->findById(1)->getId()); - } -} From 6c726d66b78d3d14cffd8ff68bf934c337ef71b1 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Thu, 14 Jun 2018 18:28:40 +0200 Subject: [PATCH 13/45] introduced PostId and PostStatus and changed naming from Storage to Persistence --- More/Repository/Domain/Post.php | 28 +- More/Repository/Domain/PostId.php | 42 + More/Repository/Domain/PostStatus.php | 80 ++ ...oryStorage.php => InMemoryPersistence.php} | 2 +- .../{Storage.php => Persistence.php} | 2 +- More/Repository/PostRepository.php | 20 +- More/Repository/README.rst | 28 +- More/Repository/Tests/PostRepositoryTest.php | 13 +- More/Repository/uml/Repository.uml | 22 +- More/Repository/uml/uml.png | Bin 27162 -> 131435 bytes More/Repository/uml/uml.svg | 800 +++--------------- .../ca/LC_MESSAGES/More/Repository/README.po | 4 +- .../de/LC_MESSAGES/More/Repository/README.po | 8 +- .../es/LC_MESSAGES/More/Repository/README.po | 4 +- .../pl/LC_MESSAGES/More/Repository/README.po | 8 +- .../LC_MESSAGES/More/Repository/README.po | 4 +- .../ru/LC_MESSAGES/More/Repository/README.po | 8 +- .../LC_MESSAGES/More/Repository/README.po | 4 +- 18 files changed, 334 insertions(+), 743 deletions(-) create mode 100644 More/Repository/Domain/PostId.php create mode 100644 More/Repository/Domain/PostStatus.php rename More/Repository/{MemoryStorage.php => InMemoryPersistence.php} (94%) rename More/Repository/{Storage.php => Persistence.php} (90%) diff --git a/More/Repository/Domain/Post.php b/More/Repository/Domain/Post.php index 25cc604..ca67c3b 100644 --- a/More/Repository/Domain/Post.php +++ b/More/Repository/Domain/Post.php @@ -5,10 +5,15 @@ namespace DesignPatterns\More\Repository\Domain; class Post { /** - * @var int + * @var PostId */ private $id; + /** + * @var PostStatus + */ + private $status; + /** * @var string */ @@ -19,10 +24,11 @@ class Post */ private $text; - public static function draft(int $id, string $title, string $text): Post + public static function draft(PostId $id, string $title, string $text): Post { return new self( $id, + PostStatus::fromString(PostStatus::STATE_DRAFT), $title, $text ); @@ -31,29 +37,37 @@ class Post public static function fromState(array $state): Post { return new self( - $state['id'], + PostId::fromInt($state['id']), + PostStatus::fromInt($state['statusId']), $state['title'], $state['text'] ); } /** - * @param int $id - * @param string $text + * @param PostId $id + * @param PostStatus $status * @param string $title + * @param string $text */ - private function __construct(int $id, string $title, string $text) + private function __construct(PostId $id, PostStatus $status, string $title, string $text) { $this->id = $id; + $this->status = $status; $this->text = $text; $this->title = $title; } - public function getId(): int + public function getId(): PostId { return $this->id; } + public function getStatus(): PostStatus + { + return $this->status; + } + public function getText(): string { return $this->text; diff --git a/More/Repository/Domain/PostId.php b/More/Repository/Domain/PostId.php new file mode 100644 index 0000000..ceadc78 --- /dev/null +++ b/More/Repository/Domain/PostId.php @@ -0,0 +1,42 @@ +id = $id; + } + + public function toInt(): int + { + return $this->id; + } + + private static function ensureIsValid(int $id) + { + if ($id <= 0) { + throw new \InvalidArgumentException('Invalid PostId given'); + } + } +} diff --git a/More/Repository/Domain/PostStatus.php b/More/Repository/Domain/PostStatus.php new file mode 100644 index 0000000..90ef81b --- /dev/null +++ b/More/Repository/Domain/PostStatus.php @@ -0,0 +1,80 @@ + self::STATE_DRAFT, + self::STATE_PUBLISHED_ID => self::STATE_PUBLISHED, + ]; + + /** + * @var int + */ + private $id; + + /** + * @var string + */ + private $name; + + public static function fromInt(int $statusId) + { + self::ensureIsValidId($statusId); + + return new self($statusId, self::$validStates[$statusId]); + } + + public static function fromString(string $status) + { + self::ensureIsValidName($status); + + return new self(array_search($status, self::$validStates), $status); + } + + private function __construct(int $id, string $name) + { + $this->id = $id; + $this->name = $name; + } + + public function toInt(): int + { + return $this->id; + } + + /** + * there is a reason that I avoid using __toString() as it operates outside of the stack in PHP + * and is therefor not able to operate well with exceptions + */ + public function toString(): string + { + return $this->name; + } + + private static function ensureIsValidId(int $status) + { + if (!in_array($status, array_keys(self::$validStates), true)) { + throw new \InvalidArgumentException('Invalid status id given'); + } + } + + + private static function ensureIsValidName(string $status) + { + if (!in_array($status, self::$validStates, true)) { + throw new \InvalidArgumentException('Invalid status name given'); + } + } +} diff --git a/More/Repository/MemoryStorage.php b/More/Repository/InMemoryPersistence.php similarity index 94% rename from More/Repository/MemoryStorage.php rename to More/Repository/InMemoryPersistence.php index 6463b21..b378321 100644 --- a/More/Repository/MemoryStorage.php +++ b/More/Repository/InMemoryPersistence.php @@ -2,7 +2,7 @@ namespace DesignPatterns\More\Repository; -class MemoryStorage implements Storage +class InMemoryPersistence implements Persistence { /** * @var array diff --git a/More/Repository/Storage.php b/More/Repository/Persistence.php similarity index 90% rename from More/Repository/Storage.php rename to More/Repository/Persistence.php index 1bbd1ed..eed76b9 100644 --- a/More/Repository/Storage.php +++ b/More/Repository/Persistence.php @@ -2,7 +2,7 @@ namespace DesignPatterns\More\Repository; -interface Storage +interface Persistence { public function generateId(): int; diff --git a/More/Repository/PostRepository.php b/More/Repository/PostRepository.php index e559492..d06da37 100644 --- a/More/Repository/PostRepository.php +++ b/More/Repository/PostRepository.php @@ -3,9 +3,10 @@ namespace DesignPatterns\More\Repository; use DesignPatterns\More\Repository\Domain\Post; +use DesignPatterns\More\Repository\Domain\PostId; /** - * This class is situated between Entity layer (class Post) and access object layer (MemoryStorage). + * This class is situated between Entity layer (class Post) and access object layer (Persistence). * * Repository encapsulates the set of objects persisted in a data store and the operations performed over them * providing a more object-oriented view of the persistence layer @@ -16,26 +17,26 @@ use DesignPatterns\More\Repository\Domain\Post; class PostRepository { /** - * @var Storage + * @var Persistence */ private $persistence; - public function __construct(Storage $persistence) + public function __construct(Persistence $persistence) { $this->persistence = $persistence; } - public function generateId(): int + public function generateId(): PostId { - return $this->persistence->generateId(); + return PostId::fromInt($this->persistence->generateId()); } - public function findById(int $id): Post + public function findById(PostId $id): Post { try { - $arrayData = $this->persistence->retrieve($id); + $arrayData = $this->persistence->retrieve($id->toInt()); } catch (\OutOfBoundsException $e) { - throw new \OutOfBoundsException(sprintf('Post with id %d does not exist', $id), 0, $e); + throw new \OutOfBoundsException(sprintf('Post with id %d does not exist', $id->toInt()), 0, $e); } return Post::fromState($arrayData); @@ -44,7 +45,8 @@ class PostRepository public function save(Post $post) { $this->persistence->persist([ - 'id' => $post->getId(), + 'id' => $post->getId()->toInt(), + 'statusId' => $post->getStatus()->toInt(), 'text' => $post->getText(), 'title' => $post->getTitle(), ]); diff --git a/More/Repository/README.rst b/More/Repository/README.rst index fb27585..202d74f 100644 --- a/More/Repository/README.rst +++ b/More/Repository/README.rst @@ -33,7 +33,19 @@ You can also find this code on `GitHub`_ Post.php -.. literalinclude:: Post.php +.. literalinclude:: Domain/Post.php + :language: php + :linenos: + +PostId.php + +.. literalinclude:: Domain/PostId.php + :language: php + :linenos: + +PostStatus.php + +.. literalinclude:: Domain/PostStatus.php :language: php :linenos: @@ -43,18 +55,24 @@ PostRepository.php :language: php :linenos: -MemoryStorage.php +Persistence.php -.. literalinclude:: MemoryStorage.php +.. literalinclude:: InMemoryPersistence.php + :language: php + :linenos: + +InMemoryPersistence.php + +.. literalinclude:: InMemoryPersistence.php :language: php :linenos: Test ---- -Tests/RepositoryTest.php +Tests/PostRepositoryTest.php -.. literalinclude:: Tests/RepositoryTest.php +.. literalinclude:: Tests/PostRepositoryTest.php :language: php :linenos: diff --git a/More/Repository/Tests/PostRepositoryTest.php b/More/Repository/Tests/PostRepositoryTest.php index b1b85c3..fec6ef1 100644 --- a/More/Repository/Tests/PostRepositoryTest.php +++ b/More/Repository/Tests/PostRepositoryTest.php @@ -2,7 +2,9 @@ namespace DesignPatterns\More\Repository\Tests; -use DesignPatterns\More\Repository\MemoryStorage; +use DesignPatterns\More\Repository\Domain\PostId; +use DesignPatterns\More\Repository\Domain\PostStatus; +use DesignPatterns\More\Repository\InMemoryPersistence; use DesignPatterns\More\Repository\Domain\Post; use DesignPatterns\More\Repository\PostRepository; use PHPUnit\Framework\TestCase; @@ -16,12 +18,12 @@ class PostRepositoryTest extends TestCase protected function setUp() { - $this->repository = new PostRepository(new MemoryStorage()); + $this->repository = new PostRepository(new InMemoryPersistence()); } public function testCanGenerateId() { - $this->assertEquals(1, $this->repository->generateId()); + $this->assertEquals(1, $this->repository->generateId()->toInt()); } /** @@ -30,7 +32,7 @@ class PostRepositoryTest extends TestCase */ public function testThrowsExceptionWhenTryingToFindPostWhichDoesNotExist() { - $this->repository->findById(42); + $this->repository->findById(PostId::fromInt(42)); } public function testCanPersistPostDraft() @@ -39,6 +41,9 @@ class PostRepositoryTest extends TestCase $post = Post::draft($postId, 'Repository Pattern', 'Design Patterns PHP'); $this->repository->save($post); + $this->repository->findById($postId); + $this->assertEquals($postId, $this->repository->findById($postId)->getId()); + $this->assertEquals(PostStatus::STATE_DRAFT, $post->getStatus()->toString()); } } diff --git a/More/Repository/uml/Repository.uml b/More/Repository/uml/Repository.uml index 84dd0e4..6b02568 100644 --- a/More/Repository/uml/Repository.uml +++ b/More/Repository/uml/Repository.uml @@ -3,20 +3,24 @@ PHP \DesignPatterns\More\Repository\PostRepository - \DesignPatterns\More\Repository\Storage - \DesignPatterns\More\Repository\MemoryStorage - \DesignPatterns\More\Repository\Post - \DesignPatterns\More\Repository\PostRepository + \DesignPatterns\More\Repository\InMemoryPersistence + \DesignPatterns\More\Repository\Domain\PostStatus + \DesignPatterns\More\Repository\Domain\PostId + \DesignPatterns\More\Repository\Domain\Post + \DesignPatterns\More\Repository\Persistence + \DesignPatterns\More\Repository\PostRepository - - - + + + - - + + + \DesignPatterns\More\Repository\PostRepository + Fields Constants diff --git a/More/Repository/uml/uml.png b/More/Repository/uml/uml.png index d22ede8b52c7cdc8d02c6bb26878e0c70b8d54e2..ce0c5e67230c9b94ea1f2bc93e2f1f38bf8706e7 100644 GIT binary patch literal 131435 zcmd43Wn7eNyZ?>4#AN_WQBZOzQbQ@-ETp76hft(zlpGjBMMNAzV(5^LAtXm&21H7_ zo0*}zhLrwa1Fm)Nz3;uBXFvZ}k8haIcyac5#P|4J1Zk)#kX@s>MnXbDrubA=i-d$! ziG<{`>+ctVZ>ZG=8A(W9lPJnc>p(|Wu>1NnV{cE7*K1w$@RB}<$&yUr6Zz5_p%-oj zhksBA>O)N57N@%sta&R?uc$%>)dZ^@rC;;O@Pkq9&+hjnlL=_t*0}Be0tdtBMN>6q z4Zk1NWprOXkWx<`yaaRy{G;eUO}%>l@h|k{^ACSOE}Va80H6Q-6Gt2z@b3fa{3pp2 z*ZGIn(CgNURfD`X(08M6p zXaEBZ6UY5iYq~(~8t~+}?d0un)8O-|e?YCRHGCd(^poh@Wx-VuiY>Ran0@bDZpJxjTMPXw74y?E8qNAZx zFAmJ+UsAa4>~1cmpDjYzL!5Jz_UI|vz_5b(rn-lCZ*NaekHCWWN!6C;5B9GI^uYMd zOJ072+GAqZ_4O@BqGiR8UmeA`1W5iyp~V!KVkW2mlSJ!$=QwaBSDp-5fNyCA1?Bwc zDIKRDUh^f?keHP%d-^r|T&tj4yEg=1oi8HC8XdpV@3JTN0nSeLhrLW{7YcXXNJm9k zW|o5hU;L&Y1?1Fc1Jij*UURyBvT#MccF*awZAbPLHnUOs$ou6a!F}Ui#@Q4oBymfR z46A&dd_4xYPawLt5Fhe_&03w-H=1^A!_^?eBd^3}5q*s7z69I=C8#VH+i6;_x^p_G zQp@O4K46DryWLt30`}qw&)muqbf-q_s|lB8P)?o>kKjUBcE(XoEcN7~*b&d3_pVAP zs$$P%RISzc721fb;q-9euy+56zqjv*M==j@rYP8Pc1fYSDZoT@nWwqB-Y4GMj~0c+ zRQ39!TY${ ze#IlEOSi7CT7GX9^+>dRKE{Xo@BsbTxT-Vey7n6R2<*s)vWbV^Ev(#g-2 zeF~Y<5c^Zz7520z{`&Tib!bg;XyC>5(Pge^)_C((2k)8(fyQrE3p;n+56P$%o?eZ3 zLVvKjEqq8ma~BEAm{fFn)$ZOpwqMhh>yRz&SUw867O*)1?5q$LE+V?x6g03`A+>b3 zhzG>K(nyL~UWD5J#KKH?td{9k4HZF5+2kfdc=(->@9ws+`1p9xlK*Z7YJ!4nbKer* zSo1pxiFhm&=_qW>nNuR?G4O2JED7UxP-&(iQ+P0&{H#&bFWvT2PZPMt>WQj)i*w^W{v8J^Do6uo|KksW|a2DlsX4yr*m}oNN{A^ zV)#NkU#D{{y!4tGNK|U-r*@>I)iX20C$f`~ku9z|*sip^GkfE|Hea(FQEq8AG(_;$ z@}%zTTzjTq2p+&;@B6Cqw7}MNFKd6L--2DZ6&O3+1T6>V2lZzArdiY*Le2GtRpERo-_!$!A@8Y~iZvqWjR|owwRu{@Nzk)v5Wl z?sZHbt@&(n_|WJ;)q&sY{?>b)AP?TD*0B^6YR|1Ee&vSBS8s``z~GeS4fGm$aJ9Ai ztTLyyugm4Es>WUDrde9>-UDB^%S^a-7(umm>jp;90hbt$nRYReJ2;3K`|Hfi6D>%) ztZf{aN6<;RwW6VRa9?$G6Cz&c=e8?|KJI#}e)|p$+872?K+!=&5?5C%Dawb2hEQFi z2<0u&{y@45*{2v^n*49l9*|+p31;umTs_e%JspyD9}S)!vg5z9@>?*LcTKg zd8NK}QyV>Uc|ZN#`PzdQ`uo~GWSseSs0{4h;j_8UpgJ3!(l6UC*xF;vhK~7ktqtDF za6J>kyJU83hHb4Iz^tuZr2oXU0rT_ixNwfN>fb_I4*Z3AE^~#Ez(u)5$ z5xr~D>6FS!^F#dhPp&+N(%ktf>cVSIuLZM_n-~k!Bo?ONwComw9&$pcO{iv!|C(bM zE6z?xlV;kF>nTmuP6(@k!{tk)JVS$4`cnnu3SjWbwZa@a0@Q4bZ&}P+=|QAggDJle zSM)()Q=yQWK-OYQKKq^dSY8gj@x_(Mx%QF~g%zKr@^>fOa6vI}LK4|(I{E&SA3f1t z)-t8YI$UoAR;}aq<}t0wnxeuyeC2w1MTMY%K)J;rk72@#3~kjCV;QcHf+^Mha`K8j zC-$qO7J+eIqETLDkdcY|k;IGVR0w#jKFsjMV3*ZXLUaoPI4b%|=yI%K4z-H{r88*T zi>>q|#f&YtW1=;*wAtFe7zNGpDlK)TujJiv4PCK&&&ljlE5Dko?|AYlz1mQGRKWdD zsoPR(OR(^f6b~_ZNp!1@r1yqLScw#5>u8Xt5gh)ZtYO9_Aqi8U<`KwSj)u6F)h*h) z?ej~#uw0*oNTe3e2_icf7UD&8WA?~*Y>foKrNdA4Pd|5<+j^fI>?gRm-G~vIV7I6J z6^QA@^Sg3Lz>mlp!ONGYxSBs`2fY!kJ}y{%ZKZY91~)?Mchr-{zN$?=dq3L_;0pywMwJe$aqGNu6XLpI#qk6cg{13 z(3+J9Hh(Jh$V6KA^xXL|k|*kyApU7d2v|~;M(}-AJ)6SwBi8`7Y$gt*pfj98iOyxQ zbKBg6QeiVrgS>f?MOWdXIAah2&ry!8VnM`DUvaGT!MxBj z^?S6LmH!{kBA=$y0~{~3a&XWcxc$zqo?~K1?tysRq@%|T*RM<_@yg`jzUg$MF)YWX zs}A-8l1)`r)jU`Dx1yq=Q$jPTrLTuR3ZFfW|01Ka z*QKOO&ml9i^zqxEDhu`XS6Ce4v?D`2rOH@J(&s>D+f0jx#kYdIVRpjmKFH1;6t3|n zFOTT;9)+hU{+r8ig%l2LFEUwu`uB%hdLDwfi0D}F!u~5Ge)}Gt+k-zi92s>MVf(68 zf$2JxP;EPJst@R%fy9>nqqOR%LF&_w@qP}BuZ}$%>3x?OHe$-jZtt1^Ssj!E_G&7{ zcda%R+VPR%wObq=A^eoRn^~a^6QdX^mZB=ryJ? zwa%{mV?911{F9Y7xKX-Nc)Q4DbX38p+Rx=DY8#9b8+e{2sEL5?R8@F2bHMiA)gL4K z_?A};7gh{cq6#Tj;KLpL+D>R)J$oSBRl6C4YHtS1Q!3LZ3eT8wPK;^1zunOYvzD@H zkZ47Cya~XUg=?IS2j8}xjrz-2Z0z7$uk?Dq*4{S_W!#Cl6pr`QSd*^4S_v(X1Dh7` z2;{q6+k)a(TI=gzuO08T`G ztk>^$TZL@EKm)kO2JEsG77`ND+v>!Q^Rk9OoH~m-B#{jgOwQwdw%}UZI&m`7F4lutJm-toW~W`5;bC7dc$57#KY8)Mlb1;b`d2;Z`WY|B2=({?IBW zG5*-o7j1b`*+kG&#lekgt32&G>enkoukGyY#P#;}Y7Gj0+4|eR57?#gcjOB=7|)b) z9S8EiRz3m??MYW3g^?E-u=%q6l+{eFYb!4+YoTUk5H?A7OqyObxtH|9F*JN`Zmo(D zFgSMQc^p#u^Qr2LLrcnm;$Ce#-d|KbmD<#$j<++a>-Le@>cZNa&!2USq~>OuxZL~v z>Lx3wx8Rmv`)x1;DaxgC`;l=;U;VnIvW^W1=QU(?I2p+3qU;6L@xfTl?#{nrzrO6cQ#PYJ zFuGICajI!6c{BGr>+0a(o9Hzg_mlkO$%-f8pK6>BIjTAOC$EjHRtEm)=;#nkQ0>PH z_8E%f>{_s$y9~1|!MMr_t7>s76$c!J6#r8f$ekdR(MKzT+Oqf{RI42sF>jxe2}b#z zG&<4g3+xzWI4D2x6)-hB8yB@u5BxH0%9+Xv(qEKMwaC6-seVGuwRD0m#12V5!c$^2 zv_bfdzlx!4M=mbY1=N)gwBUN?Gj!&|_bKC&(@25xnj zu+sRN*=}n%^J>LKg8T9w9v%`t7fYQm^oNbUJfs{k4qBDL^c@T?c=cr_e5x5gGsBu^ zW;lP<5FYmmY}B+2Cq|FHi{w7_gaSQEjDh}kWYio~ft1s;ac;%db+>HT!CX~9pXLLa zeWR*#ZFdcKbnLl2?8g>!p|i!_U10{g+>zj%f=n{PN$s|&qGR4txXI7NA7-EC`%Pms zPd8uTr~Gz9!=itg)rsqHl#x+UfnP8 zE;qqL4h%p(mF9k>Q8EJj{QUz10vy^Jo~$Kx8e<<4sdnVH+12M06R9pwC3QL-yN@c+ zjZ~u0Ax-519%C5i8$-__%J?HqL)@CKyxVL8xDl1-_|y~2l`YffRd7Ke#kn|x27(x) zAp(_#z`Ky3spA3LxjY#@S=~&p#{#&~wMRYha&jjQN)w-zwGP8t*jl<^-{TMO8sM#^ z+Vl^-ocHDnrk!O6gdQ6`!hx16iFTnkDO#m>+Sf!@cX)jA zF@ZGn2=uRc53C(Et{Jwgncp#R(!|RZkM^TD11zyct4T7eCfc2n9V%NVLIqY8dBw$8 zpHJF|Ed=IJHQQaDtLvq*261Xd+kX_?zS}Gr7km;jEG~4R}u*)m6k(DDUYy%9Y+fkdTh*K zQ1BNebkk`$OxYP;o;tb2JkA2+6^Fq_I=4;B?QO0d|9Tp_wn)B{iCwF z1AIgpAkjw_5>M^u;IP_RP&r>t#|NCP;kS;Y9#ECqfR51JT}IV`EaP_u+nqu2(6-OX zuI#R?4dw(r!(W-~XF@bvXU*=?G_VXorku18x7d}&sw|%bx%ItyMnA4W#d%34c|vpn zO#WKIwWWj;U2KX_71MDgA$ot_3OB(cQ3+o5JI;Ggv?z$eN}uoGqrwl#W~NVRZGF#U z-fz=EsQ6a)kRp74kzal+v?^EM)?v}8qXCRubqooyN;WSysy(jglq?8yJ8D~XT-)Yf z9Yr__j-d+lnjM$LXInjmh3-L*p-xl~6 z&igr)`5dnHWvh4e>*?!T!+NF++baFc*VlKOI=$E{my_%TDs`#gnVw%eiab5yq)i>k zc#JY8pRG+se8A`L4QObw$B4!n+~ zk0M#)5Pmtx(@DkjOwH0KFJ7bzFR0flDVW%Q?zw6AD!A-}9~f5PhW7<;aNS0#7POAq zI<6Gjdpng@WTLWxSeUK^&gl9$u1+s#FTr;Ktc)2N?6!2=HYnIx47q8|(+letc>4D# z`uc02$Whb$0c@|>_|zr}O1caN*L00L$X53W;zT$OU93y3ADJkse<`jv++f!VV>$@9 zmW*8VH(GkvR53SxC(n;3({u>CaxB+BzT!L3eSc^?HsN9XIO!Q!-gr7y(6p)S@9|mE zT}!^=j@V6g_GM<@gT?IinnN|Zgy`E4`6Z5K^v^d<({)30LFS6ktyn?+yg#D}Y z+3f600UtAKnqNOOdRo}${e@YNO1(0`RAuF3d9_n6sR<7Y7qytDzf${3SEifmu}*SxxiO1O&S4fX{oDjLF(!kvPiNAby0%9V!IaR|6B z#{g4kWkDS5TSD#^14m28+PDG`614TtRn_x)pEW4or4tzEpqxKA?u9&Mv@78#%!)AD z2^JbHh%JgM3^}Luyf>XMH!amaK7Phcuoq@wsG5C71nWfj2;!JoqH|b|TkIyAyH)!! zU@8?%UcvS&OF(|7^e6pqc)9RnAeuc3-T_cS84*;9QqRmQ(tq_SfDNxA* z>NBq~k5@@I?)^qAP|!t@kYs=Oj3truCnjZZ|63#zx5M2peY5_9goIcK8m8@YBKdg( zAkW0o73{?**{?>|4nAk(wg?Vd!-P(@i)y8g%Od_RS)7!Sd}E)ISZ$<shooJ_V2 zm7d;(rJwEY{o;#UH_j^qf;c<760Sgp(Wl6}#WeS+fk8uSy^7yw#Y*LblzqI3yy<*_ zSS|X-6pS*JL@mCzzehW}W&~ z$Wj}VBB!U*>pSi%ywNK$Nb;$F5!uH#nfv8Y|N1=NrI#N+IFC6#gQDZ1%08ks{Fw(f zr<-f3!lc9St{OW_h`AVa6GoO zT0e!486leD8sj_EdyuPRjyVKrBUhjqN3+%tn)2#W^opGS`JN9-h_cz*fh6#Q z-`o6L22QmVu=)`mO!zyAfynW=IojnEr^=dr#;zd{0cilOC6B^xG0qknIlp*6s6Gqj zs2sDN>J~x!gp0V=#1GJkg6Uqs^bejXgC*DIy!jj$O+~A#s#J^}RCEQBi&!M08kg{`u0^>GYK=Z+z1o3YyjMta z;a`<=Tg~Z*l`N>T$O9P;Nw|r)VB&rwn0Y<&tH_Bzje}xCg!!Hpr~P%ek?8oB*e$3s zooE*~x14@7%N14CT7=(%L$PRjv!Xytl{nTUv^_X9a9)3kHOOJk?Tc`l-c-^UqV}(3 z+MK!7{yYW}pez&VPD?|fFoZ&ep?=fUZHei#1lxUY#3Q`~7E@&zk4=M6=z&J?63P(l zBJv9SjG(cY_4mSJgoz95V`#oGFXi6vGthSwSbJ>B>MH@;YIrtVLi$qCbFiqZCdT)U z)Kld(Pqc2~MM5;VX5z8WAB^-pr<1(P*5nGj5aVw=*tuDa=kcDfYABP&xqLIcjQ z$YUWyYdDj{L|K=UwF3EH2J;anPd}0&Pmd7YC|VK|C2va~=)7F~)p|zLL_YziAn_Vb zw7Aemgh2zdMJUI@&#Lq_q~WQMmDR+pJJGa|Tz#gGjCnyQPV&?41p^ybha9{%TPDr# znT+(WW*LG;eV9snGKZJO%6E3k2QoJnUI+DnlmD6vxF~6j6TI;*y;wyTlHL>dmz7oF zk&Jbb^KX7WbR66AQONte+HZ!jb=@0Jp(e>I(>6Ymj}m=%YS6Z|!Fc$-7pLBQx6VTr zkRq)5k;ELx`R5vaqJe=oM?ti2tt2fY^tE=wm;(wI<6jHQ%ww6G8>#P`PQnJWv(gQ|Fh@cFrsj(o?|e7CEGi1yZZ zoeecFHh*ZF1tXWWqjo}XllN%Y45Z%K>UVb#BA85U1SkZPOchj1v3Uxe^jo0IH#YI@ z4dArz&eL4e%y+z(697W#w;)x^V|L>!^*s%87X?9bo=sLvRn2fpzgh%>5wiavg;%+7 z&m~^y5%p}%`gzG?U5 zh{HF!T|@#fq+2mDsV4_|*e50c#^I-g+~djZ)vzf23sNG=cRHCi@o>RvcdU@`mDd7# za_p&vH%wfAcMU7_B|n}*@5PmPL=i$~AsUur4us5-Mq+s!E}0f@QZ3%(c>7F^9Q<}( zHFw*)!rT4MZopDj$#{&9t<-B+7(>gB5E8oGm=Sf`)dUO5+moWiHfy|i)jt%r`z zAz`^M_L$(CTYu&PVxetNwrD4LPsNt!##R+vr^!JAm40ciu=R`hJy6VDV@B>p@@DN^ zczNa3qWZWR+;dU)tPH`WvNhttbpGB>*d`n;yl$Ix-BEX-W4+c49-Ii>bmpATr zf3E$(3}Pr6qtsG^l2bLWIMoi#>vzeh)Wk&Wq@;?>)ugrhBw2l z4=YHB`+b);L5)lIbl=lvXaxoMlD@nE7$^Da+~O!f+%2>l8FlTu%r=UFXUf$tmqxm@ z{?N;3;3MdrnA}F9)6*Iywlr5&3wNyp`;MPv2~~o66JoItdzl

znsnM0%-fdAx-? zSY)S@kBS0X^F=CA3}j@aflD{L*DPl`C@!Lm=2Ln($&qzYFbcJrmG39DHWcCGq9HKqHH%sZiw}k4L zE>7?3i|p$Q8Q-^GZIz=+x$!+8%`C&w-1=&(W>*j>cRyq>y(8}G9#Y#;tMmYY79GWN z3J)Q?7A;S7Z_VN1uOyZ-sdBdx*Ejlvq-&MfE1!FDBQ$5Nw626FD#`16bg8L#sqNLP zd?((PY=RzI=yPY`4sbJ$0$7V!GKeIVbVSe6L+3_8GH7Hllv_6r&()m}i-*{oXUV!g zLRn?P`**J+2GHV5=q(126fW;`SjEp7v2P2eh2NMz$-Va|J{NK9vElNbt#JX9eN~}L zVE(vRKmP9IpkW0O)KZ_SWmasIKiT`D+&RV|Ke>EMr~jM^Q&UP z7#9UO$nIyqZ?5+5ws_Jw^}>W(!;)BL`BKou`tEM;vDj^6P-I-3Qm+7G4Vm!M5~2ez zLAwE$UbUp~3E%$pfYzykqntJa5tCRynaa@hIv2{Lde&_gQmg=Ys6%p0#9S!57ONsY^l6K6*oMg5Tx6pD(%S(HwMx^C77 zaN~Gu@!UeVJjJu|H-qnN_beHR_(PRF&EIfFoaaDQtNsxl(<2Vcr~7`VQun1MK^(YS zcl4+r0)tWos%T5Mrp{8luXT}1yF{Vx70(tIH|9ca9_~)Hu&_=_L^D{96W)D(x&jLKI4tOpyu}T8 zSFkOryWhbP04vW02+`%aR0O>xVT%q%>zQB%mXAPuwKsOB89dPM%_^bO14SlE8o6%A z01$jD^Zn?nSAf3bPh8cNE6gu^1RX1MADs^#x7rx=#LPlpL~_?4s>NPiubE#VbA*;U z*^%e+_-K$7M=Y$(<|6rO`ci7C2fw(KkdzcPw_vv-M$QYU`=o&V?yWa|VQ>@U`EIF} zZRtVrF6+TM1y4U^Y=Ny*iZ^l4HvfbKdlOR)Gn+4cA-v9?`b`oIntZFacNE_HG`=Xem->3Ik1(g z_-yR@$ZR9@>DA-RYa>BbtshW{nzM6L3LH!aA@@Q}mRT?DI^>`{LA>G7bCP-oP*Lm1kH9CR;dE}W_Q1Cc0PWBY_8f5x&RoY^i?Z+hg?U%KckUQ zFj+Hf!J1ZKl>0F0c6K`X>SoZT zS(w!pLGR#$x060*dh)H+dmgx(g@R&9SzzZR1$C?J{lIij7x(QB$2@IAE;iJM&Cb;s zybNX>m{V6|VnTIF*Bmb1Zr5M@)%wW6yE%^KcTV1KXdv`lp&Kn%0P>JTjFs)DxlG>c zMgU$(7f~J%8h2|X+8`BOWc?nW*Qb-zFh7uN&sLJl-F5G}gHx@EG+H+@{@lrc7Sdg= zSl>w&!SymCvTi<2Dylxy6cPrp3{eXu1+|PS*Y*Lz1YItwO`xyZdC1onE&ZLD;TDI^ z7H+jwAV|)Nu#r;=&A63a{G)wF2kPrKuf@0LXb42ZG~>#7fj?R>JDD5X?MLQE>2p>e zMrEv({bqP!X%XV1CMikrcj;5^CWSiDn^~qfpXf>0=t1;iO;2SUByZi*YI+;z$3wdF zW5~vWVw)0-4DVhTo*D1$w0*Kil@_Sz)^dp0Ppy0N%|^HamN%H6(8%~_79bXx8|@ez zexUlu%o5macKe0F$aWPl>D3tM(|nD!>QDw2ewR$M3~NM{(j2ZqrY|8D2Lb5IK*pTd zV(R8}f%Bowel5OmoW3??bLKRz-}Vnl-`L6XynSu+^Fyhz2(7%MclLv)s@;U0>hSg8 z>4KQ9^&V7AWpl~pxrH4y2o3%}^L+Ee5j zEz>QDwn`=IPiy{S;?-D#JuYO8tnNs82*)KY*;uOBUf93B|8{m-Fz`D-15l$tmRWQF zh(4U94tP#CCv{H>cMgPW&_1Tm62mKjXzNj{1#wT;vjVlUA1SYFTdoIanKGL2elyY_ z4T9XhR!b~p0nzoC7~6hWm`Gm>q~N5|0Bvd2TJWPALmMYmD(MCEw+D6*8n$8s(6sa=_=C*>gCUSZU$)DG?mv_mPXuxAzl!XeBj&bv= zjEZJpp}X5v_FLS>$93H=zZ6N`-H1DoA6mPv)+t9t6+@M#+|y_S^=^Ptg>9Fuk!PFy zV2se~ggwq-jWpd4lyAOxd`YIB$rM!zWlsLK@xg%WxTvc>n;!6~onr+h(B+da)e_t& zR==+N$|Cbg@J`$~M4$I_K9vC8mqOQvkzUX0z>K!b(2)KMOUG{GIoQDxq!oR?>pE5J z4B^*@1cHdbh8pJ-Q)Jy?4K|;J?L?cjHiYNGRj~!6r5^O2D@^a#DB$YJY+DCV#YjG{ z!OqM?f_Jau^skfJD6Lrhu1%$)oUSA;MVW!*gYC=ftAqXBx3{izSb)t1iZ_p2wZ|vJ zTIKLV^M`HWajA9BY`lG6NWtWA&Cu9WT9iD^H-r-Ni}XzrZa2YV1u56_JoYI;ukIZO zAYS^#nvxk(GHDB$0paWK6(oRzfQ>n+lBrH(YoMoJoF2ve)aATQfki!2zN2Bq&*ME5 zzSSZ5-U(|pVM9Ms`P7(IJLXW+wq=u`3yM2(WjMWc^2ZrqlKF^oy{f-*Ozy{b#=ojL za6LavaUlv?LGV5JbFmSsa|Bipag}<6>I|-7ueiHi-03M!^_4nh{0El-dSWceFSbTP zvfETf`|H16X<>iP_n&_EzYgiY`OPV=^8x+C5Zz?1FsrIo6ibd(6SDn| zj~BBMoB$kR15EKo_GMy#YRfa&&5v7!?@^f5Bp){q(<06mKj@Cl^VeqxqKu%Y9qA}y z(I;=z_+jApO5%1M4!{NY8;_(NGjxLuLOxx8MpS+?JV)0ytpBM!7W|CkBByEe2=8}wR)iNdhPP{8=F?GLnEScdX#6=~s@UB=xsj{yw&feax zUqxoVmZpdAQv|X$XJ27Vb4UIH*i{Ms5iwoJ){2M5nZFaEkz#eFc+J9rI}l4jt8(56 z^4PlXExBZ6Xw65iB`oa$nNBZqMfU9+3WQKPZpz>6HW=<1w>?elzjnsDIk&r~+wcLY>aVv=4CCqYEe^QW z#|y;c z<9&-LYm+ga=3kr*FMZ7rUmmi?E1#pUvxVRzE<|`lZhQmyNy`Oet>ghgwo{Prr|6A6 z-g*HHlY)NV$pga34^u6gOKx<$5~O*pP~?nWT*t{c-{#j+r0RP5-EWP*Fo1o2kt_O+ zt2b72Zy^7amXGgc(6zP@R6p`&BZY1gmN-)vQ$?783{-`FLi9X>m-Q@(@h`4Ozo7w-7X*rzeGM_Ro&YWrE~ z?(v9U{FZ49YmTT<3dId;obB3griHnxwgKvg;osN$AO8{B#Cz;8r^~A@^Z^xo=n)CF zoD-I|o0*-quu_gFe$M(UETqof-bZVtQlB#k7*h$mp1@?M;K%j5EsYKTa>sYGyamOMX>a1c{6d;-y;z z=p+;u^p%;r($g6vK|ooe)e%Tf^0{$KKXIGNeWj85lv8GeQj5;T{pR6>TJ(*bA=DDp z5)i|u#sTm~u@OD;T$ZVn(09~no~mK}Jj+@WR_s48{Kjh5o>{KsCkrmcbawAO>zMNB zo2OJ}Gul?Kdv{LIR?ipb-+NG|Tt{Gj{B5fZnE z?{Gl0O#kM2J$-X0$at@Hsn$!9DzmWewAjX9WbH10GKD9FW3yl zSvSI9mz3dU_W8|0fv3+0mj~4rudIF-$yT6-1YKK~LF=Nc6`PzXxg#Z%i{qtMJFUIy zKf5Y^z7@h;B*5OAeQZ;KckS|P7k8}`E85P;N~XotfWBTBT`cTZ6G2qP^L(OPjkZg4 zKwFmh@l@*0g;CDzT#1?axz2Cp_fw{nNJ3v<0VpCxV{Zo=54%WkTYJSUp0Ai?PraX^ zCR>ZzKKyY^y_LrmYDtUQOZdBcGes$;o=)GFUuG4p$A%`cD=b}65=LmdZ1RgrK0}FK z(k|xfkVfY`6qI;CZf)W}$z{1>04iqk@o)r~Av=dz%DM{q!76#S$0KxlVVt-4p3z0X zoUfK8&?wtZbJc-|UJ{fIs*W_sD$1^BCm(ZOe%`nQq`k9%x}sGKwDcsWbT#v}`cf>; zSI6s<&I4H6lPw8lr_a;r))M%_kVqlr^=`2)>QCp+sx}d^lK`-EbnjWx{6zv0TZj7lLt@b8 z7YfWpk3V!8sqN~~4>g_c9>rbCrI zzS1tPqiPpzEH3*^HJ@!Joir@|4gG(bTZ+tU0_E65~S^e6lQX`>|hVnrn z_b#|2EwJ*V1#f{CV6y%Jdwe+1FulP+dJ6xdx}gO8RmX0R+iE7{#AWQ5M_IuY*h0W z08ss#qj%3d-StKa6eC2naK$wHVsOW-D? zBWgjb=-OUH?=h7dAX-1c0KTz^)#F8HJ@I|N*U;rbawS~Iknlfj3UdtQD2sO)+gWZH zm~CtvStRs$PR&gfw86JZw=PPW8YiuCj|8EB)rxic&xlEoFxX7NN4nURUC->O@FL5a z{T?K<`8nD97mT}Ig||F~=yC08R%RJPd|SqRKyEcVY1>%Ue{skm>lC?Sx;VwPbzDu* zL+Gln{l&+vc2=-PK{a>>t&v2s!YPESLc%Gz1}D@WATVMGu$YTpPbCTjxbGHW?(gIm zIbX+;mfQXVkPrZM!3aP0BW+=gZzJKEtwgmh7y>n)5o+hZ!IOcta-0FipvZczvQj#t zr+;&(`Ej*V*3lHDku4))s-Wb+!@mH8N@i8zq99h**Oq`Hcy1H198uQ*UZRiRNmxsOTSpSKfApCAQ~^R=o5dK|i<6vU(Pi#@F$P7Ldd zm&bEw+m`TT6?x-cyakV6J(OUMa|u-Vm5DY{C`HRu7&U^^K#^k=vj`q3ac7V;>Fz5QK?t-6tw3*?o+p>#6I&-`u+4j|*mz}~nK5?D@%=B@`R(n5mr zT1THWs{{c`4-G?}=zDeBdbGI!M*`hf;}x}O3#$)?QKcUuEw0cpM+Z7yX39%%41bF; zHSAJ_G>wPu&V@CiWTkkjJ)HDCv#GDwt95A0yGL>GmlE_uj;rhR5a2G#j_uRlBb$Hu zT7H3%VAfcndypU{6>_XsM4WBgpOd#Jg6=qp<4U~x4VATm`V1_roI&EXRW7-4(iQIk z^0gGSavy4LFK~;7J|Pi2Dx$g&+IHa&NS*gtLG|h!G8l-TEy@04a{$Wa<;!K{QJAam z+bUjNxuKEUw-NxGgHcWQfP3mQs!skR`oU4WGE|J(gh_05`J`3WXmLs%{E-kQ``%eh z(w2%#6Q}O!3>%m*)$+;y7mIqqn;F+`iV-djKEXaiwid7^J&|`Ovr>OSOn*M0oOVCY z%(|psFfKiTybUeFhj?4l0h3-s7Yy(`Q&rLMdvbYoZu93^df<2(i|Y9U|LLvc0Kx?z_a^Eg_b9D0pyrER$8N zBYL{lw~v_?m)S}EP4^tp)bKGWeo?9g#=A5OgsLR(rzGYy{drgr9JQuw9VOH~EOuAL zgDU-nPo^k5ew&jjkoA%H1CZkB^49pcOCM#gSfcxV9@1-&HV+eHS{~ydq|{v+^4*;) z9S+Y8iRV5pSAqV)o{d$n#aSk7f!=xOf=DBX8}Dy9Vgv1O0a2ptsH*e6*PwR=vtG?S zVUYUA6#OameN#priHr`luu-)Z4~*;BFXAR93Fr|@5a^gRuN2uWmzGPw;yR^M+uMBH z_dl0<#X*-DB1m6mYPAe6_{Y^LC1ox@#{L#}ma%^$MAJBj?2O<-qy~P8vF^X+BI-F# zcFq4g$`bl?ZYF4;XphNkGX-b<4`S&FEa_-#)(2|3eV*tpyI+tgg9odmzW~Wa zk}t$&|7T*;>-1j`&VM_?52*i_en6T3f7MDs{o==_HolIlos3-oHoDE>9IE&(NU$GE zo`<@+{tnBg%*MFfon@V+t@*B)YE8c7Kq?Ql(6BIap+LG|=}SQTe(Bd822cwdiWM{P zuK}UIl+d!Ho!fv8^EU!^ zU9#WZ#nT(04FJO-xN2T?G?iBON_Ya$m5No_x8+NF1EPCr(kBOJ81GUjDn4GR3q=%j z81J0+YwjUtus=L5&rgCpvi6$}vcZLrljf~*CE(3@J>Q9HUl8LQi^rjgHyMyJ{h*sO z?YIRYF2eJQ|0ng*I(T^`Fs8Gxkeia4R{Ml@RS^PNh-UJRzL$fj`cNH3hOEJ(46an% zinG%Wl({ises;5gczRPZC}CPEr!HESlii)Cv7|yH#xeJ*zCa9D`#?ZviRGE%3-fcyu@Q;$~nLRu;;xC-5EG-p(~!7(Uu6RThqN^CVJZ+b%>^Hzyi0#Q zB=oX(CmK#e`n_j(^x$B0Y0SozsD;|!C7$y_MU!2ZOACh&htLMSf*aAEHH@bYn@5JN0nxvhNm8M8R86f2IH)Ykuh zqZ+d^g-z4W6y-ExPc5no>{YX-X+o19Zc7+}JQ?T_GMO7rQ!c3`)b}23ff~JfBZ`or z)XGVKfa3b(k*^l&p4C!+NL8z`{bFs9uhbuiB6V?a%0zne8S4W6x&~Bhzf?$F?=4;_ zvUQLD^!~z6BR1h8wENrr>R{A3Ao-(x*JU4S=pjW*1td_w-RpLbWI+ryf~8I^?qnpk zfrtJKFf0O#WipmspHE~Us*lk1&^F{l*{V&&#eTH*EB`eICKq~h=waSO`qD$=rXsB` ztO8qARLjHRu0du?;wyt>J)n(GaiWOqL%i8j_1a$S;#a-n8q1f8p)G1J+zZvu-Jmhr zQv9~EP&zte<`FmFShQbPL;SeZ#Wzmx8avr9>y3g-wnrX`6}39x&EzckLJK zKw1D@rs4LzsvN_ZR~PL**zh-Y^PC3cLhE}g~t#R~ahK*o-i@J(TxAmuVH(^>XMI3{P zSWGKp+K#M??c~m+R;8O&)#gQH@K%45l~FtdM3Cn1FjNT0LlH z`hJr-86E$LN)Ny^7GMNcQ4VmxcCuM)6$0Io?&juFW2nHlJ{STKx{E@X9Ih?rG zu&Q8PD##*>Moe$qa4!F`=Y!Fr_0pB4_T}oECb~-kK~|=j8tT9cQCao5?@k^NwKJ`+ z^PTa^?vWMNPC57?2N43*FRrpa#dR8eWVzCqKNjtgH=#Md3H)&x;3~ZUYBVSXegmk~ zG}o$%*3!lUH-o+wcWu?@$ zqsbm~{FEiCaY@t}w);2lG=N#MqlcOdY9$X%jo5s1JkiW%_Akq)x%d(Cb+qp;5sgqL z_8K7hP(|xH+wB7{sf>L_YaG3lAq*ZO`{%Wo5uXmLX_~;6n8HTt%J!smlc11@w))Oi z9K2EDg(NQTD_)i4KbLV!y0=(WYkP1{B7%h=iNCW6viw)_Qi+>W&mlB#Cl32xpESqShIB8Md-0p|I|zWJ^CF z{sSZ#H*(s7Tl4y+l0_m9mK&VRfLB+)`{Ji!HRfu&D)A3eq>0Jx#PbI5cjq5^fVM)% z(s``H7=ITiTLvsm7i>!(jTbsoZ@>edXV1Y#!|7*Re?K=6_;XNVxzy{*%%(q8sB!{een=jnnHQ~i^%RaR%K9#J18t(&f1QhciJfhXR6U>ywLpbY4; zH&zaPUQuX(B6C};#Ou&4z{vg&Z|@n`)b_QD+O`c5MFj-`MVeIU(iH`z_Zo`yP7nws zG!;RSrj#IEdJRYoEuhi~9TIASl+Z#a^mbR!?SJq0-1DCE-Vc`#{9v)jnrqH6#~9Ce z#u(Go`Cr)pksc^h@+D?;{m>L{SKR|@>C1b_8=Ke<`(^MDSo=_}-ZSd}?T{K#9Ox*~ z+Fok$(J2V%@B>)B-T{oo>9_`rEt7z#kO-pGC9Y+;b0LjjJLXQjE5s0VX~!OjZvdjW zKM$lyG)^C}Bb04AIZ1HTF?CFbCwqU}Bru$ww8vKNOmdC?Z{X&fNa?$U&F|Tzs(uQY znrj*nK|%l-xBYXZ1HY=pK*FT^TzO9lE}m71eJs1q+M2p`TU@`V6CADNIfXiL?=-N_ zU#Qp~LdYx>n^UAGQ`&M%boVv$eElBZaxDKuo4k7Kmx5QXVSXBDZ<&cq=N`~lL01Ov%B}*Po4wz{XOe{VZ&D_0KNI7d@uxUxOGi>0@0u9IxKCZ}2f5pjWKX zQu+Z=DTeoEk^f=mSFxM`W?-ebudoU%qXN2SIL{U1rj=Vr^!mieiB26rfK^KFs@2c62dQ05)zy z=vQ%sHOmNPUQo2n%((P6B2lIX ze`+#Jus|gaiO*#mgnm3-k$+E&I*4FC?<}RCCmIu8sNOo2weG=C;&@C6hVuYD&yInT zq<<;UD~;6c>-Vq!!>W=015ElS9NQAa=>x63eih4zl%4%eoRgY!N#Dgy^wS(u=ieHG ze(~)8H>7ss|FkeBy8s*a-xslvVy2r-TgUgA9)9`Vd+V=X1ujxJC`P~TcJaZ+R#vih zZv(}IPSHmxb`rfUHS%wIyZJV_Qgj~3?NtC07*^en8FrIjWh?6kCNDh<99b8SCF=?p zz3?Snw_N522^8b%-Dq#p7XlPwvTt(0e;`@;T4Y+$*1P6s%~_yevn|Hf;@uc`ipI@_ zMyqt@e*n3jHhr_h`tjD)x$p0?v9^jh*!w zO?KX84k_GPhq2|4G?nVDi8@nj{I*LbzHd`dH@+B z8+RzVgV966;zA-4*OD%hJvs0_=$7jIa{M-|&>W#XV=fHjvZM z6qVI-OJ=Chv}jkjv$60j2Ww&1B+fYu+nCACV4M-L!xOh3RUtYwmcT$kRpXI92z&4D z>Q+GXW6e0h4 z*BRtBtXkYj0NmhF4Ho{cs?qQpWW(*H;jKD5rDDbhV`P6XkBoe#EhYE@^EoFu37wHI z`y~9hRx!y%LWj?lbi|-2APA%&Z)pFsKs*l+{l8Oo*_9Q znK~iZozFL^BmP7C4fXGNx&XAW4Nk6(oB{hW}?K>6tVDN6^N0yeuz*o!OW9N zU&N_s=m;(`NI>|T`YpdN-{sU+c_Cov@@)oKzXl;rtIMaKzN4g_W(hftTu@ViZ=lLM zspqGS_vi2>ew$_ck11V!k$l9(qXT5Y#9M-F-4@lm00o93V+X&Z0UX(-N|(-Mj@ej!R0ciMw+2A(`1lxl5`Ew~x2TuB+8TsFHZ-4x(w3 zLhkj?!7~)v61o?|z|B}l!T`A}ke zgLQGu*y{)ayk9HBH)dvo)E{Evys9&`2b$)YS>LQZ0P;eFp3|cRgz0Bm-&?!tXYcW1 zN3-fWBS2R(;+$iyf<3`^aO~Pv#;(R9pofXBgYDuR`{SvD=JnGfSrc0zye1#%^}b;H zb>(Tn7jRX9!Nxy&@$YQEW*9!)Sg^W(o?2L}` z_A57VCN&wpR`Hh&s8F@+-@OeOFL$e?r_Gq}o-ia2?3}oUuKO@;iUfrsfRdmvXPY1a zPbZ*@U$qm^sR!W7UTZw<7sq|rI@>=~cDTkDRkt#Qep~t#Xd-ZDB-h@ul|*583^5c> zE8f2$QPW1@+E2EsJ|j|Z#)Ub#0i*N!^x`{R=FW^HkR)DMo%(eY$|>o2`6RaOFT~eT zO!wA(&(ps>w_%UGLD#k3ZaA=RWp8Yzm)E?&N{=EBX?Es499~KaSZ@lcOixDCz86wk5<84B$4gugSd2to3wwJ3uzkK^;&&h6h`M@CLZynp zz#*ZoovkEk!E&l2_A?>?UnZ-Z54(dqjxN@w1Gpn+r5nB;AZjyzy4I2hZQGg|S~MSy4Qvm8<@lFe>137`ji6%4W>?!(P@1C%lK!dJn6 zQQ>*U!?l}TyLtr^vBH~&0x9-WFI!9i#Zfv|3WgUJHcrxt64bzG>c~?GjJ|5Cu%*rS zXUUc|YVczb?t#=Le=RA@s#(F+C%EcF#plgIh#7;i!RTc}jx3qomF$oi05u;;d4b2G zWy@LZrHrjG{C(K0F5;Z>wF@-YBCkBRK7IFv_|2l8O?ZaS-N6Rx5I7UNe^^*cNCQ6? zKVQjIzL$jGDB5`G{(ZKK+3dL&L*fj)3{e>}MOy{NCd_+lh%F(VaNOB28VP}$p;ao% zo^Cbsw6Cpz!pIZevQWa7a7;FW8~j3b&lr5CDv`rF|FKtb?StV0+{Ff!c;`>HC|`>S zx_*#8-kZnw7E~e0mvM2RV4+nn#fe=bf8@Cx!Z%XBWYxwK83#J~1@Y?cgcXA@Is-q_ z1LBH-4eaXVdp>(X237F0tP)@_$U*2In%$M!jK_ak-I^zGX>7E#*2ofJIo8?8sPI&T zhZ~SAeIoMO>8+!eZChH+tgOCgkXlMS7oS~gUGyKd$yxQoz013{I14W-Gr;qp?b1FR zO@wR1P&b?>3(B1vt`8|T9w@S48Y&=-5}Q7C)bHo z51ukPn(?nEq5-VDILqY)W+iI(6%(RgnP1e05{OKG2|DBTa^nw67W&a3t}#1R@U5I@ z3r#i_&Z#Cy3r-qaIVVNssUd)~JdqrVEB;!#zYMNg3pRws!0Kx1ya+!Tl5~e!@4L$3 zin-MaqB)|JFS}HxU1ZH2$v|Wv6bod~wYXe3Qmd|XzmZ+P(jG6rUe;dGA?Logsz&6x z7iN;c?Jgmi70CS*eDcZDiOq?^`s1Qn}P3;eX^+Xbe1a#2oaoE8JdMZ^O?V3u+zwW|Fyz?u7JVBY7ay0b&6aX z?jrW0A9=gg?h4|Qt;4k+Y|pm6=YA=ROCsZ2P>N`=I{=Rq|x9x?Z%PVLfB-RLOg)^4rzQnpm)5nF#;?dvV60~uPy-G>Z`72;JKRx z`=&Yz_<`c72=SPC=sMLXhIt=5g3voSS}JHFKC%&JMnO@Q$=Td@G9>XPk{aE{ID)7- zI0s`x8$zcOs^xIb-C>pKsM6@+(AofHb$-J+@Vi$d1F2TW}0d)s@PLQO;rM~2EpBa7x< z+w3E$V=E_VoeM9Iv6`)Jzu%G6bhO)Gc;n75dGM@i$ohFp@N-`esb-$5T|gA&#C8o4 z7B;TV;xfm{3jXe3*ffSrTUN=97oZCfh8GBa{mOiFaHWu3*_ z$_cqjt5k1$_2lr&=gPkis>!*?SL`Fsc=mAMPxt-wqE*zucRgSI7yxx8M%q$z$WBfa z@_5~Vm+KXFz51p0sGz9#RF zOZ%CF>@7NS4l=$TGT<69I*dzh8?dI%pgAORu}mcE{I3Ot+0M_@(-)xVubv8$~;Xn2Y5Yh*!zqrFtiIljW`~p{O!5>`XM*RXYj$ej}Dt zH3dfQoMps$aZ(TQpM3)$s!KXzj)aJt@3TPpc1CT=UV`hn%4LusP7UtOcWbtXS)NsK zk1;ib%1_#k972Kv$PewW+cxXyqnTO@1s_Gz%s_*#8lEN zyv%Ek1Dq+3v-M`5R=&OPVEf6x`TSB?h{`4MKv~8#-@=guRsMaWc+}#j@-nR>j!!Aj zsk$(MeB7X~z?9&RDRk}ci4TLKqQHVj+!;m(aoDhU_wePtn4mZm1!tuxqwX8c)%IoJ^w>8&gT9T9T=jHj;7#J-Wot!0Ww z)X+@DTmh`y%ryiq31|MmzQG|VD~R>l498>npOkOaoomcE%y+C1&#@E7#$lH0S|DM! z8s2rrv(FVN&XbZ|6?FFmFuJ#sn2|oQA%^GVvNREu4GfL`6AJI)9Ea;6J_0`K;yf3! zyn>X`l@VO$GkWzT1;6F~8tVxpy4PvEynrI9wZF34mL~0^S=iYVfQ2}FV*fIrV7|>{ zBc9T4Kng=d%v+g#?;WzyPi3A09?0bQ>xL81;3J^Z$%Ch7CeD6az5@u)7sR#-(CYs` zpK$^TR62XmToXR=(;eu2a-tgu?0oC{Tyb(m3}~WqVwUSrVj~;< zfWr!IGE)BgU$)yOWK&cN%2zmnk)0p{g|{mLvOxElS<)#1kHEZNP66LfjtVSE&fU0s z8Mp>~_E}BR_gAz*TV)z=ACj(pLEKb534A}{Xg;rPy_IwRg2BIUjjdvyjuplJ(3`sWuk3G#!`u>ev8O!(@cr(&)UjgSVApdeI(Lg-^NgCUK2J^H3&qwKq ze}VQ7Ao-@ZN8-h-@~GdBy_foMt}=%-z!UyCASNf$yMI9x*gwL1j&cQaF;6^RWnSVq z0Zibx=krv*#|h87rD{{jbqR2}fa~`ExgIX@rPm#F6Bs3t>Q&Bvp34AvWYOS&JzsB8 zQhko`T3?AvPi%He%Zra)6Ei2a=z!%I;Q#Y>m}fMqx7kG2O(%_kU$c4YxA zU2{I?o0Gi(5@AYA#~+mNO3Z3k3ygE_VbZYOL|JXN=(p=x6|>)f1RcOd6R z2_`Tw_3xS0-iVi|FtlE!O8I>2K^8)Ppt4#N?Om&?ND#P=y>F0k@4D&6scZ|7)llf! zLi4XOaQ@J-t#BtuTeaEL{<=3*^yh;EHE`7jlpPr`opf@4Bm+`;n%&M3^=91G2~<2j zuZn|-ed21px6@}}$t)=>c`Fp28TO&f7g&AQP#9k-|IyEoUF zaI*3W4xW4tk^DelJuCbUr0luuoH9zU&TJV)v0wsL`VDx!At2uU8Y)cD zEqrR;8f{!^UBMK~+$DRxZte?itt*p*|7)?FVBvKMs`Q$8Q$+_~7}u4&_gRXB3K3R~ zXivADgemQ}k>pQm)3i9`9eBH6A~UqJIwW7}YC#D2nxxM2cQ(p1!`R)&pArl$H(*11 zzMeW(( zV5!i<6$_VBG3FHw7ei;c4(?$#Fw&W+2?E+bXlTNfyPjsT)+?hIxC$>IZ;a$A5)@>m zIVvN}RjAI9Z(jy3;_J>JGxV)W<0hhv&O=mB>}U~T;1a&dWv2PXk2pThF`ni5d~C<- z1|z{7cHu>5-P){}0V+TXihiz=IYokRC!l%tr*oru-_1Mg7sVJW1nJ8oEY1}D;OGaH zj}PlF&t=^20}JOP>kY`E~gGo zhka;E*=y7+lXmmDFC=6?NPQCnI=w1i)%|Ym5>Gs$I05#FoLtEQOzzEzjDE;wB)zF^ zD3I{l$<;<7={7=wwis5DnF(pfy2I&(9wgs)b#qRwLvx2xo9I;-AT8irfSGU=`lIu- zo6l+@k@Go#P;=jh*g>Xf$!PD>41h!(QEOozl3Ec~(%28n(GnN8%Bieai33f1*$8_# z_hLTUqNtFHjC&mD#61jXQO?Q$ET@z}#{5`rE;S`BG+PFl0dtv3R?>>+XgDh-R z13ItQ_ekF=u4-8pnynjPxIP~;O6NZySn7HQ?O7r8atMl&2ED?an*E1fR~P`*)m1)4 zqVubWMG-mI-#gA+q{*Ey_c19oMBaFxEQGg3!~EJB#Ig~kZ97JzsW|q<&~x60-@CuP zXkj>i`Dv!Mn=S2pqE#fFL85%tZHDxwny}0BTpC+Q4JfJw%L{ZBnxEgc3S7>&Kw6|6 zPmcJ%CTBPDT9&sl#M^n|SvLrQ&v6Qx+I+lJ+Rt|HvJUHT56H|;Bqu3NFoXA&M817j z46S=v^gZp!>(Vc!BISgOsu3{>6qstJC>ly|EPUYp)dbJ z%LBb2ia?HYjbPDKMAY^>R&6(DebdG$T=CG8k+sp%-c}QCcg++Q$6m6O&RO_wwED9mI!8Ti`;i~ z$qBOz;Z0PgMFH8EL8DGkQ9gnRuZBzF0dOxiq9vJ(y>AFu@53+xSDMJPltoj#zUfIN zwPHh6k*qRYgm9c@dSF=^q8+z&d6CR!cIl>wvC$<3j>510P?SDNu7QmQj0f;>_5khd zgr}}H<*9=)$4pgf4#XpVmWvhu8*9uGa)$gE8&@bHjHG|t{n*Xl@JhDL23-y%` zB+jNi&1FmM6R9+DxWP5D;@o(eox6KmOSm6AUh6Ioj_ttFsCHQd)9FN_^p_M~7=R(= zB)JCk9q`o+5`OV0!=fUp)j$;03UUH57F1F>Du{pA4CvX4?q^T&cz}zF<@@?o3(ecu z_?W{Eyn}C#*$=e6tl6;*;7qG`hI7N9rVUuliJbr;eOm+nQIXqHxgR3d7mBry;#qA( z&!ttbO;~);OK2*r+R+E5qjQ$4#11T&2rjA4is@ZzkUL11a)IXck;ECWufU*Q;i_(( z&V>c$l{gaIJTtiH>X~bql3plJTxwFWJH6d&Vrk}UY3uE5>n&82$kmT&YOC8AgwMjC zmNTKh)?LRuxIB(+bMwlGeqU{f%qS8zhJwLf4xKh&g@BuFfnqsuKDVSX17}Lxm zU0SO)hRKQ^zq18VzaAbM#>pwvjL0p|Tx^qR6S8^(jJoEYiLN2xbImf{Fm-P?R!z!} zHBqvKear27^?~E}3CGXu|8?}dr`bya^XL!|xl0XwTo@l7i!zKn!qY5kctQ@N{>CY_ z#Ja~-Fml$F)iNb|+aw4aYMVl%`|fV_8J*N{eY zQ%)V=g~S{OD$h79jZXZ}O!QI7gv`>2XVKTXbvMqRT-bY~U*OSp#>md$UZ6&ueKl;d4 z8#C~Y4bGS2zEJf3uHk3e3l){i z!n;YQ{+5>$$;CKZn~H+EkzK_V9&`Q9lh@yxhR8HjX8qY_-)1rqu9v7C3A;aI6%)ze zENvGmZFtz(%FoOwUz-4~y2*4XC*`s8yuBFOm`adcp z_~Z@Jb<#hPuny4eF_g5G|AuonfB*a&FC{RC+P<^w$H?m$E~u;RO2% zKu_-LPnR<7s~LBaRZiJgxWx%WbvYBMgRS5Xc`iJoRYM12Tx3!-#i>8U^Gj}Yeg-#M zQaDaGGC-8M6K6DhtLrrtwTu6HoYC2Dv)Krjvql{@@p$L zkGGS3(xT!;ms{0g&mrWslE`HIwzp{Fj0|~Y8Zx~(9S7Bk=42>77Y)69`SSW-8CG)5 zPsnG;8cU5;P9#1*WnF7@qSb-Uiei(3{r0qS=Z(zehk{wdPY$TGx&$C&Vi3sLWo5&u zjPS?GRai*RmA9tOz0H%9e=Cv`L|Eg=XxK;_k6WXW@4>*cqw5t%;glv@)Oq*D_75{r z#p4m)82|CM@Co7GPk`M4FO=q9>J92?dKKjmpgbShA-I*YzuA{4a{32b4M>W@QOd*` zriaqDJ(cm*qRr%%y0j7ms5BngQAbxSl54$HV?Cp)0TR;jkN`z3OCR+A5F)}__k87a ztc2EtbgX%!9c-QhGWz${g2^Bt0^rC-%q)em@=h(~CuSYrp49OObC@`-+I}YB2uQ^j zv~RYtplj5Lx*yjZKk$}Sz9@f`&zQsqpPWum)S4c`yF`GlDhplO3DbtN;Zcv80eq1t zwAWywg@(ttycfOqs(&O-GbY3OHpkBQI)4GW?U$zN20_H< z``Sk$Mq%5KqnPFBWEP$%8SN<7sDMmNtDl)^bp$ezpq8Sz0B(M8qvS%)KmS{eh z6NkhLrXWncqHTOypIbBQL@cyUd^tHb4qV)i`GU|SglKCd08ZrPi+Aci04KX?vuq_k zMbhzFptFvpJ~YCl!7>pd68^9AO9EqTQ1q$SvS0P%A&F}TtTu|IBKMk z7PJNMjU=Nuz5};wYdMk9|p&;6q=#_N_&W|LKuXX=J+AT~UWt1hUqd zl?LD;dMG^&kUnnIXJFps^m?qc6)Wp5XtCGhDh!zRKgMa63&4^%qm6#}zG+NURhj5o zXh7)oPy!bn!U9MY@0uFnPjPJAYNHSE0tJ^`+qE;h)ejP?7SoFj)s>eW?fn!z-|0hu zZ`Sb_AktYn10uepyY_VV$o8k=)KMY;ZqMzwVd_s8Uz??Y<9eHKa|aHDG2HJ-Xy$Jh zctT{C!oCw|^hH0;iyOrMObPni?*t&OA#!6cUZEe0zCUI3Y>CBvCy>@5ScJe4S)dX5lD0RXtt(!!2P$0009h!)^|Ku0Gm-LYS@x zB)?yOjYCX?tH@Ly!15^$o{su+Qx9Uqa#gPh&jqMj5w#B{2#ek7;6zJ}d)$3w*$91a z!;GWyZ<@PLt#PwoNeB}N28_>bWfpci10}J);M1`|Jb|>Z{l7y?5i23Ac6)@JTWt5B zs9T<1+@U!8Ty&;%&fUh1=$UD0f^QTZn>yM6I!xNDF}( zwo=1<0|m}6_btlF*k?*Hpf%aZ5B*==h(L@8m*R7m97}g^21N$8!QUWB%JCP{qUZlN zOhj@)XwTUF#$%G3Bs_LMveFe63E;4&1}YDV+T3|YVrg;jc8 zFUz{)8&TIw9)=o2*2_L4mlJzHmIF9j(J@PR6`l-yP~@(hA7DZ%UjFSS5-y(A1X5^5z^s;Y79O0R9XZTyHnW3lkalI_1G2tj@o4q7oZl}a&;^6j<6zald8 zVxMM-@shzuwexKrx=wJsKU1OCZ>QnS>1B{R^9U1G~NTru^RXE zq3Sf3+TVm)R9|Pp(|;IZIy%)`yaodp2ekRKJL1SI#s>OEikz%4%AQuWE>_m7_S|Et z=C0-s#nT%b^S)meFy9L8XlQuB(!dz#YU0TBbGr8QpI4oQ6U4ss3L6ZJIry+_Q}c1n zoVX~>+w=xcay)+n8%L-@^FNra)P#@mn}GHM=8A+A0Frs12y02JT>=80oRtk=5@R+B za7BMc{Qm)aIDP*w2;w&{biB8Z{iCF&l|Zv6u#9Z%IC90UYq2tZ((gas$T;H3n((Vahh-#=$w^2?g|608wM zx%y?Bati>3fBSxqz=mTa&-4etWBvOd{?Jm76#lF20Z1#piE_ucPCR*Sgf7#xm_&w7 z%PLqk{^-GJ+w-@w^_$72VV0L1SC1u=nmj8>)kLrzehOKLX)A?ogK#uoCQ08se-Jm|r ztd1M{iWXWDQHRyqo4KpkF9P8%JSjg%V+-{L$9Dr56csdB`th*^JO<(Vj->c#FdQ)b z32Q#gj0y$&sWSDJYyW;M{5%*K(ux!;T!WU?jq@XP=%xS5M${dwo=^LJp{|W;-&#Vmg!npEkTcGODI_ zpN>0|jjEWSP*h}+w)wq+`__A%-Ui92narV@Xqhh|_SV+yUUon4&BKcea?=eQc+QY3 zD(B0HA+MC)W+2#s4HI#;VgKd5{`x=T6q)t5PUtV3vf1#3yJ!g8+Gby^&Nl%I%hzVe190*Y3F)4^Z*yVILiUAfH9Qul=)r$$k0^LP(H$~pZUH0DB z#aO9+Q6L>>g(wfpStH#5=IggG&|eI2t|#jf1}1}u*+Bn;{9)ug)w5_YPEp2qo|QnB zwm1)ev|oCkI;VU=hXwZ-nW5FWH32+X99_24)waRm<*dz?&~`nzt#bhbR<{w7KvoLGPe=>$*dAo`yqH^DCTa5VR1O z^!LBi7I5fK6s?g*Ef6>ap4s@S?MLrgUELfI%FqMccm=S;&4SwiG5a2;KJkxy$08DS z)BgPzbu<37pw5%_aWFsv>uW9&;KNY$4IrH`KQ$VqT_9kL3K>aoMKCbPjPX4I60Y$D z%`^So0Rt9`Trk+Vf9>~+=QP82`>$01NtWuTfbOO?6%CUlMuc8d(7;sdR~F}T#w@(e zzIfH#!B|G{w8hhyhxfo;0aO>1q?h0tpkRZM3_MS#NDheINUO9}!OpP#Q#&{CaFm#g z(OhRxC~1=Q-nU-+=XyeJ0Rh82+JZFCc=L*Fa>%RxAecIWAsP=MaSIHQZ-!g{$KJ4qic4n!)EowvmN6-it&ZaZhApo5Dciv42TWw zdO-8W_M8sk>NYlalLDtwRgaz4mC9Lw=*UoMnz)e39#UJFe)&S9 z|7vDJ-0J`?PuAMsJWN93e&BqrZf9#~+l2tG4o?T2>P>BpL?Chsz0ajGqM4~Z_ny_$ ztAR}CCPmq`WJ2B_9qYK>C?eqIch7J6VEOD-6{@j`OjWiRjlZQ4`zkl%IE&BF$Of2; zAYghvYuxY`oB>FQ`u3*%_Wtdu{%w0x;2_s4hAnkk(L7ubIYyA4i>=@N{Bijo)y(&O za!M&*BJvOdZpw0xR&qrn%hx>}b|>VL-myhpmTfE45AFiC zx1}j*e$GP)J?+IWi!z>i-=leBT3%6;lEq_m1&~=_gN{BxT6_lzsLQ#7UVBtER!wIt zlyhz)-(zRhr;P29lP06EG}2pH1ii?3XZiCtTnVYYKrkoK+)mgY4OH(RdX`!V~S zp^!4~>65I#&350(=$G{na;&z++0m6zAb66>^mf9Ro%ahOYdnF;I!r??x~1J-3qhv% z3uJU<8$`8va3Bco_&y8=$hTw&L<6}fJtyGzF+@esIBK68Zg&fW(zf!qY_h_Ef>q$r z-fd>e;IjAWIV~-4P%xl52 zU*1>oI9lfMqX$EZk7Oq57$;iAq+8OLt9$UPli$C!H3m@B+5KFuUp};Zu!<9&tsAD7 zRM{T@-jDIq!L{TgUK+AvLgJ_^l=g3+!ld)R0+lSLe*=}S6+~DIFhtpgsiN;|#CKkG zbX&E1T|!qmuIBZEfnK7QGr67J7?<57lxNJ=WeUbqBl?##u<{A7Gk_L_k;Vsc9{WSr zEuu<2ZY3gr&`ZWk6^u3{N{}U=8OSS3>GwlIw~}8MjjQZwul;tM2q&X!$Eyw<3H;yd zKJKJxU43i1unsy*AdNz!7vxjYx`~Co)zwm1q#TSQYES0?som&1S8sY2xDy{PHTM1n;)-#SHF~u^I*YwoT4WK`-#@-RK8t3e;l6Z z2I+`=>E$!1fD`wxjK`VVLRRby1CbI_9+E}{K4GfV%dt@z+i#vh425I7VN8&=>Hcq zhiUEsQ821;so|fSn-^`cZUqJEOME+d zIMnfNzxvw(xb{=B{ye49{S}DBN^KLoh`}BIzEgd95Z4>Uiw$K=R z*jmvK%JGn$k}Q;~mw7M9yHo{|_{W!1jkhiEYI4(K-koeV4*E>f_d=kjtn@Cx1 zKKvA{le|lhY4)6Xja|xyiMcPiLLfu-X0N$Y;tqwnl@+5T^2rW=@^ty(qS#kenk8Pp zQ_>Lys&j~uDfd-=dQOJ+`4pnIG>*E{-6eHmO+~iytg_w4VTFw?Rw{XxM^kU+u>!rn zREYOQ(kgn;7#k_l-(uUM7AjpUXF@RhmNl10H6JaI9km{$&MemD)vD#IW>vnUc$dsU zgn2Xw7Hh>?2qm5`I6#{CWUmZ6`W@9z(=dVr>uJNp9Xj#$5Kql{DZg2eN9B;Nob}7bjTI9@`R36fUsZRvLuF%3 zNgYzNhB?9G-VBEf1}E6hLp4@-bPp-Iy`FBHaO0EbAQpSzargw{JQj{I?H#R`KX`5Y zrd4`f-8iLD&_ad&EbdZ_3*kr5+ld#1Eoh$3a7EPMR5)h2u&B$ZY+Bgg*4^br`J5xo z>=V>)7xNb`55U=~l~P3?p}wi8r^0$2ZW+A5Md6_OWkUK-ee+60%4o_vGb|=EZn=e$ zlOIxX*X^=HL^Tg(a}Y^kj&r3qZ_*YdWR4(O4v#J&HH>QwofXmY#9le%s&{@$ z;@%JW*$kHf`8h@2WV?n}#wv(H71)>NbIk$jmY>Cx0=0O^w2_|cd`Pd|PC=)f-@m({ zpt*!944T)v2`zLl`Z9bnBa6^-;BdGQZReY{pf!p0cG%?){DnOM%djGV32uFI8t*s{ z&V8N(^4kn3Q|^A8Re6rWNUIFh8F`MP;hu^te_L!|S2N3!#8GbTtu$mK4)R8U`?Ex6ve|OvE@BWqkiplQKG<>!;Dl? zKp?crfFe*kN&y<=vl$k$Ikc;kQ(@iAqmK6xT`8`q(5|y1`p7(8Itu5}oohcmR_MR6)%eqExzd|kH}jT9#*)O5T*)>R1*i)K2R!rxwiUu$IRbiMiNu2P z4bX0FDp!$sl1OeX(MU)Y(sN!EAGsWZRq8^O&F?o<5jL7QhEY;$srTjCp@i1iJzI_} z+>2!N=WOE2(5Rm#yxRreD4C#GXV4j-y_Jm2o`c8ynh0z)E4}L_2L)Cs2H%2(R~vS` zD?@qMj{Zac-Rilx!UU$U=8Sy*j_U`$io^Eoc6uYtgORHB(o`-F*uVO8YKvr2d^y=xQ{S+F^NZ zq)La|2d}$9ytJbpE%$y6w7bi4mYx3^g&`Ijsy2)xY@Ne?|HS(JD#CA8j%_}ip*2UY zkP_7y?5iIl=R%RJwLT{uBp5?*G_HLAX{XlU_T^`bl2ALSf~e^VvbVW@XR@v($ZHFg zv71|FXLB$VX~!*A_GR1iV<&ap2f;Du!}%RgG_4PT{4b@A6pQhlvm{dQSHw*ktk)0f zooWCK%)T|$&dEesoypnrVMGC2V570t228i!a3|q&{$1Hq@exZqD-90I>xcS|m z#-Hb?)On`IIG*q1mb9l+-SCMoB#UF^&WZgV@RvpM@)(8IhIUmxA}~tACS)I5T@avg zUoc+}EcomRpBRO&WNxR*?dZ#*^*Pgs7PVeOv4xh6Z8ut8wYhQslql!2jqbI>;8^@& zcgsN%eKpp1rjrgh0DB*4`cj5Z3n@6da+1(eCg8U@zm%DmH(pg;UCm5BkX5lPyZejN zCApw00**T1je?_hxv9G>4_SD)##Yq3M*Q44kK$oK>(kOqgmj^?Z~`YsNZiSs0g%e> z?(MK1>ge0q_f#sS^|oquA*+mbnQ~y{p#8Yd6p;g7+iJ@~gg%~`pDJgpbC9ZaFBG9E z*on+dyJg!A>gf6S0ZUuR`Jk?R90*8=^Y@7Tv|S3K@(&8F^+GJ+kRv&tpUYg@o^16& zTWp`3j=^3G=+8%l)ae+5AyfKsQeIrkmhP3Kb$(--497s@ck~s?JIAjIoxykssl>em z#vb*J*>_Rj1IWOQM)A;JuT%3$(@jx!*;;;QesZen%1NK%XXhJ%_sZA2WGk57NV9~k zo=FfXFmF=~Y`o?TW)IGkA~RB~sXnqV%1s3T?3NC)t9$odxBk7;9L+of%I79ID3-?t z=Hqp(WMYwFa|Vf{+Dv78>E1=;GQ+hGijCJO&e3pJiqN22q4ZrJ($^0+7b*uEw!gVC z({wI5Mkg)!t%UMys1!(Y^hp)1xw@tl9?ii)hy}N5Z|6PU9Bs(a-g4dYeDd0U@t$+q zAe$@3eH8t$e@UT?escK+%B*p!ArRF4$PZ< zCO(a*80%2RVKgX`+qD2I%C+$|-z$!&z3pkSlS|QAJ%;UN!{WDWH#)xJB1S}gHurrs z*pehT;veGkM0>Ka#hfoM54G{g2LVy(qIQRm4LY&`{k|m>ZO@2y32{R z_va0)E2?sF!?0Zzgy71$hZ&pq>W83_qwX<3m6-_I4+q~vN~I=Odcj@OlA5pwewd7_ zGmDbdST!yz7VEx@i)KvYTx?G7EvP;+ISM{kP;ClAfX8Yf1dKbrS9leSws}RS#Ov*_ ziEPWj`(KkXYAVaFB{CW1csgy)G?DpzI$vOZ4t99ZI8~7&S<3l)Z57|0Jn_Pr5r`_! zCF)^%v@)*%c!U5jp}M!fhwh@|io+RP1#P0_AMFOZ=VtlL`l+!(cc~@W4rKPAdEjlI zGI*WmxxE`!m-lq!(SkoHcVk9@BZR#enmgwU-0=>^D&f8f8wz{8pJ?Fu%4NphlDcle zTT2^6BH+VrC>??zGW##JkQVbuYN%alZ>Y}dwuM3PuGMn1w{UQmF;dmQ<7hpj4ST7h zBX0imZ-har3j!LGZ(V}D>!c5j4V>0R1!>I*L$;O_MDkknl zMT3j}l8vS~9xK0EkdGV={{YY_q7zPUli*~+1Rgmlb4J; z-^1u&RH{hws~*9#?x^4&i}Nc>ZkFpwhVV-6=^W5&9WGjR+nDAE98FmPf?lUl2@GC7 zNIrzKUq0NMD*=_Q=Yh!E*yY7{sSCaN zKHinxco?;1iBV7EZehlmjbVs3deCk}GdSRSVF8b?kyr#dV{Z^K-ebPIjE@N)) zjlspTb%~PG(ejp4{%+L=@n9p##G~-Da}O$t3DDIE3>*}F*_x=7&(D?<8xXLYx9+8* z(EDbo({`-Q;s0UmE!?79zo=pCKtx(vrMtV7ldfi425 zYGAP|1j4#lchsBf7cOJULat!LNicf|+y80oyD2h~Kl?o8IqYn^cE^m*zUN`r>a*US zc=uu@D}gwd`it2L?^Q7!hg}UN0ayKMyVYKfS?8Iu>(PGkJuChr*C?kUU1AOF-%Xc4 zx-tM&qtYrgVKM7*zO^+4T_%~0mUMD*I_S(}5N8|5dM-)J$HzC=*+aAhT-7+C zv(&TZP(Ao?#(mq$C*$X%P^JM3~v0hSJ8m|>0XsuwFGDe?s`ScFbP4c zJ|Cwes&?2^DT^EQ_bKfNjByo`MQNLuD=Z<1I16-`JwVY>+UKR!vN!;>n6-L6_ib)+ zWjGw&ngWtbC;w@8YuPQK!QP5;z#*1n$3+LhTQuwjg_Gj_`q#;0A$RJDA@a=OaWQDJ zBnxeU#+oevW4`Xzxq1_Fu}tDgh2z^i;09ci3MfE6*Td#{z6I@R2hY@yC4-?;_#uJD z9>+6Ip7NL_s=znX@w^(Fm<9#`ZC%ut#R~~6q?roGR1*TxrN53jPj#Sjr7Vqd=^uVn z$caz2)gr9!@BFDtqNVqJ0y}k}J&;B^(bgR=luZtioRR>37j~0%*hw)h{Lq34XX3*@ z`1l`2D5TqM-F2MhvdwP_T^2*O-nCg$RyMSGUJi>gW*~a}D^;!h^-)Z6T+iyk^;sS_ z%XX`5G3}V+1e0kty5i0jRZOU-XYkmx4Do+T1E)gCqE!EFlTxNQ$qS}8rhnY=wT*q z&%Iaifq)O$oJ7g-a7SaNuZ;8qFR?cp>e`+1YIE59?u7l_>hZTiZhnx&q<%Cfu`(z$^*^F;* zd6z0@<@_f-t`WVL_cgx(fbSY!vz6d=kM->8#W{#nmslQ0da3y$7z{fSsf=?_N81;9eW4e@NrRt*%HH+ z7X|0bolChe>eOMS)oJa^!gTYb%egBA!Inz^Q#}%w@v9%^3>VdAVbjHGA=Kii-?4;1 zYF_uteR`nB64FWdAB-M%nqpv1J0J@(K38eb-0ItgcjYZbcE{|seHnx-p3)7nhoOk1F|G@`mo$55j!<;1*6ysex~7t#3t6g)>I|AUiG4A#$ey zG#4a<^Fkj``YdYR_#1g~!{Yc~!FtohKT3BLu7u^XM$c39j=S6kcJ12D$k+Q+uixSix^k?`9h0!{uNLhu)1Wg>;~E7iElP`3|yrqEEYeHgHs0VOv{Wn zlS5l$UxkJrAQcoW`%EdOK%tVxLx3G$hYDKDi9z3o@+^QNRM}Noz><;Ec5g7JeVY+K zB^s7@QXEIO{-q4&?7m!|YFq4ccRNelJI&vK%WByqlEy*@tX|L4`(w>bpG%#~g^QbL zFt-}LoQ+D~t}7N*x{HoJ6!qMmKcds@Cyp^iJUH07SE5oWM3f3wZ&UoXdGmXV&P9xZ zavR@!r9dtUx7y)iV#Qf4#S6#i$W|#QgAG>>7T;@&=XLMtdjo>Jt1y}tTz}%|F-8UK zca)i9X~9nBUN}cTcq{-QrNGYF9x%fB@=Vdbjs=QN3Svbs%0$ z^^UaHR6kNpKge}UfOL1w*aTY))o_4~^)9@?eW6;+zQu+10qimo(_%jTw+QWM? zi`%{%Ddh_MOz^cPAM~hG|8{&uUhe_W7(2Pvf4akF+Dcb@&`RQZXyE(g?%5HN&VrP) z|kF_g8|oHwp%-jf$?NpI6h9zWPGoGCD@&k z!zSLJsz5qR1Zk=tw6Y_Ud4R{4TllL;r|cD`Y~TihfIgU7zvx(es^B=Za(+30;3rwq zPg&vHZsRQmiNvo58%gvabD{B6?duGcU-zS}jC^EFbot8v`wCvrVWCT3i+P1-+KtH4 zfkTj~mJ`=;k}$c^-+-K9l~UZU-r^`XeKPJ*$=+AzEEdKZ1->%9YWvKU7hfU}Ctuo^ zts%{UJ9cccOzPb&xB)vOHS)>(MrG%1i=go87he_@zNIG$EgiVJe~@$?dC*Fc2>&MV z;xK1DDzLmXxMkehIfGlazW~ns64=kw$8HjN5|rC06Tks?@e;|^Vwxn1nPTCrh@%4< zwz$Y*3{t0B+ktUjWu1$8VbjH3xi#^U)h!t(TsEjZq@h>=as{MZJP@?b`87v2 zCn?ITOaeZ`pM3}G>+|1$*KJY7hW6t!YuwSz6XdZ`ws@Yb71H>NfBa`dybz(X(fZYG zN#~k-)NOZdB+|Y=9zJLT8q>QLc3I>~b?*N@e(J_XvTk8qwEa^stFc!q+jb-}C9*-B z<%u8@lctl0MR7l`7`Uz`bIzlV9#Cu3*(G)pt{$az;aam{VGW~m=-1LLT6s}v0Lva4 z>QUUq^5R2wxOXSmS!2C0Y{a5s2F4xr!HMGeQ^36E;ZBGr@Z?1|;j%4CoMP{WQcIax zU(_3^xQvy=>6{sy);H=;xs(S$`v%QEZvoQi)_@lsncuXFAI7QB z5N+vBv8NyGdLAva6t2^`Lmes{lUC;xBl^@0hP+H;((nA&N+VCS=<{gJ}yA`)AIhP7?Fx6PZpi3uLeQKhTbK(q0 zM>z5b(3Sj6w0s-QFF3$;YiXJ7riFpm$s%nPZ-ra@CPGM!W2Hng#wImh=cH zPqG`D4t+*XS3IoNz{r^MrEMQT+wwkolv$z_6Wcbd+EZ zR+u3pf7{_`B0yCoog`KVOBWm2M~`!)L-o%fn_BNq(v<;HfBr*KVi7RY1qnIQj~!+p zfpBYr(6GH+zX?46;U~Wuk4Vk*RJkt^>YHiTjR;ILO%)6z$c&^y-~m{^gcLn~k6f zpNUQE*bR+ELTcy+#;_~CS=f2?)))ZPQq^G&!4woKM`XkNieQ)YKtyjh&l#0>ARA2i zKoj0SE_E@}C=UGm#JBkOPc?=>Jv4qUhvXEMe!#^xqe4sPnJmri5EBi?+M3KK7Q59d zm!u_zI7R!`bw!o2j=@XwpiB8Y{xt*-1=?uo`u;Hr^|eC4u%j2S_GwBeg3=2@RXgjs z;IU@q554wg01l638$HxmD-57l3UwrPp?A}SkGz+#jsrr=(2?8UYe<>0&FTxuUAW}n-ME3v#SY~=>S!m+=1c7+324e zZt^DggSvcjLH3J!DK%5`zvjH=JYU&_djds8RNe6`gRHDf4+WeETcT9RKMKpsR+8r( z<(3t#nDOe$A~-al!i%Qa%KWYfsg0cZ-i(=r0VgXfk+hL*MHg1I7~Dvn*W-jAH?Upo znN$F+PAi}@`S7GwlNm5*;EI{*q~e78`x1^_R`R1k)+)*ay#2-H$vTs#!Dvz z+>a=q1c)4O9!6WV^d4zk)5k`J^1JZSQkej>tZ|JqrIJCnM~KnZi!YUXxF@8#{ zwwlapKpqbNi(<_a-(x#oZ`><148R`+7ueza0G9~e76C1Wwn*@2P8l7DE)yiKgsVus zD0{H-Tr%F+iee*cpfguWl!D?RHI-oAalL|B1=5 zgicFG*>$A5<8um`k-Gqwp)9;hK@s47bw-{0kLG$C?Sv%OjzLz1gX5Kp<#VN@ScomX zN=UY3C+9c5l=`%8+#l?Lm_B}X&HpL(@Q9oIAwh#Q{PfnqgzdM>%)%4lmmhEI3pYnV zOgM&<>IkT9j%0UwCw?`y$Q;#aXC*El>n}EDu?YDmX?j_`=t~S`jepR00y6Cyw{h6k z-pcF@wyTJ-fDa&~ic;}cy)A6@%B%Z&8>?sBN+!hD%V}8ZBl$5RP31Dvla|BcB#J8& zj`&!KfcM>%H*BN{pHPF|Olr!nJ4YM^Sgi)245$U2v~k!DPQ!9k;e7ot1+AIc4(b!^ z?cN_!`#JGtDq;2$!{fS2%*p#*CK_y0by4QLmaI|rhzpSlK|RUp?=gU+#%Mnnovs1O ziK`&pjv=v8D|NTI0Us{{uH6o3C3DNmU&spC-np&&KK220g%4FlUQ?yjZbD%LVe`9R zvBL&-Ph{!(aB-~^REy?1PFnhPO#rI-3+v6JR7lnd+gxoBGA2#K$z%Haf{TZkvc!s`Dfwkg! zjPpKQTm&UUNrvK8@$Pj6uNY8%AvLFlT2b7yF%5ycI98|QnG}_lj`SLrUny}NNXBQ! zr5x?+8J!&aw~+ELFy7XXq?1UuRmt4JAPCw`(}O=PDbL$;qOl(n3~&UBV4}(*;LF+T zOM${(v@Zmra}rp66~lgB(Q`>@?-57eNK@jUB+sBKcjzg+}YAnI#u(|$J~O- zJ+g<0$RfDvgyZpTO$rcZjw~aDRy$tmbsaIREEC1az|%6-7Kq|j&4DuWOC}jg`%J7&)u|dfNJ@w z`A+{=l#&Wh>+djZyEl-J^Rqocz|%9Eh)V41v%ci*>tmZSf%g~eXE-AcRX>YZJ)!5l zz=e9fbuK7+ARhZ#kzi*$+TK_VRXre8A-dsPe$3vh@Vgm+ss9H7H$>GYaq{eW`?cE; z*_HFfS!Hi$7J3zF3Zff$OC2z-%OC;%iHi}0t(2P=R)d=noZU`Jy3SEufKkaGjy@iIx4mSPMZJzGjZ zSlr!b3jwUU2G&GX20^~~C8-@P<0ma2$29qVFaDq3;vtBbCEs~D3<~tTGzKWD1wa-( zD4_o-)q7Zdh^YQNf8bQ9UL8E4nV#^7q9@@ZIpvqMs%)T9Kpy^`oi?GYjXQs>#|=e& zdOmiIf!g!p?8xi{-&Fo|_4tbE*O{QOgOHps1JG^@RGR#5VRYeC_W#>JtA?W z+RFb1`CRunrV)blXVctr9-KJI&vMmJXu2fJr52e7p(}hCJf%Q^fyGy}V)>-i!h(0n zrkc-7F<~Mt55BJ&GlUM565dn|-IiswVnz||nG$4xD0JD(-J=+6VOk8aZdykzs7)>4R^E}P4D%-6*(GnY{|0M*+_@0CAE{zTr?q$0T#P^`DSdnW>x zCPxKa95t=VJSv=54J5cvX%&&b)s?$JQf*9K6cI?jPpx?#G@1(NY1n3Z&(8wB56I?V zKrDA=)jf$Rk}v~J#wmXm*@J&BC-aNB)Gn=uC`yK3*@Vhd8tnbdNj#J2b_)W0%inDg zL2zzO#+>6jbTx_tX;-|-U;L&n1x7GKy9e#$tNQ-SQ5DdH+`=s>BaQ?Cj$-Ju(R;s} zfaDZ_75q!G?0iBrTMxj$UoI2yuOtM)d{A)Zs!0;&w#N2`|J5p}7wQ0Sx z(}vzPmLYx+^xut95-atLlRF=JvyBUTrDdL3;?NACez@b?n;#C?d^E4?lg(~88@qJm zYX)e0ZWZdf_pJP9Z78E8`_={z{gT(p8oMjOdh10$4L`SyV@q^&2kq{g-%af-Vg{G3+AA*llOD<-j7?-^G%QP$52%S z)B2Xf8UrI(4scxjce-KS95;1l%Uo{lIZ_@{(S5OB2N46nA>ij-WX0p@D*Uq=O3l%n}3@mI5J`a zc8Iw)hV<9JMu}@gax){h3z#LDh)U)Dy^_7{H*uh}96%_iiu=5$Zn()MRy56mj!X;q zvmH?g75+T6OLtvz7bQw6*{iS8!6>4r-Q=6iy_!ip_=!_JV`eH=sU~@UrgnGzHl+q~ zdoxDcv!RP?nY!q|h^p4+caVTPJTX=cxG}pdJOAMwXzo(#X$|OxSXl{W04lBm=Y{m^y+Mf8_~EV0A~(*pPKFE$OixMYi|njw{hf+0-5)%}xRWBfDCv=oeOv z;|gb#34FZccs9zS9VN$)#3rV%&V>&&*pZ%H`#k}Qpq3lo1(*X6w$Okqaj}xLsE@XF z?c8l9OUZT5JU@~BKm^dLEGu3~9+7{@pXk!o*xNPEIg)C1;a8;G(NPI{K!7qZCH=)E z?H>gLz{j5P$WzS>6qE@#4ZKU>WXZq2*9KXVdUq>?J)z;EcUjVl^dQE#} z%B)8P8+677r&V&CbjcRI_u24mMMAro&}0;dBvEipmp_c!<=TX7CjzuTz52Z0;H##W zHKX8N9LE0@mypexOW)=>e*cHZ3KkQZUQ^*Hs@X-80=3FEpot~66bYlUN3+Tmfy=+> zt_8Egqbt5~3D{eZP$ZSXUewj8@Eh^P;H?_L$d~~yC4`%&|9yJh6EP{IkF$orbOBBc zXQ*OeS#b7rv~c%*`c7kjYkqM9#I6r3yBZBCqcA~w1aJYt>psG&?;)E8?hKuHoY+K( zr1>(**ufqmx(9${Ki)#JcYQot?jxOO0m%cPV*y^@lRA2IdmjP5U4MmDmKQ{UL82Vg z-K2y?Jt!jNZEX|)7@D_YjT$T)6e@e7^?dKVWa6Z2ataX~+!|*ML$L|Hxc&vZ1izVx zUp+l8cdV?KOir4Fg>^bq<0?zbTZ^y6Gh+vxIaM(2cLKUkx=mF+|W5?GhA z_7sq|Fh0J+#L|26@r<}F)FvSu=YZKvnpN{qExq&04>Bfmg?z1_Q;B0f#o}mEqGL1+ z=4?EzetlAjk&&f7)-9(QBB_Qxab22yb_u1<*z1@N7hetQ>r95&Z%vkJ*3{A-&AtbV z6qBnpG(n-K!H2X!svC608+H{@w9)YBlfJ2(V zMN1%~CGsdD+7YYOK}Csl`s!_e%8QEDX7SNwDo_Id^D94iZ(zTARj}CA(a;$TuM9@G63qmM4!Wqsp<4XKtU;Z% zCX~xJ0HZJ7L-fj^(FUJJJU7p4QpUC6YV|E$@QyoJ`8G>@IF<1$O{y2YLz(#eQoF%3 z^CyA5zkjrX^>nzS#RlExBOr{b7nqvrN3X@KDg zQtXwU6aeJjKr8_Fsd(4>gSPz|6H_R!+ci^bXw_vQ`!%O`DswfhEAPW-#FaTBI_g+M z73^Q@Lkd{L9-@8#oNaG^@gsaPoPhvgtzZkfJ`%XbX;V;{@G~X zpxOt>Vu+el2T+Yq_tO!%X%*C&Rx+zVp1HF1!XJ%=YIUaeiH9A{F7&M;SlLNkgQNUV zI5#>DXtD(g}ns)D~)(x8?bmUu>op_7^%GNPx(F0;gID zcP9>`mDK%V3PSeB~*pu6Mr?Q|K5AIiQ^TCxQmu&^93{NB!rWb4GV!+wl zK}$A8eG>j^r17uwd#)Dr4dLx;v}FztGvB43kJ#EYyp8U~|Dc}f;^Hd}k>o55ElA6i zDpG^(bkUe~&ME?z4F0KepnStvX2cmrbC<+$K4Mf`{j0t#hsg985Gsn9$z@i1O(9}M zPvsWE*wm>Spc>^7vG^Sow9(ITO${m4X{z4>IEr_7G$d zyc@;`Ykm5}_u7^dnNyzv8n{-7mhwwwHDX2zveq+_^{`fRUf=xvCigd|g8+Fx70=YS zO))hVN7)kHEJ^nHVpLllv5AJoa$C|by|p$*hxEdoy!Y|6C0!G^OnJ-pUr=W`>4;-~ zF>g@Rim$jbZ&$}OSkg*SfgN$K_YI#ND58psa2u;o*I|hmz4>vtQx+=DRq{d0qH|u` zZ{Y7QD}ihhH=HwQG$Tf5MzdZ`rwWtfqlg(@KfDBI^br+LEiUwT;3&}cc*GrS!upA& zv#J7cLE84WP54*A8wboXIk6$4xc|V-lYn z?ny7Z0td`>ok@Md(lToP&Gf{k%yG$715amt6qL$+aLu7MG->J!e)NmEtD9U0$mBM0 zo)^xSZdSH65Lt=KykSgGe9-Oo23`(oG$~;ISk}SA|G}nerRs#!KpHM*J>0IHcs->rDQ37e9cg;5 z7onc@2UpDvXV==F&%>swYBZSDoDCMM!lN1un6t!Gy}zn}P0i6XP8x(@!w-?F8g5Fk zeh}!`TgbdBZwzI%h~@aT8Y)G515sX6MOE-LyvQlhXX zzOz;0`gzZ#whW=!zB<48 zcY15Y1xj-Zc;)%f3=84y&hB+ORYr&R%6Y3eF%^@`F5W+1(vPG2Er-gk_>Rz1=Dk$b zpon2emdWbSh#3QgRw%H>NgJ2C>JPld04{YBQspEkUHJY5831$qz8UJ6ZrL$Ti-mX* z4J%g`@?b*Gi%^wA?6GfJHyOP<@MnsugnBlh(+}KcJ2b)QXg_t1DJDr=kFms+!lcho zVPg3NOk<#d^s|FH@P2zUu8SJ6;9uYN+Y-=e5v#qWF6UxS2cFb=%}}3naWhS?x365E z&(!Si-#q|jLXApITdwqWbthz+UW;h8f_^T%kJig##z)X%E0gX})JThqRM{g`BF(P! zZrJd@SL4=P3ZHAfPNj40QQjath@Pn2&>a;vHygz7vcaK&!+2Uw5xf~>%Gg_t@CTyE3t#YeL&OV zKc!)ODNG29%I7~ihk0B}sNaJ}Gq23FLvvtY zlK$ik4~X5QYnlh%XY`?$`o#!jLcinM4a@~3g4=EVARkDeweMiHzJFd~vX15mcqhI` z#fejyXuWILAougnZ&UTW>CBye-6dto@TW6-0;TCfvmqiP_si+ zr$yzqmb&tbr@$L|rY_ZOx7(h>R#saOyp_V1U7+XS(i*l(2us^J6iRwZNftu~BfH=< zy?-c$>mmU7c>H5gk+$1tLOONq@JB(KUis^Vo)<@b45`q;Rrl)r_`!%h6V^2+V&8HV zaF2eKz5ybOFSg&TldWbZqBB?d5PK$MW4%zp?k-^1=y{uW{}%5Cs}e-~g7+FBZg)4r zw$uL$3H+OPRbit$*+xW+14U21eYIPdeX83GuDH*pj7lQEZgn~Dyx;VI;F%s(jSc2*#Gn3{t{q1l0UTf@&**9p= zZ{u_fx_qF`XJrrp%M*$+OOF|63e%$Zd>t{;(U9CzGRn#@1fH%7!r?U-h-jr?I97TaB)E+B;O9$~ zmA`Tw2(k_*FquHr-|$Npc#hr1hLaZMGY5ez#iHx{$zb&Vg6k0jL9doE8)gg* z9Z6O5tLmF?Z0KVFCec)!klqqjXxSltA1UPqV*`S{`!)js+VLahs%Wn1#%al2BH$Qg zd8PpHX>U@dIhDjFsYWsI;O<{(ZV3ErYt_%8gv{6VHGE~u*ZLgBkJ@$z2ypN-V0ZIO zz>K;gbO$->q5 zkg0`&PmdXxw zdqZVkgZ&mAbx7^&EKek$^7{>+e1t>7ZYD9i5CS51s47s3cj9btz;P1Lq@M#m%jzfg zX@KlP&H9l1@pipB-=uco+p4lce+>&N6+bX_nulg*mo78zPPIerzr$;vma!|dT$GbnDJD#6v}%@@4u^%S)Lvz00C^Q*9j>7{Bd_?_i#uSPS9NVS zLoiAC=tD~FMYO@_c8E%(1dR>?x#C02nz)!74cZUyb>bhfe--)PpzN34&DERJky8um zct2Xt3wAyLq|%Lm>Ic=Hv6{FGH4gG6EX9M?mmzpUr~J+&zA9) zCFv+Lkw2RLffIm^j*LiLjBNRPm;Wpdu|BDWiKa7c8jEfiBN&ab4TNtKAY!iC@wK{p zWsNBn#Hu1cU62JCXUg6^D1S@q>BcO;z+n%-s7iHi>&o5m%i-6`xdB4bMsF%7Ur(pH zT$kPHaqZcX`01Ew&qC94&VYhg=amXIj59+IRMkIw#7O=JHU-)j!5;HDz7f;{h((ST zhF)Sw%Kmi2v|TbuXv!4gyxsm}YDWoQ*&0P-0JH*9S^O@(8C@J->HThZWkXPR%mwi- z`jVoUZ%0~TzvXQS0nZS(B0~dZ#VBVg9*K&}#S-h{Yquq@tfJ954|z$+t|-^-wPK@} zJzvis*a~piiDop8Q~-6Gs@VPRK0Ea+!r+I>HAKuC@9^0NAqoug_3lO^I0$QP+L<6y z3<`l{%n$u|@jr#%#5Qcpma7f}0PAZR$zn)Rih^oVSnoN%+0LWFN)i~(ezbC}5|fU~ zS%WjpA3!zP?>{^3)LRIobkz>_OSxK_o8wcRyQF6*^SIn*xWG6SEu3G#bEAWaz-8^R z+U&|Q0-~Auzga0PyHBeqxp3T~sj;KQxYv|M(&!}t83A|{rz1r&)Fg%;4qu8}RHum< z@Pk{)g3R)qGh4)6J0-_EQ>B1-(~s~&eVdR|jx+BEH3$?beZ~@{Ubf0^xR;ly`0`LJ zXT=I|)ibQNcT)d#z2LkDOFn|aND2N43L$}|z^2W`&R{I(2A(tTCFpy7$@-GrX4$&O zLzTK(U{h6jO=A&}rY+R_mrwGjM&VsGZmDlMm$1^mE(scAe^pK&EO8e6DMvzZnruR; zR-@P@tQkTGr0SCd62;*-VyfkBhq(k!brc#o&kf?e48=ygFvmhTMB)Bu3bZqG>8_8( z>RzLk#oIH;O027O>~6SSl~cxk$w&4fy;rfcAq51+zHZxSe9FI}SL}(%eKM*E@pDG5 z&1{auh7Fl#h-jYcj#bq`0DoNv@K+nwn)U->K_I>LOVy*5B=&W(&_et|581y1HIAl) z$PxN&`!h5e!3Y5hAN^}Xq1RdQgDI}d5+B!R*+a!2pz`iIFQWb~QPv6zM?r{`^ug#^ zfvgIAS3u?1=5TnE*t&>_#05RZ-O^V-V@;?3L`ny4mx-swDbv{ryd#bHn5-7&OI~eT z(W-9X9c}PA{WaS{kCuturJB+Hcs(C~hgl$>iz934Bj%y8Fks-66H!$5;9z3zp z@WPON0M+1LKd2w%Joo9hbPB-xwS~b5{^d-%2z&WjdG0~Lkus0oZWKs@lLbL5iPk6i z?rkROd`)3nC1xCY!||BQq+@DN8&fBVNO#UKyrydgmgUVZ^I66~lTzH`_xNUTGJAFW zxjv3P@{nF!Aj?0DwpS=2jAO#oUua7T%yBhdJ|1R_?0c72dQ}fZq11*7r!;KMyG7f9HulHItx5t_d$ia;NCysN&u^FWgrL~+<&k! zdxe<29wjc$g+>F$wu7MA_AkNH5vl{A&#v)nRoPCZSV)=U^vIBW11&Js8E$tn{Mhiw zKrd2T9_+tpmp^stuD2{41*gVaFPxC<<*6Y%CEkeKz+8ctUl(v0qU3ise1(?+?VIAS zMa1|2GX})}5vvXOMl*9Cz-mFBT(H)~9wnSj>Phvv9YX~6lr&HI0Ej40Xj2p%?7bv> zIV+?ZQ~)o3grQMpvbdEDe-kyCA5H!F$@1xXr!y$DNR<7Wv-e^5fd*XM1 zZ6%!sl@cvh?ap@;$DzLtE*-f(-8&Vl&zItv{|Ik7MAiKVke_hgBoDJPnTal%FBN3N zgpLR~+4xT_JU_93&{$j36skG{0PnrpzX9F?F>n~iXAZq}8BxVh)1CJlsO|*VNt0n! z)2VC}74KjoqzoD8sxXLnK$}D)ICIMkR`FO}VOTN7GF!PsH=GEt)thb9DaL6d$YzHWQV)UH_mhs7MU75k znFZzKhCfXaqe)ri7uwZ(zUy9wHRl0U+0K#^%_>~_%Nyk|W-fUDG?!p@l7D5ykk#d( zM@~L8sQfv{@V&+5=PBFDt8DdVOe?)zUH;@-9rucZhys>`c`jEut&oj&C2~)1I+zhy z*4x~6#Get?wk0RUC#u+1B+%~dS)efbgQ^v76kcB)3M}DmUO^8W4oATPVwDC}u<9DU z;N71OQeLs=M2Ip_5TI?;7nfr7H6Q5>f=k$%#EuT5kx2=zy60(^e3PcTkVUHXTWjk> zSb%7hDzjyZK5>f%n|r{rlp zP`Ylrg^uWihwo<6CtT(#pi5KCY{*NvDx~Kpsx2mc+GH|Kg<1*sq+$&+JRDoTy~qjz3(Y94nAC~Fk&*tOeao8wn6cepf-(kj z0wsL5_C=4gU?qsV#J?bzXD`xqyUuZQQ{c*?9)2RSqOgJ$Zil{Z#@`v*YQ@)L-cvJv7tcbbq(&~$i}7;pHvZQ;&ri1+c>cfzLm(0#D`Erx97 za-I3M`csw_-%aA9pX7J$MXhOW+I12A1?%4bx-`4UzN6L?4xm_GH@^3JHow+XDx~Jq zp4MyIqoZL;1WDIM6js&)eQP zCV`^ujGg@t&h7_{h%~&$yJnxYjO!svDRx$9iguCbO4DnUeuY~LZ=3KZ)kXa9H2ZT- zde(nK#gb*1vuTGOZwQ(`0yy3*aO-Fh*vg*J zIX8^9yS^%T?dtSh<#1H=5PSZ8#Y=vP`~;OsA)pjg8oMn8e=o&fh_6E%>GA6-b)d0o zA_5kl@SBc^=?8t`5mXrI*4Wy=_)LwHe!!-z)#%I}A#J=cDGUbCS27}@QdXq9@ikA$J3^&H zN*H$+UzS4AK$_AVp++MTF&$-e>_(%Rn+jJ5q9zN<3xn@te-RN#o-(u~mZ=T;P9QPp z6-xbY>}}(N0xE^F#|BWq=p+gp@-J6=RfMG1OKs?Ru zoVG}ihL5N>Ff$>{3e6rIzA><|sBZMW6FUt7RB~|Qo4PB{E4x`#13dEp0_yrB%X5a)U@La7M8!7cZ}hX2UdR8-)9>*0sw-?Pd>Rz z0|z~T?}T`~KBWsE4+qm;>|!u9mD8yKDY7!=n5KN#E>=p*V-m+feyQHb;M+pQUgX() z2Y*1jtZ(q8TF3IyeSHI=pgw)vM&eE~%0pi`=!Sq;CLKU*GUqtrUp@`q z1m5|DR!jy2tRK{`RpL?SE11cYzY&!P``{ZePSb=|o$y`XLq{_=&V)M4qMC2OXufcC z-&9n~kNWFhwTU_%oGgoV|D86kf~kuo|2G6MGL=76kv$F6k+`+ZLS56JQ~9afInsnA zMlaxh!-~5AeFV5p?g8&Wz_aVh4a4cpI3&a-M?e}Qh9SZIbYg1~KNoBHckv%Miofx( zcFuDbWmM6t(6bSb8b~m#{sOU5%p)PoJ+#+}tm~7Yi`mko?bPX2%YxoThGEGQS)>b4 z!$deQVuVIJ;?e5E&6Jd<+81I?&WNkiQ~xtHI#S@mx;+OVQ+V-$mDEAy876D66xciC zM<(3;GLJsnafD#M*4dLZj-*;fL7dEVEK5V%9!@B+8bFq33-Pc~Zh)DygJ$N3ec+`7 z#KG`zQ3v}Rjy#26I(L|%o4ng_f>qg{p48t6uC9ZWy<~TB`oGGKC`9y}AvyF8>`N6; zR=D-**c_`{ETxzq0{FEyS}NB1tgfvz@a~Luz)YVv`F;*U4FY z^9OD}#ICmn_HmZykB!*j=FS_?su3t^o2#F|S{;X;TPBA2ZuE;n%z5#i`*8CHlY1Gp zR`|d*vX`Ao&GZG8ogvIb!4EID7r$ytgXy+H0qO@OdLItk&~3fZGFU3dLrSr5+k3t3 zkK7y>Ch|Y%SmOwAk49j`4P~f+Gl^a*+oma9nF`m$yu?m`n6uDfggAR)mk-}EJ-TZW z#^6t>rb=#RjhQB#Y&IWs%Mbx-gWuQpUmc<4wiW>7D}di(EUh-2eNIDkL-k@673LR& zPG4T;U}KF{uAunbZG6$Nn?eVx$c@I?L>=5{d0VW8s;vq(l{JG2;K7ztYnsf7`xG{a z$nzC12lrb)^&hMx7r|`-UdO$ct!6?0U8QH^EoX2BZDw7XU)XILu7qnPNP0{6In8@E3VZxfuUgb*mY{{(h&` zWqa~kPbJes(~(9;#Hgr7a-k$8o8WQ&@`A@F+9Zy)Qi+3o)oNz85}TF1EDh=yjH6i6q{O(2D&!GL~-&vU>00T?EiDK(H{wIAhU< zFVWRMxUG;iwj^Xd{Rx|x4Z=RwEzvbI+tr)b);q9p{*8xp*_Va=tDk95QMXB5tz`E1_d9F(3mJVP zwrvJeauKJAVhV9z-d7y}bd64trm(1|V3Dvmzdwmq4jf>tj7!{`e+~~9@W1V1=RQPuA3Efx;j5K7y-J z-%Q_fFRU$2Bw+K-+_(|WLoN7d7A+j>a�M~=mb$thu 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 At^fc4 diff --git a/More/Repository/uml/uml.svg b/More/Repository/uml/uml.svg index 8b9987c..97e0a5c 100644 --- a/More/Repository/uml/uml.svg +++ b/More/Repository/uml/uml.svg @@ -1,687 +1,113 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - persist(data) - - - - - - - - - retrieve(id) - - - - - - - - - delete(id) - - - - - - - - - - - - - Storage - - - Storage - - - - - - - - - - - - - - - - - - - data - - - - - - - - - - lastId - - - - - - - - - - - - __construct() - - - - - - - - - - - - persist(data) - - - - - - - - - retrieve(id) - - - - - - - - - delete(id) - - - - - - - - - - - - - MemoryStorage - - - MemoryStorage - - - - - - - - - - - - - - - - - - - id - - - - - - - - - - title - - - - - - - - - - text - - - - - - - - - - author - - - - - - - - - - created - - - - - - - - - - - - setId(id) - - - - - - - - - getId() - - - - - - - - - setAuthor(author) - - - - - - - - - getAuthor() - - - - - - - - - setCreated(created) - - - - - - - - - getCreated() - - - - - - - - - setText(text) - - - - - - - - - getText() - - - - - - - - - setTitle(title) - - - - - - - - - getTitle() - - - - - - - - - - - - - Post - - - Post - - - - - - - - - - - - - - - - - - - persistence - - - - - - - - - - - - __construct(persistence) - - - - - - - - - - - - getById(id) - - - - - - - - - save(post) - - - - - - - - - delete(post) - - - - - - - - - - - - - PostRepository - - - PostRepository - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/locale/ca/LC_MESSAGES/More/Repository/README.po b/locale/ca/LC_MESSAGES/More/Repository/README.po index 5a37043..319ace4 100644 --- a/locale/ca/LC_MESSAGES/More/Repository/README.po +++ b/locale/ca/LC_MESSAGES/More/Repository/README.po @@ -64,11 +64,11 @@ msgid "PostRepository.php" msgstr "" #: ../../More/Repository/README.rst:46 -msgid "Storage.php" +msgid "Persistence.php" msgstr "" #: ../../More/Repository/README.rst:52 -msgid "MemoryStorage.php" +msgid "InMemoryPersistence.php" msgstr "" #: ../../More/Repository/README.rst:59 diff --git a/locale/de/LC_MESSAGES/More/Repository/README.po b/locale/de/LC_MESSAGES/More/Repository/README.po index 152a3e7..f4e077a 100644 --- a/locale/de/LC_MESSAGES/More/Repository/README.po +++ b/locale/de/LC_MESSAGES/More/Repository/README.po @@ -75,12 +75,12 @@ msgid "PostRepository.php" msgstr "PostRepository.php" #: ../../More/Repository/README.rst:46 -msgid "Storage.php" -msgstr "Storage.php" +msgid "Persistence.php" +msgstr "Persistence.php" #: ../../More/Repository/README.rst:52 -msgid "MemoryStorage.php" -msgstr "MemoryStorage.php" +msgid "InMemoryPersistence.php" +msgstr "InMemoryPersistence.php" #: ../../More/Repository/README.rst:59 msgid "Test" diff --git a/locale/es/LC_MESSAGES/More/Repository/README.po b/locale/es/LC_MESSAGES/More/Repository/README.po index 569d52b..1ca95fe 100644 --- a/locale/es/LC_MESSAGES/More/Repository/README.po +++ b/locale/es/LC_MESSAGES/More/Repository/README.po @@ -64,11 +64,11 @@ msgid "PostRepository.php" msgstr "" #: ../../More/Repository/README.rst:46 -msgid "Storage.php" +msgid "Persistence.php" msgstr "" #: ../../More/Repository/README.rst:52 -msgid "MemoryStorage.php" +msgid "InMemoryPersistence.php" msgstr "" #: ../../More/Repository/README.rst:59 diff --git a/locale/pl/LC_MESSAGES/More/Repository/README.po b/locale/pl/LC_MESSAGES/More/Repository/README.po index 577c9dd..b1faa49 100644 --- a/locale/pl/LC_MESSAGES/More/Repository/README.po +++ b/locale/pl/LC_MESSAGES/More/Repository/README.po @@ -72,12 +72,12 @@ msgid "PostRepository.php" msgstr "PostRepository.php" #: ../../More/Repository/README.rst:46 -msgid "Storage.php" -msgstr "Storage.php" +msgid "Persistence.php" +msgstr "Persistence.php" #: ../../More/Repository/README.rst:52 -msgid "MemoryStorage.php" -msgstr "MemoryStorage.php" +msgid "InMemoryPersistence.php" +msgstr "InMemoryPersistence.php" #: ../../More/Repository/README.rst:59 msgid "Test" diff --git a/locale/pt_BR/LC_MESSAGES/More/Repository/README.po b/locale/pt_BR/LC_MESSAGES/More/Repository/README.po index 0fe32e4..f9a9d36 100644 --- a/locale/pt_BR/LC_MESSAGES/More/Repository/README.po +++ b/locale/pt_BR/LC_MESSAGES/More/Repository/README.po @@ -72,11 +72,11 @@ msgid "PostRepository.php" msgstr "" #: ../../More/Repository/README.rst:46 -msgid "Storage.php" +msgid "Persistence.php" msgstr "" #: ../../More/Repository/README.rst:52 -msgid "MemoryStorage.php" +msgid "InMemoryPersistence.php" msgstr "" #: ../../More/Repository/README.rst:59 diff --git a/locale/ru/LC_MESSAGES/More/Repository/README.po b/locale/ru/LC_MESSAGES/More/Repository/README.po index 0a09340..29c5d4e 100644 --- a/locale/ru/LC_MESSAGES/More/Repository/README.po +++ b/locale/ru/LC_MESSAGES/More/Repository/README.po @@ -73,12 +73,12 @@ msgid "PostRepository.php" msgstr "PostRepository.php" #: ../../More/Repository/README.rst:46 -msgid "Storage.php" -msgstr "Storage.php" +msgid "Persistence.php" +msgstr "Persistence.php" #: ../../More/Repository/README.rst:52 -msgid "MemoryStorage.php" -msgstr "MemoryStorage.php" +msgid "InMemoryPersistence.php" +msgstr "InMemoryPersistence.php" #: ../../More/Repository/README.rst:59 msgid "Test" diff --git a/locale/zh_CN/LC_MESSAGES/More/Repository/README.po b/locale/zh_CN/LC_MESSAGES/More/Repository/README.po index 5a37043..319ace4 100644 --- a/locale/zh_CN/LC_MESSAGES/More/Repository/README.po +++ b/locale/zh_CN/LC_MESSAGES/More/Repository/README.po @@ -64,11 +64,11 @@ msgid "PostRepository.php" msgstr "" #: ../../More/Repository/README.rst:46 -msgid "Storage.php" +msgid "Persistence.php" msgstr "" #: ../../More/Repository/README.rst:52 -msgid "MemoryStorage.php" +msgid "InMemoryPersistence.php" msgstr "" #: ../../More/Repository/README.rst:59 From 213e3bf9504d7214723c56dd16a59a275c4e5f9c Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Thu, 14 Jun 2018 20:26:16 +0200 Subject: [PATCH 14/45] removed outdated template --- .../ChainOfResponsibilities/README.pot | 72 -------------- .../LC_MESSAGES/Behavioral/Command/README.pot | 81 --------------- .../Behavioral/Iterator/README.pot | 63 ------------ .../Behavioral/Mediator/README.pot | 51 ---------- .../LC_MESSAGES/Behavioral/Memento/README.pot | 99 ------------------- .../Behavioral/NullObject/README.pot | 85 ---------------- .../Behavioral/Observer/README.pot | 63 ------------ .../LC_MESSAGES/Behavioral/README.pot | 21 ---- .../Behavioral/Specification/README.pot | 49 --------- .../LC_MESSAGES/Behavioral/State/README.pot | 44 --------- .../Behavioral/Strategy/README.pot | 70 ------------- .../Behavioral/TemplateMethod/README.pot | 68 ------------- .../LC_MESSAGES/Behavioral/Visitor/README.pot | 52 ---------- .../Creational/AbstractFactory/README.pot | 45 --------- .../LC_MESSAGES/Creational/Builder/README.pot | 67 ------------- .../Creational/FactoryMethod/README.pot | 60 ----------- .../Creational/Multiton/README.pot | 61 ------------ .../LC_MESSAGES/Creational/Pool/README.pot | 66 ------------- .../Creational/Prototype/README.pot | 53 ---------- .../LC_MESSAGES/Creational/README.pot | 23 ----- .../Creational/SimpleFactory/README.pot | 55 ----------- .../Creational/Singleton/README.pot | 69 ------------- .../Creational/StaticFactory/README.pot | 56 ----------- .../LC_MESSAGES/More/Delegation/README.pot | 54 ---------- .../template/LC_MESSAGES/More/EAV/README.pot | 49 --------- locale/template/LC_MESSAGES/More/README.pot | 13 --- .../LC_MESSAGES/More/Repository/README.pot | 62 ------------ .../More/ServiceLocator/README.pot | 67 ------------- locale/template/LC_MESSAGES/README.pot | 71 ------------- .../LC_MESSAGES/Structural/Adapter/README.pot | 59 ----------- .../LC_MESSAGES/Structural/Bridge/README.pot | 53 ---------- .../Structural/Composite/README.pot | 60 ----------- .../Structural/DataMapper/README.pot | 66 ------------- .../Structural/Decorator/README.pot | 99 ------------------- .../Structural/DependencyInjection/README.pot | 74 -------------- .../LC_MESSAGES/Structural/Facade/README.pot | 73 -------------- .../Structural/FluentInterface/README.pot | 57 ----------- .../Structural/Flyweight/README.pot | 44 --------- .../LC_MESSAGES/Structural/Proxy/README.pot | 52 ---------- .../LC_MESSAGES/Structural/README.pot | 20 ---- .../Structural/Registry/README.pot | 61 ------------ 41 files changed, 2407 deletions(-) delete mode 100644 locale/template/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.pot delete mode 100644 locale/template/LC_MESSAGES/Behavioral/Command/README.pot delete mode 100644 locale/template/LC_MESSAGES/Behavioral/Iterator/README.pot delete mode 100644 locale/template/LC_MESSAGES/Behavioral/Mediator/README.pot delete mode 100644 locale/template/LC_MESSAGES/Behavioral/Memento/README.pot delete mode 100644 locale/template/LC_MESSAGES/Behavioral/NullObject/README.pot delete mode 100644 locale/template/LC_MESSAGES/Behavioral/Observer/README.pot delete mode 100644 locale/template/LC_MESSAGES/Behavioral/README.pot delete mode 100644 locale/template/LC_MESSAGES/Behavioral/Specification/README.pot delete mode 100644 locale/template/LC_MESSAGES/Behavioral/State/README.pot delete mode 100644 locale/template/LC_MESSAGES/Behavioral/Strategy/README.pot delete mode 100644 locale/template/LC_MESSAGES/Behavioral/TemplateMethod/README.pot delete mode 100644 locale/template/LC_MESSAGES/Behavioral/Visitor/README.pot delete mode 100644 locale/template/LC_MESSAGES/Creational/AbstractFactory/README.pot delete mode 100644 locale/template/LC_MESSAGES/Creational/Builder/README.pot delete mode 100644 locale/template/LC_MESSAGES/Creational/FactoryMethod/README.pot delete mode 100644 locale/template/LC_MESSAGES/Creational/Multiton/README.pot delete mode 100644 locale/template/LC_MESSAGES/Creational/Pool/README.pot delete mode 100644 locale/template/LC_MESSAGES/Creational/Prototype/README.pot delete mode 100644 locale/template/LC_MESSAGES/Creational/README.pot delete mode 100644 locale/template/LC_MESSAGES/Creational/SimpleFactory/README.pot delete mode 100644 locale/template/LC_MESSAGES/Creational/Singleton/README.pot delete mode 100644 locale/template/LC_MESSAGES/Creational/StaticFactory/README.pot delete mode 100644 locale/template/LC_MESSAGES/More/Delegation/README.pot delete mode 100644 locale/template/LC_MESSAGES/More/EAV/README.pot delete mode 100644 locale/template/LC_MESSAGES/More/README.pot delete mode 100644 locale/template/LC_MESSAGES/More/Repository/README.pot delete mode 100644 locale/template/LC_MESSAGES/More/ServiceLocator/README.pot delete mode 100644 locale/template/LC_MESSAGES/README.pot delete mode 100644 locale/template/LC_MESSAGES/Structural/Adapter/README.pot delete mode 100644 locale/template/LC_MESSAGES/Structural/Bridge/README.pot delete mode 100644 locale/template/LC_MESSAGES/Structural/Composite/README.pot delete mode 100644 locale/template/LC_MESSAGES/Structural/DataMapper/README.pot delete mode 100644 locale/template/LC_MESSAGES/Structural/Decorator/README.pot delete mode 100644 locale/template/LC_MESSAGES/Structural/DependencyInjection/README.pot delete mode 100644 locale/template/LC_MESSAGES/Structural/Facade/README.pot delete mode 100644 locale/template/LC_MESSAGES/Structural/FluentInterface/README.pot delete mode 100644 locale/template/LC_MESSAGES/Structural/Flyweight/README.pot delete mode 100644 locale/template/LC_MESSAGES/Structural/Proxy/README.pot delete mode 100644 locale/template/LC_MESSAGES/Structural/README.pot delete mode 100644 locale/template/LC_MESSAGES/Structural/Registry/README.pot diff --git a/locale/template/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.pot b/locale/template/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.pot deleted file mode 100644 index 9b42bd5..0000000 --- a/locale/template/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.pot +++ /dev/null @@ -1,72 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:1 -msgid "Chain Of Responsibilities" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:7 -msgid "" -"To build a chain of objects to handle a call in sequential order. If one " -"object cannot handle a call, it delegates the call to the next in the " -"chain and so forth." -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:11 -msgid "Examples" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:14 -msgid "" -"Logging framework: where each chain element decides autonomously what " -"to do with a log message." -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:16 -msgid "A Spam filter." -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:17 -msgid "" -"Caching: first object is an instance of e.g. a Memcached Interface, " -"if that \"misses\" it delegates the call to the database interface." -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:19 -msgid "" -"Yii Framework: CFilterChain is a chain of controller action filters. " -"the executing point is passed from one filter to the next along the " -"chain, and only if all filters say \"yes\", the action can be invoked " -"at last." -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:24 -msgid "UML Diagram" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:28 -msgid "Alt ChainOfResponsibility UML Diagram" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:31 -msgid "Code" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:34 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:54 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Behavioral/Command/README.pot b/locale/template/LC_MESSAGES/Behavioral/Command/README.pot deleted file mode 100644 index 33dd5b3..0000000 --- a/locale/template/LC_MESSAGES/Behavioral/Command/README.pot +++ /dev/null @@ -1,81 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Behavioral/Command/README.rst:1 -msgid "Command" -msgstr "" - -#: ../../Behavioral/Command/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Behavioral/Command/README.rst:7 -msgid "To encapsulate invocation and decoupling." -msgstr "" - -#: ../../Behavioral/Command/README.rst:9 -msgid "" -"We have an Invoker and a Receiver. This pattern uses a \"Command\" to " -"delegate the method call against the Receiver and presents the same " -"method \"execute\". Therefore, the Invoker just knows to call \"execute\" to " -"process the Command of the client. The Receiver is decoupled from the " -"Invoker." -msgstr "" - -#: ../../Behavioral/Command/README.rst:15 -msgid "" -"The second aspect of this pattern is the undo(), which undoes the method " -"execute(). Command can also be aggregated to combine more complex " -"commands with minimum copy-paste and relying on composition over " -"inheritance." -msgstr "" - -#: ../../Behavioral/Command/README.rst:20 -msgid "Examples" -msgstr "" - -#: ../../Behavioral/Command/README.rst:23 -msgid "" -"A text editor : all events are Command which can be undone, stacked " -"and saved." -msgstr "" - -#: ../../Behavioral/Command/README.rst:25 -msgid "" -"Symfony2: SF2 Commands that can be run from the CLI are built with " -"just the Command pattern in mind." -msgstr "" - -#: ../../Behavioral/Command/README.rst:27 -msgid "" -"Big CLI tools use subcommands to distribute various tasks and pack " -"them in \"modules\", each of these can be implemented with the Command " -"pattern (e.g. vagrant)." -msgstr "" - -#: ../../Behavioral/Command/README.rst:31 -msgid "UML Diagram" -msgstr "" - -#: ../../Behavioral/Command/README.rst:35 -msgid "Alt Command UML Diagram" -msgstr "" - -#: ../../Behavioral/Command/README.rst:38 -msgid "Code" -msgstr "" - -#: ../../Behavioral/Command/README.rst:41 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Behavioral/Command/README.rst:67 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Behavioral/Iterator/README.pot b/locale/template/LC_MESSAGES/Behavioral/Iterator/README.pot deleted file mode 100644 index 47d8c0d..0000000 --- a/locale/template/LC_MESSAGES/Behavioral/Iterator/README.pot +++ /dev/null @@ -1,63 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Behavioral/Iterator/README.rst:1 -msgid "Iterator" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:7 -msgid "To make an object iterable and to make it appear like a collection of objects." -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:10 -msgid "Examples" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:13 -msgid "" -"To process a file line by line by just running over all lines (which " -"have an object representation) for a file (which of course is an " -"object, too)." -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:17 -msgid "Note" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:20 -msgid "" -"Standard PHP Library (SPL) defines an interface Iterator which is best " -"suited for this! Often you would want to implement the Countable " -"interface too, to allow ``count($object)`` on your iterable object." -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:24 -msgid "UML Diagram" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:28 -msgid "Alt Iterator UML Diagram" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:31 -msgid "Code" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:34 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:60 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Behavioral/Mediator/README.pot b/locale/template/LC_MESSAGES/Behavioral/Mediator/README.pot deleted file mode 100644 index a796de5..0000000 --- a/locale/template/LC_MESSAGES/Behavioral/Mediator/README.pot +++ /dev/null @@ -1,51 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Behavioral/Mediator/README.rst:1 -msgid "Mediator" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:7 -msgid "" -"This pattern provides an easy way to decouple many components working " -"together. It is a good alternative to Observer IF you have a \"central " -"intelligence\", like a controller (but not in the sense of the MVC)." -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:11 -msgid "" -"All components (called Colleague) are only coupled to the " -"MediatorInterface and it is a good thing because in OOP, one good friend " -"is better than many. This is the key-feature of this pattern." -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:15 -msgid "UML Diagram" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:19 -msgid "Alt Mediator UML Diagram" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:22 -msgid "Code" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:25 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:63 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Behavioral/Memento/README.pot b/locale/template/LC_MESSAGES/Behavioral/Memento/README.pot deleted file mode 100644 index acff1b7..0000000 --- a/locale/template/LC_MESSAGES/Behavioral/Memento/README.pot +++ /dev/null @@ -1,99 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Behavioral/Memento/README.rst:1 -msgid "Memento" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:7 -msgid "" -"It provides the ability to restore an object to it's previous state (undo " -"via rollback) or to gain access to state of the object, without revealing " -"it's implementation (i.e., the object is not required to have a function " -"to return the current state)." -msgstr "" - -#: ../../Behavioral/Memento/README.rst:12 -msgid "" -"The memento pattern is implemented with three objects: the Originator, a " -"Caretaker and a Memento." -msgstr "" - -#: ../../Behavioral/Memento/README.rst:15 -msgid "" -"Memento – an object that *contains a concrete unique snapshot of state* of " -"any object or resource: string, number, array, an instance of class and so on. " -"The uniqueness in this case does not imply the prohibition existence of similar " -"states in different snapshots. That means the state can be extracted as " -"the independent clone. Any object stored in the Memento should be " -"*a full copy of the original object rather than a reference* to the original " -"object. The Memento object is a \"opaque object\" (the object that no one can " -"or should change)." -msgstr "" - -#: ../../Behavioral/Memento/README.rst:24 -msgid "" -"Originator – it is an object that contains the *actual state of an external " -"object is strictly specified type*. Originator is able to create a unique " -"copy of this state and return it wrapped in a Memento. The Originator does " -"not know the history of changes. You can set a concrete state to Originator " -"from the outside, which will be considered as actual. The Originator must " -"make sure that given state corresponds the allowed type of object. Originator " -"may (but not should) have any methods, but they *they can't make changes to " -"the saved object state*." -msgstr "" - -#: ../../Behavioral/Memento/README.rst:33 -msgid "" -"Caretaker *controls the states history*. He may make changes to an object; " -"take a decision to save the state of an external object in the Originator; " -"ask from the Originator snapshot of the current state; or set the Originator " -"state to equivalence with some snapshot from history." -msgstr "" - -#: ../../Behavioral/Memento/README.rst:38 -msgid "Examples" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:41 -msgid "The seed of a pseudorandom number generator." -msgstr "" - -#: ../../Behavioral/Memento/README.rst:42 -msgid "The state in a finite state machine." -msgstr "" - -#: ../../Behavioral/Memento/README.rst:43 -msgid "Control for intermediate states of `ORM Model `_ before saving." -msgstr "" - -#: ../../Behavioral/Memento/README.rst:45 -msgid "UML Diagram" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:49 -msgid "Alt Memento UML Diagram" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:52 -msgid "Code" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:55 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:75 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Behavioral/NullObject/README.pot b/locale/template/LC_MESSAGES/Behavioral/NullObject/README.pot deleted file mode 100644 index 4f00a60..0000000 --- a/locale/template/LC_MESSAGES/Behavioral/NullObject/README.pot +++ /dev/null @@ -1,85 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Behavioral/NullObject/README.rst:1 -msgid "Null Object" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:7 -msgid "" -"NullObject is not a GoF design pattern but a schema which appears " -"frequently enough to be considered a pattern. It has the following " -"benefits:" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:11 -msgid "Client code is simplified." -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:12 -msgid "Reduces the chance of null pointer exceptions." -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:13 -msgid "Fewer conditionals require less test cases." -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:15 -msgid "" -"Methods that return an object or null should instead return an object or " -"``NullObject``. ``NullObject``\ s simplify boilerplate code such as " -"``if (!is_null($obj)) { $obj->callSomething(); }`` to just " -"``$obj->callSomething();`` by eliminating the conditional check in " -"client code." -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:21 -msgid "Examples" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:24 -msgid "Symfony2: null logger of profiler." -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:25 -msgid "Symfony2: null output in Symfony/Console." -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:26 -msgid "null handler in a Chain of Responsibilities pattern." -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:27 -msgid "null command in a Command pattern." -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:29 -msgid "UML Diagram" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:33 -msgid "Alt NullObject UML Diagram" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:36 -msgid "Code" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:39 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:65 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Behavioral/Observer/README.pot b/locale/template/LC_MESSAGES/Behavioral/Observer/README.pot deleted file mode 100644 index db2937f..0000000 --- a/locale/template/LC_MESSAGES/Behavioral/Observer/README.pot +++ /dev/null @@ -1,63 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Behavioral/Observer/README.rst:1 -msgid "Observer" -msgstr "" - -#: ../../Behavioral/Observer/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Behavioral/Observer/README.rst:7 -msgid "" -"To implement a publish/subscribe behaviour to an object, whenever a " -"\"Subject\" object changes its state, the attached \"Observers\" will be " -"notified. It is used to shorten the amount of coupled objects and uses " -"loose coupling instead." -msgstr "" - -#: ../../Behavioral/Observer/README.rst:12 -msgid "Examples" -msgstr "" - -#: ../../Behavioral/Observer/README.rst:15 -msgid "A message queue system is observed to show the progress of a job in a GUI." -msgstr "" - -#: ../../Behavioral/Observer/README.rst:17 -msgid "Note" -msgstr "" - -#: ../../Behavioral/Observer/README.rst:20 -msgid "" -"PHP already defines two interfaces that can help to implement this " -"pattern: SplObserver and SplSubject." -msgstr "" - -#: ../../Behavioral/Observer/README.rst:23 -msgid "UML Diagram" -msgstr "" - -#: ../../Behavioral/Observer/README.rst:27 -msgid "Alt Observer UML Diagram" -msgstr "" - -#: ../../Behavioral/Observer/README.rst:30 -msgid "Code" -msgstr "" - -#: ../../Behavioral/Observer/README.rst:33 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Behavioral/Observer/README.rst:47 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Behavioral/README.pot b/locale/template/LC_MESSAGES/Behavioral/README.pot deleted file mode 100644 index 9c7bfda..0000000 --- a/locale/template/LC_MESSAGES/Behavioral/README.pot +++ /dev/null @@ -1,21 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Behavioral/README.rst:1 -msgid "Behavioral" -msgstr "" - -#: ../../Behavioral/README.rst:4 -msgid "" -"In software engineering, behavioral design patterns are design patterns " -"that identify common communication patterns between objects and realize " -"these patterns. By doing so, these patterns increase flexibility in " -"carrying out this communication." -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Behavioral/Specification/README.pot b/locale/template/LC_MESSAGES/Behavioral/Specification/README.pot deleted file mode 100644 index 36f7299..0000000 --- a/locale/template/LC_MESSAGES/Behavioral/Specification/README.pot +++ /dev/null @@ -1,49 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Behavioral/Specification/README.rst:1 -msgid "Specification" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:7 -msgid "" -"Builds a clear specification of business rules, where objects can be " -"checked against. The composite specification class has one method called " -"``isSatisfiedBy`` that returns either true or false depending on whether " -"the given object satisfies the specification." -msgstr "" - -#: ../../Behavioral/Specification/README.rst:12 -msgid "Examples" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:17 -msgid "UML Diagram" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:21 -msgid "Alt Specification UML Diagram" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:24 -msgid "Code" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:27 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:65 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Behavioral/State/README.pot b/locale/template/LC_MESSAGES/Behavioral/State/README.pot deleted file mode 100644 index 389d11f..0000000 --- a/locale/template/LC_MESSAGES/Behavioral/State/README.pot +++ /dev/null @@ -1,44 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Behavioral/State/README.rst:1 -msgid "State" -msgstr "" - -#: ../../Behavioral/State/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Behavioral/State/README.rst:7 -msgid "" -"Encapsulate varying behavior for the same routine based on an object's " -"state. This can be a cleaner way for an object to change its behavior at " -"runtime without resorting to large monolithic conditional statements." -msgstr "" - -#: ../../Behavioral/State/README.rst:11 -msgid "UML Diagram" -msgstr "" - -#: ../../Behavioral/State/README.rst:15 -msgid "Alt State UML Diagram" -msgstr "" - -#: ../../Behavioral/State/README.rst:18 -msgid "Code" -msgstr "" - -#: ../../Behavioral/State/README.rst:21 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Behavioral/State/README.rst:53 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Behavioral/Strategy/README.pot b/locale/template/LC_MESSAGES/Behavioral/Strategy/README.pot deleted file mode 100644 index 95d7f0b..0000000 --- a/locale/template/LC_MESSAGES/Behavioral/Strategy/README.pot +++ /dev/null @@ -1,70 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Behavioral/Strategy/README.rst:1 ../../Behavioral/Strategy/README.rst:8 -msgid "Strategy" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:4 -msgid "Terminology" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:7 -msgid "Context" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:9 -msgid "Concrete Strategy" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:11 -msgid "Purpose" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:14 -msgid "" -"To separate strategies and to enable fast switching between them. Also " -"this pattern is a good alternative to inheritance (instead of having an " -"abstract class that is extended)." -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:18 -msgid "Examples" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:21 -msgid "Sorting a list of objects, one strategy by date, the other by id." -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:22 -msgid "" -"Simplify unit testing: e.g. switching between file and in-memory " -"storage." -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:25 -msgid "UML Diagram" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:29 -msgid "Alt Strategy UML Diagram" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:32 -msgid "Code" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:35 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:61 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Behavioral/TemplateMethod/README.pot b/locale/template/LC_MESSAGES/Behavioral/TemplateMethod/README.pot deleted file mode 100644 index 3ab5c5f..0000000 --- a/locale/template/LC_MESSAGES/Behavioral/TemplateMethod/README.pot +++ /dev/null @@ -1,68 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Behavioral/TemplateMethod/README.rst:1 -msgid "Template Method" -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:7 -msgid "Template Method is a behavioral design pattern." -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:9 -msgid "" -"Perhaps you have encountered it many times already. The idea is to let " -"subclasses of this abstract template \"finish\" the behavior of an " -"algorithm." -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:13 -msgid "" -"A.k.a the \"Hollywood Principle\": \"Don't call us, we call you.\" This " -"class is not called by subclasses but the inverse. How? With abstraction " -"of course." -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:17 -msgid "" -"In other words, this is a skeleton of algorithm, well-suited for " -"framework libraries. The user has just to implement one method and the " -"superclass does the job." -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:21 -msgid "" -"It is an easy way to decouple concrete classes and reduce copy-paste, " -"that's why you'll find it everywhere." -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:24 -msgid "UML Diagram" -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:28 -msgid "Alt TemplateMethod UML Diagram" -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:31 -msgid "Code" -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:34 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:54 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Behavioral/Visitor/README.pot b/locale/template/LC_MESSAGES/Behavioral/Visitor/README.pot deleted file mode 100644 index 056651d..0000000 --- a/locale/template/LC_MESSAGES/Behavioral/Visitor/README.pot +++ /dev/null @@ -1,52 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Behavioral/Visitor/README.rst:1 -msgid "Visitor" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:7 -msgid "" -"The Visitor Pattern lets you outsource operations on objects to other " -"objects. The main reason to do this is to keep a separation of concerns. " -"But classes have to define a contract to allow visitors (the " -"``Role::accept`` method in the example)." -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:12 -msgid "" -"The contract is an abstract class but you can have also a clean " -"interface. In that case, each Visitor has to choose itself which method " -"to invoke on the visitor." -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:16 -msgid "UML Diagram" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:20 -msgid "Alt Visitor UML Diagram" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:23 -msgid "Code" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:26 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:58 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Creational/AbstractFactory/README.pot b/locale/template/LC_MESSAGES/Creational/AbstractFactory/README.pot deleted file mode 100644 index 5610f7d..0000000 --- a/locale/template/LC_MESSAGES/Creational/AbstractFactory/README.pot +++ /dev/null @@ -1,45 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Creational/AbstractFactory/README.rst:1 -msgid "Abstract Factory" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:7 -msgid "" -"To create series of related or dependent objects without specifying " -"their concrete classes. Usually the created classes all implement the " -"same interface. The client of the abstract factory does not care about " -"how these objects are created, he just knows how they go together." -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:12 -msgid "UML Diagram" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:16 -msgid "Alt AbstractFactory UML Diagram" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:19 -msgid "Code" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:22 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:60 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Creational/Builder/README.pot b/locale/template/LC_MESSAGES/Creational/Builder/README.pot deleted file mode 100644 index 784edf6..0000000 --- a/locale/template/LC_MESSAGES/Creational/Builder/README.pot +++ /dev/null @@ -1,67 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Creational/Builder/README.rst:1 -msgid "Builder" -msgstr "" - -#: ../../Creational/Builder/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Creational/Builder/README.rst:7 -msgid "Builder is an interface that build parts of a complex object." -msgstr "" - -#: ../../Creational/Builder/README.rst:9 -msgid "" -"Sometimes, if the builder has a better knowledge of what it builds, this " -"interface could be an abstract class with default methods (aka adapter)." -msgstr "" - -#: ../../Creational/Builder/README.rst:12 -msgid "" -"If you have a complex inheritance tree for objects, it is logical to " -"have a complex inheritance tree for builders too." -msgstr "" - -#: ../../Creational/Builder/README.rst:15 -msgid "" -"Note: Builders have often a fluent interface, see the mock builder of " -"PHPUnit for example." -msgstr "" - -#: ../../Creational/Builder/README.rst:18 -msgid "Examples" -msgstr "" - -#: ../../Creational/Builder/README.rst:21 -msgid "PHPUnit: Mock Builder" -msgstr "" - -#: ../../Creational/Builder/README.rst:23 -msgid "UML Diagram" -msgstr "" - -#: ../../Creational/Builder/README.rst:27 -msgid "Alt Builder UML Diagram" -msgstr "" - -#: ../../Creational/Builder/README.rst:30 -msgid "Code" -msgstr "" - -#: ../../Creational/Builder/README.rst:33 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Creational/Builder/README.rst:95 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Creational/FactoryMethod/README.pot b/locale/template/LC_MESSAGES/Creational/FactoryMethod/README.pot deleted file mode 100644 index 2cf0eb8..0000000 --- a/locale/template/LC_MESSAGES/Creational/FactoryMethod/README.pot +++ /dev/null @@ -1,60 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Creational/FactoryMethod/README.rst:1 -msgid "Factory Method" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:7 -msgid "" -"The good point over the SimpleFactory is you can subclass it to " -"implement different ways to create objects." -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:10 -msgid "For simple case, this abstract class could be just an interface." -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:12 -msgid "" -"This pattern is a \"real\" Design Pattern because it achieves the " -"\"Dependency Inversion Principle\" a.k.a the \"D\" in S.O.L.I.D principles." -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:15 -msgid "" -"It means the FactoryMethod class depends on abstractions, not concrete " -"classes. This is the real trick compared to SimpleFactory or " -"StaticFactory." -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:19 -msgid "UML Diagram" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:23 -msgid "Alt FactoryMethod UML Diagram" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:26 -msgid "Code" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:29 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:73 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Creational/Multiton/README.pot b/locale/template/LC_MESSAGES/Creational/Multiton/README.pot deleted file mode 100644 index c9b8176..0000000 --- a/locale/template/LC_MESSAGES/Creational/Multiton/README.pot +++ /dev/null @@ -1,61 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Creational/Multiton/README.rst:1 -msgid "Multiton" -msgstr "" - -#: ../../Creational/Multiton/README.rst:4 -msgid "" -"**THIS IS CONSIDERED TO BE AN ANTI-PATTERN! FOR BETTER TESTABILITY AND " -"MAINTAINABILITY USE DEPENDENCY INJECTION!**" -msgstr "" - -#: ../../Creational/Multiton/README.rst:7 -msgid "Purpose" -msgstr "" - -#: ../../Creational/Multiton/README.rst:10 -msgid "" -"To have only a list of named instances that are used, like a singleton " -"but with n instances." -msgstr "" - -#: ../../Creational/Multiton/README.rst:13 -msgid "Examples" -msgstr "" - -#: ../../Creational/Multiton/README.rst:16 -msgid "2 DB Connectors, e.g. one for MySQL, the other for SQLite" -msgstr "" - -#: ../../Creational/Multiton/README.rst:17 -msgid "multiple Loggers (one for debug messages, one for errors)" -msgstr "" - -#: ../../Creational/Multiton/README.rst:19 -msgid "UML Diagram" -msgstr "" - -#: ../../Creational/Multiton/README.rst:23 -msgid "Alt Multiton UML Diagram" -msgstr "" - -#: ../../Creational/Multiton/README.rst:26 -msgid "Code" -msgstr "" - -#: ../../Creational/Multiton/README.rst:29 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Creational/Multiton/README.rst:37 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Creational/Pool/README.pot b/locale/template/LC_MESSAGES/Creational/Pool/README.pot deleted file mode 100644 index b8f06f2..0000000 --- a/locale/template/LC_MESSAGES/Creational/Pool/README.pot +++ /dev/null @@ -1,66 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Creational/Pool/README.rst:1 -msgid "Pool" -msgstr "" - -#: ../../Creational/Pool/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Creational/Pool/README.rst:7 -msgid "" -"The **object pool pattern** is a software creational design pattern that " -"uses a set of initialized objects kept ready to use – a \"pool\" – rather " -"than allocating and destroying them on demand. A client of the pool will " -"request an object from the pool and perform operations on the returned " -"object. When the client has finished, it returns the object, which is a " -"specific type of factory object, to the pool rather than destroying it." -msgstr "" - -#: ../../Creational/Pool/README.rst:14 -msgid "" -"Object pooling can offer a significant performance boost in situations " -"where the cost of initializing a class instance is high, the rate of " -"instantiation of a class is high, and the number of instances in use at " -"any one time is low. The pooled object is obtained in predictable time " -"when creation of the new objects (especially over network) may take " -"variable time." -msgstr "" - -#: ../../Creational/Pool/README.rst:21 -msgid "" -"However these benefits are mostly true for objects that are expensive " -"with respect to time, such as database connections, socket connections, " -"threads and large graphic objects like fonts or bitmaps. In certain " -"situations, simple object pooling (that hold no external resources, but " -"only occupy memory) may not be efficient and could decrease performance." -msgstr "" - -#: ../../Creational/Pool/README.rst:27 -msgid "UML Diagram" -msgstr "" - -#: ../../Creational/Pool/README.rst:31 -msgid "Alt Pool UML Diagram" -msgstr "" - -#: ../../Creational/Pool/README.rst:34 -msgid "Code" -msgstr "" - -#: ../../Creational/Pool/README.rst:37 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Creational/Pool/README.rst:51 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Creational/Prototype/README.pot b/locale/template/LC_MESSAGES/Creational/Prototype/README.pot deleted file mode 100644 index 2cfa74b..0000000 --- a/locale/template/LC_MESSAGES/Creational/Prototype/README.pot +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Creational/Prototype/README.rst:1 -msgid "Prototype" -msgstr "" - -#: ../../Creational/Prototype/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Creational/Prototype/README.rst:7 -msgid "" -"To avoid the cost of creating objects the standard way (new Foo()) and " -"instead create a prototype and clone it." -msgstr "" - -#: ../../Creational/Prototype/README.rst:10 -msgid "Examples" -msgstr "" - -#: ../../Creational/Prototype/README.rst:13 -msgid "" -"Large amounts of data (e.g. create 1,000,000 rows in a database at " -"once via a ORM)." -msgstr "" - -#: ../../Creational/Prototype/README.rst:16 -msgid "UML Diagram" -msgstr "" - -#: ../../Creational/Prototype/README.rst:20 -msgid "Alt Prototype UML Diagram" -msgstr "" - -#: ../../Creational/Prototype/README.rst:23 -msgid "Code" -msgstr "" - -#: ../../Creational/Prototype/README.rst:26 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Creational/Prototype/README.rst:46 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Creational/README.pot b/locale/template/LC_MESSAGES/Creational/README.pot deleted file mode 100644 index d3d8b7d..0000000 --- a/locale/template/LC_MESSAGES/Creational/README.pot +++ /dev/null @@ -1,23 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Creational/README.rst:1 -msgid "Creational" -msgstr "" - -#: ../../Creational/README.rst:4 -msgid "" -"In software engineering, creational design patterns are design patterns " -"that deal with object creation mechanisms, trying to create objects in a " -"manner suitable to the situation. The basic form of object creation " -"could result in design problems or added complexity to the design. " -"Creational design patterns solve this problem by somehow controlling " -"this object creation." -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Creational/SimpleFactory/README.pot b/locale/template/LC_MESSAGES/Creational/SimpleFactory/README.pot deleted file mode 100644 index 8c59113..0000000 --- a/locale/template/LC_MESSAGES/Creational/SimpleFactory/README.pot +++ /dev/null @@ -1,55 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Creational/SimpleFactory/README.rst:1 -msgid "Simple Factory" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:7 -msgid "SimpleFactory is a simple factory pattern." -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:9 -msgid "" -"It differs from the static factory because it is not static. " -"Therefore, you can have multiple factories, differently parameterized, you can subclass it and you can mock it." -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:11 -msgid "It always should be preferred over a static factory!" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:13 -msgid "UML Diagram" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:17 -msgid "Alt SimpleFactory UML Diagram" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:20 -msgid "Code" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:23 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:43 -msgid "Usage" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:52 -msgid "Test" -msgstr "" diff --git a/locale/template/LC_MESSAGES/Creational/Singleton/README.pot b/locale/template/LC_MESSAGES/Creational/Singleton/README.pot deleted file mode 100644 index ef33719..0000000 --- a/locale/template/LC_MESSAGES/Creational/Singleton/README.pot +++ /dev/null @@ -1,69 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Creational/Singleton/README.rst:1 -msgid "Singleton" -msgstr "" - -#: ../../Creational/Singleton/README.rst:4 -msgid "" -"**THIS IS CONSIDERED TO BE AN ANTI-PATTERN! FOR BETTER TESTABILITY AND " -"MAINTAINABILITY USE DEPENDENCY INJECTION!**" -msgstr "" - -#: ../../Creational/Singleton/README.rst:7 -msgid "Purpose" -msgstr "" - -#: ../../Creational/Singleton/README.rst:10 -msgid "" -"To have only one instance of this object in the application that will " -"handle all calls." -msgstr "" - -#: ../../Creational/Singleton/README.rst:13 -msgid "Examples" -msgstr "" - -#: ../../Creational/Singleton/README.rst:16 -msgid "DB Connector" -msgstr "" - -#: ../../Creational/Singleton/README.rst:17 -msgid "" -"Logger (may also be a Multiton if there are many log files for " -"several purposes)" -msgstr "" - -#: ../../Creational/Singleton/README.rst:19 -msgid "" -"Lock file for the application (there is only one in the filesystem " -"...)" -msgstr "" - -#: ../../Creational/Singleton/README.rst:22 -msgid "UML Diagram" -msgstr "" - -#: ../../Creational/Singleton/README.rst:26 -msgid "Alt Singleton UML Diagram" -msgstr "" - -#: ../../Creational/Singleton/README.rst:29 -msgid "Code" -msgstr "" - -#: ../../Creational/Singleton/README.rst:32 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Creational/Singleton/README.rst:40 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Creational/StaticFactory/README.pot b/locale/template/LC_MESSAGES/Creational/StaticFactory/README.pot deleted file mode 100644 index 20a9d4e..0000000 --- a/locale/template/LC_MESSAGES/Creational/StaticFactory/README.pot +++ /dev/null @@ -1,56 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Creational/StaticFactory/README.rst:1 -msgid "Static Factory" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:7 -msgid "" -"Similar to the AbstractFactory, this pattern is used to create series of " -"related or dependent objects. The difference between this and the " -"abstract factory pattern is that the static factory pattern uses just " -"one static method to create all types of objects it can create. It is " -"usually named ``factory`` or ``build``." -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:13 -msgid "Examples" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:16 -msgid "" -"Zend Framework: ``Zend_Cache_Backend`` or ``_Frontend`` use a factory " -"method create cache backends or frontends" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:19 -msgid "UML Diagram" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:23 -msgid "Alt StaticFactory UML Diagram" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:26 -msgid "Code" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:29 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:55 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/More/Delegation/README.pot b/locale/template/LC_MESSAGES/More/Delegation/README.pot deleted file mode 100644 index a8b3182..0000000 --- a/locale/template/LC_MESSAGES/More/Delegation/README.pot +++ /dev/null @@ -1,54 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../More/Delegation/README.rst:1 -msgid "Delegation" -msgstr "" - -#: ../../More/Delegation/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../More/Delegation/README.rst:7 -msgid "" -"Demonstrate the Delegator pattern, where an object, instead of performing one " -"of its stated tasks, delegates that task to an associated helper object. In " -"this case TeamLead professes to writeCode and Usage uses this, while TeamLead " -"delegates writeCode to JuniorDeveloper's writeBadCode function. This inverts " -"the responsibility so that Usage is unknowingly executing writeBadCode." -msgstr "" - -#: ../../More/Delegation/README.rst:13 -msgid "Examples" -msgstr "" - -#: ../../More/Delegation/README.rst:16 -msgid "Please review JuniorDeveloper.php, TeamLead.php, and then Usage.php to see it all tied together." -msgstr "" - -#: ../../More/Delegation/README.rst:18 -msgid "UML Diagram" -msgstr "" - -#: ../../More/Delegation/README.rst:22 -msgid "Alt Delegation UML Diagram" -msgstr "" - -#: ../../More/Delegation/README.rst:25 -msgid "Code" -msgstr "" - -#: ../../More/Delegation/README.rst:28 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../More/Delegation/README.rst:42 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/More/EAV/README.pot b/locale/template/LC_MESSAGES/More/EAV/README.pot deleted file mode 100644 index 585e1aa..0000000 --- a/locale/template/LC_MESSAGES/More/EAV/README.pot +++ /dev/null @@ -1,49 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../More/EAV/README.rst:1 -msgid "Entity-Attribute-Value (EAV)" -msgstr "" - -#: ../../More/EAV/README.rst:4 -msgid "The Entity–attribute–value (EAV) pattern in order to implement EAV model with PHP." -msgstr "" - -#: ../../More/EAV/README.rst:6 -msgid "Purpose" -msgstr "" - -#: ../../More/EAV/README.rst:9 -msgid "" -"The Entity–attribute–value (EAV) model is a data model to describe entities " -"where the number of attributes (properties, parameters) that can be used " -"to describe them is potentially vast, but the number that will actually apply " -"to a given entity is relatively modest." -msgstr "" - -#: ../../More/EAV/README.rst:14 -msgid "UML Diagram" -msgstr "" - -#: ../../More/EAV/README.rst:18 -msgid "EAV UML Diagram" -msgstr "" - -#: ../../More/EAV/README.rst:21 -msgid "Code" -msgstr "" - -#: ../../More/EAV/README.rst:24 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../More/EAV/README.rst:44 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/More/README.pot b/locale/template/LC_MESSAGES/More/README.pot deleted file mode 100644 index 78dfff1..0000000 --- a/locale/template/LC_MESSAGES/More/README.pot +++ /dev/null @@ -1,13 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../More/README.rst:1 -msgid "More" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/More/Repository/README.pot b/locale/template/LC_MESSAGES/More/Repository/README.pot deleted file mode 100644 index df5f973..0000000 --- a/locale/template/LC_MESSAGES/More/Repository/README.pot +++ /dev/null @@ -1,62 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../More/Repository/README.rst:1 -msgid "Repository" -msgstr "" - -#: ../../More/Repository/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../More/Repository/README.rst:7 -msgid "" -"Mediates between the domain and data mapping layers using a " -"collection-like interface for accessing domain objects. Repository " -"encapsulates the set of objects persisted in a data store and the " -"operations performed over them, providing a more object-oriented view of " -"the persistence layer. Repository also supports the objective of " -"achieving a clean separation and one-way dependency between the domain " -"and data mapping layers." -msgstr "" - -#: ../../More/Repository/README.rst:15 -msgid "Examples" -msgstr "" - -#: ../../More/Repository/README.rst:18 -msgid "" -"Doctrine 2 ORM: there is Repository that mediates between Entity and " -"DBAL and contains methods to retrieve objects" -msgstr "" - -#: ../../More/Repository/README.rst:20 -msgid "Laravel Framework" -msgstr "" - -#: ../../More/Repository/README.rst:22 -msgid "UML Diagram" -msgstr "" - -#: ../../More/Repository/README.rst:26 -msgid "Alt Repository UML Diagram" -msgstr "" - -#: ../../More/Repository/README.rst:29 -msgid "Code" -msgstr "" - -#: ../../More/Repository/README.rst:32 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../More/Repository/README.rst:52 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/More/ServiceLocator/README.pot b/locale/template/LC_MESSAGES/More/ServiceLocator/README.pot deleted file mode 100644 index 1ac7074..0000000 --- a/locale/template/LC_MESSAGES/More/ServiceLocator/README.pot +++ /dev/null @@ -1,67 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../More/ServiceLocator/README.rst:1 -msgid "Service Locator" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:7 -msgid "" -"To implement a loosely coupled architecture in order to get better " -"testable, maintainable and extendable code. DI pattern and Service " -"Locator pattern are an implementation of the Inverse of Control pattern." -msgstr "" - -#: ../../More/ServiceLocator/README.rst:11 -msgid "Usage" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:14 -msgid "" -"With ``ServiceLocator`` you can register a service for a given " -"interface. By using the interface you can retrieve the service and use " -"it in the classes of the application without knowing its implementation. " -"You can configure and inject the Service Locator object on bootstrap." -msgstr "" - -#: ../../More/ServiceLocator/README.rst:19 -msgid "Examples" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:22 -msgid "" -"Zend Framework 2 uses Service Locator to create and share services " -"used in the framework(i.e. EventManager, ModuleManager, all custom " -"user services provided by modules, etc...)" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:26 -msgid "UML Diagram" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:30 -msgid "Alt ServiceLocator UML Diagram" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:33 -msgid "Code" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:36 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:50 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/README.pot b/locale/template/LC_MESSAGES/README.pot deleted file mode 100644 index 92b1114..0000000 --- a/locale/template/LC_MESSAGES/README.pot +++ /dev/null @@ -1,71 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../README.rst:4 -msgid "DesignPatternsPHP" -msgstr "" - -#: ../../README.rst:9 -msgid "Documentation Status" -msgstr "" - -#: ../../README.rst:11 -msgid "" -"This is a collection of known `design patterns`_ and some sample code how " -"to implement them in PHP. Every pattern has a small list of examples " -"(most of them from Zend Framework, Symfony2 or Doctrine2 as I'm most " -"familiar with this software)." -msgstr "" - -#: ../../README.rst:16 -msgid "" -"I think the problem with patterns is that often people do know them but " -"don't know when to apply which." -msgstr "" - -#: ../../README.rst:19 -msgid "Patterns" -msgstr "" - -#: ../../README.rst:22 -msgid "" -"The patterns can be structured in roughly three different categories. " -"Please click on **the title of every pattern's page** for a full explanation " -"of the pattern on Wikipedia." -msgstr "" - -#: ../../README.rst:34 -msgid "Contribute" -msgstr "" - -#: ../../README.rst:37 -msgid "" -"If you encounter any bugs or missing translations, please feel free " -"to fork and send a pull request with your changes. " -"To establish a consistent code quality, please check your code using " -"`PHP CodeSniffer`_ against `PSR2 standard`_ " -"using ``./vendor/bin/phpcs -p --standard=PSR2 --ignore=vendor .``." -msgstr "" - -#: ../../README.rst:69 -msgid "`design patterns`" -msgstr "" - -#: ../../README.rst:70 -msgid "`PHP CodeSniffer`" -msgstr "" - -#: ../../README.rst:71 -msgid "`PSR2 standard`" -msgstr "" - -#: ../../README.rst:73 -msgid "`contributors`" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Structural/Adapter/README.pot b/locale/template/LC_MESSAGES/Structural/Adapter/README.pot deleted file mode 100644 index ffaf97c..0000000 --- a/locale/template/LC_MESSAGES/Structural/Adapter/README.pot +++ /dev/null @@ -1,59 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Structural/Adapter/README.rst:1 -msgid "Adapter" -msgstr "" - -#: ../../Structural/Adapter/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Structural/Adapter/README.rst:7 -msgid "" -"To translate one interface for a class into a compatible interface. An " -"adapter allows classes to work together that normally could not because " -"of incompatible interfaces by providing its interface to clients while " -"using the original interface." -msgstr "" - -#: ../../Structural/Adapter/README.rst:12 -msgid "Examples" -msgstr "" - -#: ../../Structural/Adapter/README.rst:15 -msgid "DB Client libraries adapter" -msgstr "" - -#: ../../Structural/Adapter/README.rst:16 -msgid "" -"using multiple different webservices and adapters normalize data so " -"that the outcome is the same for all" -msgstr "" - -#: ../../Structural/Adapter/README.rst:19 -msgid "UML Diagram" -msgstr "" - -#: ../../Structural/Adapter/README.rst:23 -msgid "Alt Adapter UML Diagram" -msgstr "" - -#: ../../Structural/Adapter/README.rst:26 -msgid "Code" -msgstr "" - -#: ../../Structural/Adapter/README.rst:29 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Structural/Adapter/README.rst:61 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Structural/Bridge/README.pot b/locale/template/LC_MESSAGES/Structural/Bridge/README.pot deleted file mode 100644 index d9787fc..0000000 --- a/locale/template/LC_MESSAGES/Structural/Bridge/README.pot +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Structural/Bridge/README.rst:1 -msgid "Bridge" -msgstr "" - -#: ../../Structural/Bridge/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Structural/Bridge/README.rst:7 -msgid "" -"Decouple an abstraction from its implementation so that the two can vary " -"independently." -msgstr "" - -#: ../../Structural/Bridge/README.rst:10 -msgid "Examples" -msgstr "" - -#: ../../Structural/Bridge/README.rst:13 -msgid "" -"`Symfony " -"DoctrineBridge `__" -msgstr "" - -#: ../../Structural/Bridge/README.rst:16 -msgid "UML Diagram" -msgstr "" - -#: ../../Structural/Bridge/README.rst:20 -msgid "Alt Bridge UML Diagram" -msgstr "" - -#: ../../Structural/Bridge/README.rst:23 -msgid "Code" -msgstr "" - -#: ../../Structural/Bridge/README.rst:26 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Structural/Bridge/README.rst:58 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Structural/Composite/README.pot b/locale/template/LC_MESSAGES/Structural/Composite/README.pot deleted file mode 100644 index 9419f7d..0000000 --- a/locale/template/LC_MESSAGES/Structural/Composite/README.pot +++ /dev/null @@ -1,60 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Structural/Composite/README.rst:1 -msgid "Composite" -msgstr "" - -#: ../../Structural/Composite/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Structural/Composite/README.rst:7 -msgid "" -"To treat a group of objects the same way as a single instance of the " -"object." -msgstr "" - -#: ../../Structural/Composite/README.rst:10 -msgid "Examples" -msgstr "" - -#: ../../Structural/Composite/README.rst:13 -msgid "" -"a form class instance handles all its form elements like a single " -"instance of the form, when ``render()`` is called, it subsequently " -"runs through all its child elements and calls ``render()`` on them" -msgstr "" - -#: ../../Structural/Composite/README.rst:16 -msgid "" -"``Zend_Config``: a tree of configuration options, each one is a " -"``Zend_Config`` object itself" -msgstr "" - -#: ../../Structural/Composite/README.rst:19 -msgid "UML Diagram" -msgstr "" - -#: ../../Structural/Composite/README.rst:23 -msgid "Alt Composite UML Diagram" -msgstr "" - -#: ../../Structural/Composite/README.rst:26 -msgid "Code" -msgstr "" - -#: ../../Structural/Composite/README.rst:29 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Structural/Composite/README.rst:55 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Structural/DataMapper/README.pot b/locale/template/LC_MESSAGES/Structural/DataMapper/README.pot deleted file mode 100644 index 8de3978..0000000 --- a/locale/template/LC_MESSAGES/Structural/DataMapper/README.pot +++ /dev/null @@ -1,66 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Structural/DataMapper/README.rst:1 -msgid "Data Mapper" -msgstr "" - -#: ../../Structural/DataMapperREADME.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Structural/DataMapperREADME.rst:7 -msgid "" -"A Data Mapper, is a Data Access Layer that performs bidirectional " -"transfer of data between a persistent data store (often a relational " -"database) and an in memory data representation (the domain layer). The " -"goal of the pattern is to keep the in memory representation and the " -"persistent data store independent of each other and the data mapper " -"itself. The layer is composed of one or more mappers (or Data Access " -"Objects), performing the data transfer. Mapper implementations vary in " -"scope. Generic mappers will handle many different domain entity types, " -"dedicated mappers will handle one or a few." -msgstr "" - -#: ../../Structural/DataMapperREADME.rst:17 -msgid "" -"The key point of this pattern is, unlike Active Record pattern, the data " -"model follows Single Responsibility Principle." -msgstr "" - -#: ../../Structural/DataMapperREADME.rst:20 -msgid "Examples" -msgstr "" - -#: ../../Structural/DataMapperREADME.rst:23 -msgid "" -"DB Object Relational Mapper (ORM) : Doctrine2 uses DAO named as " -"\"EntityRepository\"" -msgstr "" - -#: ../../Structural/DataMapperREADME.rst:26 -msgid "UML Diagram" -msgstr "" - -#: ../../Structural/DataMapperREADME.rst:30 -msgid "Alt DataMapper UML Diagram" -msgstr "" - -#: ../../Structural/DataMapperREADME.rst:33 -msgid "Code" -msgstr "" - -#: ../../Structural/DataMapperREADME.rst:36 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Structural/DataMapperREADME.rst:56 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Structural/Decorator/README.pot b/locale/template/LC_MESSAGES/Structural/Decorator/README.pot deleted file mode 100644 index cf1d44f..0000000 --- a/locale/template/LC_MESSAGES/Structural/Decorator/README.pot +++ /dev/null @@ -1,99 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Structural/Decorator/README.rst:1 -msgid "Decorator" -msgstr "" - -#: ../../Structural/Decorator/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Structural/Decorator/README.rst:7 -msgid "To dynamically add new functionality to class instances." -msgstr "" - -#: ../../Structural/Decorator/README.rst:9 -msgid "Examples" -msgstr "" - -#: ../../Structural/Decorator/README.rst:12 -msgid "Zend Framework: decorators for ``Zend_Form_Element`` instances" -msgstr "" - -#: ../../Structural/Decorator/README.rst:13 -msgid "" -"Web Service Layer: Decorators JSON and XML for a REST service (in " -"this case, only one of these should be allowed of course)" -msgstr "" - -#: ../../Structural/Decorator/README.rst:16 -msgid "UML Diagram" -msgstr "" - -#: ../../Structural/Decorator/README.rst:20 -msgid "Alt Decorator UML Diagram" -msgstr "" - -#: ../../Structural/Decorator/README.rst:23 -msgid "Code" -msgstr "" - -#: ../../Structural/Decorator/README.rst:26 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Structural/Decorator/README.rst:58 -msgid "Test" -msgstr "" - -#: ../../Structural/Decorator/README.rst: -msgid "" -msgstr "" - -#: ../../Structural/Decorator/README.rst: -msgid "" -msgstr "" - -#: ../../Structural/Decorator/README.rst: -msgid "" -msgstr "" - -#: ../../Structural/Decorator/README.rst: -msgid "" -msgstr "" - -#: ../../Structural/Decorator/README.rst: -msgid "" -msgstr "" - -#: ../../Structural/Decorator/README.rst: -msgid "" -msgstr "" - -#: ../../Structural/Decorator/README.rst: -msgid "" -msgstr "" - -#: ../../Structural/Decorator/README.rst: -msgid "" -msgstr "" - -#: ../../Structural/Decorator/README.rst: -msgid "" -msgstr "" - -#: ../../Structural/Decorator/README.rst: -msgid "" -msgstr "" - -#: ../../Structural/Decorator/README.rst: -msgid "" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Structural/DependencyInjection/README.pot b/locale/template/LC_MESSAGES/Structural/DependencyInjection/README.pot deleted file mode 100644 index 87996d9..0000000 --- a/locale/template/LC_MESSAGES/Structural/DependencyInjection/README.pot +++ /dev/null @@ -1,74 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Structural/DependencyInjection/README.rst:1 -msgid "Dependency Injection" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:7 -msgid "" -"To implement a loosely coupled architecture in order to get better " -"testable, maintainable and extendable code." -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:10 -msgid "Usage" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:13 -msgid "" -"``DatabaseConfiguration`` gets injected and ``DatabaseConnection`` will get all that it " -"needs from ``$config``. Without DI, the configuration would be created " -"directly in ``DatabaseConnection``, which is not very good for testing and " -"extending it." -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:18 -msgid "Examples" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:21 -msgid "" -"The Doctrine2 ORM uses dependency injection e.g. for configuration " -"that is injected into a ``Connection`` object. For testing purposes, " -"one can easily create a mock object of the configuration and inject " -"that into the ``Connection`` object" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:25 -msgid "" -"Symfony and Zend Framework 2 already have containers for DI that " -"create objects via a configuration array and inject them where needed " -"(i.e. in Controllers)" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:29 -msgid "UML Diagram" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:33 -msgid "Alt DependencyInjection UML Diagram" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:36 -msgid "Code" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:39 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:53 -msgid "Test" -msgstr "" diff --git a/locale/template/LC_MESSAGES/Structural/Facade/README.pot b/locale/template/LC_MESSAGES/Structural/Facade/README.pot deleted file mode 100644 index c519aee..0000000 --- a/locale/template/LC_MESSAGES/Structural/Facade/README.pot +++ /dev/null @@ -1,73 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Structural/Facade/README.rst:1 -msgid "Facade" -msgstr "" - -#: ../../Structural/Facade/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Structural/Facade/README.rst:7 -msgid "" -"The primary goal of a Facade Pattern is not to avoid you to read the " -"manual of a complex API. It's only a side-effect. The first goal is to " -"reduce coupling and follow the Law of Demeter." -msgstr "" - -#: ../../Structural/Facade/README.rst:11 -msgid "" -"A Facade is meant to decouple a client and a sub-system by embedding " -"many (but sometimes just one) interface, and of course to reduce " -"complexity." -msgstr "" - -#: ../../Structural/Facade/README.rst:15 -msgid "A facade does not forbid you the access to the sub-system" -msgstr "" - -#: ../../Structural/Facade/README.rst:16 -msgid "You can (you should) have multiple facades for one sub-system" -msgstr "" - -#: ../../Structural/Facade/README.rst:18 -msgid "" -"That's why a good facade has no ``new`` in it. If there are multiple " -"creations for each method, it is not a Facade, it's a Builder or a " -"[Abstract\|Static\|Simple] Factory [Method]." -msgstr "" - -#: ../../Structural/Facade/README.rst:22 -msgid "" -"The best facade has no ``new`` and a constructor with " -"interface-type-hinted parameters. If you need creation of new instances, " -"use a Factory as argument." -msgstr "" - -#: ../../Structural/Facade/README.rst:26 -msgid "UML Diagram" -msgstr "" - -#: ../../Structural/Facade/README.rst:30 -msgid "Alt Facade UML Diagram" -msgstr "" - -#: ../../Structural/Facade/README.rst:33 -msgid "Code" -msgstr "" - -#: ../../Structural/Facade/README.rst:36 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Structural/Facade/README.rst:56 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Structural/FluentInterface/README.pot b/locale/template/LC_MESSAGES/Structural/FluentInterface/README.pot deleted file mode 100644 index b74af4b..0000000 --- a/locale/template/LC_MESSAGES/Structural/FluentInterface/README.pot +++ /dev/null @@ -1,57 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Structural/FluentInterface/README.rst:1 -msgid "Fluent Interface" -msgstr "" - -#: ../../Structural/FluentInterface/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Structural/FluentInterface/README.rst:7 -msgid "" -"To write code that is easy readable just like sentences in a natural " -"language (like English)." -msgstr "" - -#: ../../Structural/FluentInterface/README.rst:13 -msgid "" -"Doctrine2's QueryBuilder works something like that example class " -"below" -msgstr "" - -#: ../../Structural/FluentInterface/README.rst:15 -msgid "PHPUnit uses fluent interfaces to build mock objects" -msgstr "" - -#: ../../Structural/FluentInterface/README.rst:16 -msgid "Yii Framework: CDbCommand and CActiveRecord use this pattern, too" -msgstr "" - -#: ../../Structural/FluentInterface/README.rst:18 -msgid "UML Diagram" -msgstr "" - -#: ../../Structural/FluentInterface/README.rst:22 -msgid "Alt FluentInterface UML Diagram" -msgstr "" - -#: ../../Structural/FluentInterface/README.rst:25 -msgid "Code" -msgstr "" - -#: ../../Structural/FluentInterface/README.rst:28 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Structural/FluentInterface/README.rst:36 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Structural/Flyweight/README.pot b/locale/template/LC_MESSAGES/Structural/Flyweight/README.pot deleted file mode 100644 index b5c6bde..0000000 --- a/locale/template/LC_MESSAGES/Structural/Flyweight/README.pot +++ /dev/null @@ -1,44 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Structural/Flyweight/README.rst:1 -msgid "Flyweight" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:7 -msgid "" -"To minimise memory usage, a Flyweight shares as much as possible memory with similar objects. It " -"is needed when a large amount of objects is used that don't differ much in state. A common practice is " -"to hold state in external data structures and pass them to the flyweight object when needed." -msgstr "" - -#: ../../Structural/Flyweight/README.rst:11 -msgid "UML Diagram" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:15 -msgid "Alt Flyweight UML Diagram" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:18 -msgid "Code" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:21 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:41 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Structural/Proxy/README.pot b/locale/template/LC_MESSAGES/Structural/Proxy/README.pot deleted file mode 100644 index 836599c..0000000 --- a/locale/template/LC_MESSAGES/Structural/Proxy/README.pot +++ /dev/null @@ -1,52 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Structural/Proxy/README.rst:1 -msgid "Proxy" -msgstr "" - -#: ../../Structural/Proxy/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Structural/Proxy/README.rst:7 -msgid "To interface to anything that is expensive or impossible to duplicate." -msgstr "" - -#: ../../Structural/Proxy/README.rst:9 -msgid "Examples" -msgstr "" - -#: ../../Structural/Proxy/README.rst:12 -msgid "" -"Doctrine2 uses proxies to implement framework magic (e.g. lazy " -"initialization) in them, while the user still works with his own " -"entity classes and will never use nor touch the proxies" -msgstr "" - -#: ../../Structural/Proxy/README.rst:16 -msgid "UML Diagram" -msgstr "" - -#: ../../Structural/Proxy/README.rst:20 -msgid "Alt Proxy UML Diagram" -msgstr "" - -#: ../../Structural/Proxy/README.rst:23 -msgid "Code" -msgstr "" - -#: ../../Structural/Proxy/README.rst:26 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Structural/Proxy/README.rst:40 -msgid "Test" -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Structural/README.pot b/locale/template/LC_MESSAGES/Structural/README.pot deleted file mode 100644 index 7761812..0000000 --- a/locale/template/LC_MESSAGES/Structural/README.pot +++ /dev/null @@ -1,20 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Structural/README.rst:1 -msgid "Structural" -msgstr "" - -#: ../../Structural/README.rst:4 -msgid "" -"In Software Engineering, Structural Design Patterns are Design Patterns " -"that ease the design by identifying a simple way to realize " -"relationships between entities." -msgstr "" \ No newline at end of file diff --git a/locale/template/LC_MESSAGES/Structural/Registry/README.pot b/locale/template/LC_MESSAGES/Structural/Registry/README.pot deleted file mode 100644 index c580001..0000000 --- a/locale/template/LC_MESSAGES/Structural/Registry/README.pot +++ /dev/null @@ -1,61 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-19 17:00-0500\n" -"Last-Translator: Axel Pardemann \n" -"Content-Type: text/plain; " -"charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../Structural/Registry/README.rst:1 -msgid "Registry" -msgstr "" - -#: ../../Structural/Registry/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../Structural/Registry/README.rst:7 -msgid "" -"To implement a central storage for objects often used throughout the " -"application, is typically implemented using an abstract class with only " -"static methods (or using the Singleton pattern). Remember that this introduces " -"global state, which should be avoided at all times! Instead implement it using Dependency Injection!" -msgstr "" - -#: ../../Structural/Registry/README.rst:12 -msgid "Examples" -msgstr "" - -#: ../../Structural/Registry/README.rst:15 -msgid "" -"Zend Framework 1: ``Zend_Registry`` holds the application's logger " -"object, front controller etc." -msgstr "" - -#: ../../Structural/Registry/README.rst:17 -msgid "" -"Yii Framework: ``CWebApplication`` holds all the application " -"components, such as ``CWebUser``, ``CUrlManager``, etc." -msgstr "" - -#: ../../Structural/Registry/README.rst:20 -msgid "UML Diagram" -msgstr "" - -#: ../../Structural/Registry/README.rst:24 -msgid "Alt Registry UML Diagram" -msgstr "" - -#: ../../Structural/Registry/README.rst:27 -msgid "Code" -msgstr "" - -#: ../../Structural/Registry/README.rst:30 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../Structural/Registry/README.rst:38 -msgid "Test" -msgstr "" \ No newline at end of file From b4a5598ad210ddf5db30e4e72fbafe622548440a Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Thu, 14 Jun 2018 21:08:22 +0200 Subject: [PATCH 15/45] file names must not be translated --- .../ChainOfResponsibilities/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Command/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Iterator/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Mediator/README.po | 28 ------------ .../LC_MESSAGES/Behavioral/Memento/README.po | 16 ------- .../Behavioral/NullObject/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Observer/README.po | 12 ----- .../Behavioral/Specification/README.po | 32 -------------- .../ca/LC_MESSAGES/Behavioral/State/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Strategy/README.po | 20 --------- .../Behavioral/TemplateMethod/README.po | 16 ------- .../LC_MESSAGES/Behavioral/Visitor/README.po | 24 ---------- .../Creational/AbstractFactory/README.po | 44 ------------------- .../LC_MESSAGES/Creational/Builder/README.po | 44 ------------------- .../Creational/FactoryMethod/README.po | 32 -------------- .../LC_MESSAGES/Creational/Multiton/README.po | 4 -- .../ca/LC_MESSAGES/Creational/Pool/README.po | 20 --------- .../Creational/Prototype/README.po | 16 ------- .../Creational/SimpleFactory/README.po | 20 --------- .../Creational/Singleton/README.po | 8 ---- .../Creational/StaticFactory/README.po | 20 --------- .../ca/LC_MESSAGES/More/Delegation/README.po | 16 ------- locale/ca/LC_MESSAGES/More/EAV/README.po | 12 ----- .../ca/LC_MESSAGES/More/Repository/README.po | 16 ------- .../LC_MESSAGES/More/ServiceLocator/README.po | 28 ------------ .../LC_MESSAGES/Structural/Adapter/README.po | 24 ---------- .../LC_MESSAGES/Structural/Bridge/README.po | 28 ------------ .../Structural/Composite/README.po | 20 --------- .../Structural/DataMapper/README.po | 12 ----- .../Structural/Decorator/README.po | 24 ---------- .../Structural/DependencyInjection/README.po | 24 ---------- .../LC_MESSAGES/Structural/Facade/README.po | 16 ------- .../Structural/FluentInterface/README.po | 8 ---- .../Structural/Flyweight/README.po | 16 ------- .../ca/LC_MESSAGES/Structural/Proxy/README.po | 8 ---- .../LC_MESSAGES/Structural/Registry/README.po | 8 ---- .../ChainOfResponsibilities/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Command/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Iterator/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Mediator/README.po | 28 ------------ .../LC_MESSAGES/Behavioral/Memento/README.po | 16 ------- .../Behavioral/NullObject/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Observer/README.po | 12 ----- .../Behavioral/Specification/README.po | 32 -------------- .../de/LC_MESSAGES/Behavioral/State/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Strategy/README.po | 20 --------- .../Behavioral/TemplateMethod/README.po | 16 ------- .../LC_MESSAGES/Behavioral/Visitor/README.po | 24 ---------- .../Creational/AbstractFactory/README.po | 44 ------------------- .../LC_MESSAGES/Creational/Builder/README.po | 44 ------------------- .../Creational/FactoryMethod/README.po | 32 -------------- .../LC_MESSAGES/Creational/Multiton/README.po | 4 -- .../de/LC_MESSAGES/Creational/Pool/README.po | 20 --------- .../Creational/Prototype/README.po | 16 ------- .../Creational/SimpleFactory/README.po | 20 --------- .../Creational/Singleton/README.po | 8 ---- .../Creational/StaticFactory/README.po | 20 --------- .../de/LC_MESSAGES/More/Delegation/README.po | 16 ------- locale/de/LC_MESSAGES/More/EAV/README.po | 12 ----- .../de/LC_MESSAGES/More/Repository/README.po | 16 ------- .../LC_MESSAGES/More/ServiceLocator/README.po | 28 ------------ .../LC_MESSAGES/Structural/Adapter/README.po | 24 ---------- .../LC_MESSAGES/Structural/Bridge/README.po | 28 ------------ .../Structural/Composite/README.po | 20 --------- .../Structural/DataMapper/README.po | 12 ----- .../Structural/Decorator/README.po | 24 ---------- .../Structural/DependencyInjection/README.po | 24 ---------- .../LC_MESSAGES/Structural/Facade/README.po | 16 ------- .../Structural/FluentInterface/README.po | 8 ---- .../Structural/Flyweight/README.po | 16 ------- .../de/LC_MESSAGES/Structural/Proxy/README.po | 8 ---- .../LC_MESSAGES/Structural/Registry/README.po | 8 ---- .../ChainOfResponsibilities/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Command/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Iterator/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Mediator/README.po | 28 ------------ .../LC_MESSAGES/Behavioral/Memento/README.po | 16 ------- .../Behavioral/NullObject/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Observer/README.po | 12 ----- .../Behavioral/Specification/README.po | 32 -------------- .../es/LC_MESSAGES/Behavioral/State/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Strategy/README.po | 20 --------- .../Behavioral/TemplateMethod/README.po | 16 ------- .../LC_MESSAGES/Behavioral/Visitor/README.po | 24 ---------- .../Creational/AbstractFactory/README.po | 44 ------------------- .../LC_MESSAGES/Creational/Builder/README.po | 44 ------------------- .../Creational/FactoryMethod/README.po | 32 -------------- .../LC_MESSAGES/Creational/Multiton/README.po | 4 -- .../es/LC_MESSAGES/Creational/Pool/README.po | 20 --------- .../Creational/Prototype/README.po | 16 ------- .../Creational/SimpleFactory/README.po | 20 --------- .../Creational/Singleton/README.po | 8 ---- .../Creational/StaticFactory/README.po | 20 --------- .../es/LC_MESSAGES/More/Delegation/README.po | 16 ------- locale/es/LC_MESSAGES/More/EAV/README.po | 12 ----- .../es/LC_MESSAGES/More/Repository/README.po | 16 ------- .../LC_MESSAGES/More/ServiceLocator/README.po | 28 ------------ .../LC_MESSAGES/Structural/Adapter/README.po | 24 ---------- .../LC_MESSAGES/Structural/Bridge/README.po | 28 ------------ .../Structural/Composite/README.po | 20 --------- .../Structural/DataMapper/README.po | 12 ----- .../Structural/Decorator/README.po | 24 ---------- .../Structural/DependencyInjection/README.po | 24 ---------- .../LC_MESSAGES/Structural/Facade/README.po | 16 ------- .../Structural/FluentInterface/README.po | 8 ---- .../Structural/Flyweight/README.po | 16 ------- .../es/LC_MESSAGES/Structural/Proxy/README.po | 8 ---- .../LC_MESSAGES/Structural/Registry/README.po | 8 ---- .../ChainOfResponsibilities/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Command/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Iterator/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Mediator/README.po | 28 ------------ .../LC_MESSAGES/Behavioral/Memento/README.po | 16 ------- .../Behavioral/NullObject/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Observer/README.po | 12 ----- .../Behavioral/Specification/README.po | 32 -------------- .../pl/LC_MESSAGES/Behavioral/State/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Strategy/README.po | 20 --------- .../Behavioral/TemplateMethod/README.po | 16 ------- .../LC_MESSAGES/Behavioral/Visitor/README.po | 24 ---------- .../Creational/AbstractFactory/README.po | 44 ------------------- .../LC_MESSAGES/Creational/Builder/README.po | 44 ------------------- .../Creational/FactoryMethod/README.po | 32 -------------- .../LC_MESSAGES/Creational/Multiton/README.po | 4 -- .../pl/LC_MESSAGES/Creational/Pool/README.po | 20 --------- .../Creational/Prototype/README.po | 16 ------- .../Creational/SimpleFactory/README.po | 20 --------- .../Creational/Singleton/README.po | 8 ---- .../Creational/StaticFactory/README.po | 20 --------- .../pl/LC_MESSAGES/More/Delegation/README.po | 16 ------- locale/pl/LC_MESSAGES/More/EAV/README.po | 12 ----- .../pl/LC_MESSAGES/More/Repository/README.po | 16 ------- .../LC_MESSAGES/More/ServiceLocator/README.po | 28 ------------ .../LC_MESSAGES/Structural/Adapter/README.po | 24 ---------- .../LC_MESSAGES/Structural/Bridge/README.po | 28 ------------ .../Structural/Composite/README.po | 20 --------- .../Structural/DataMapper/README.po | 12 ----- .../Structural/Decorator/README.po | 24 ---------- .../Structural/DependencyInjection/README.po | 24 ---------- .../LC_MESSAGES/Structural/Facade/README.po | 16 ------- .../Structural/FluentInterface/README.po | 8 ---- .../Structural/Flyweight/README.po | 16 ------- .../pl/LC_MESSAGES/Structural/Proxy/README.po | 8 ---- .../LC_MESSAGES/Structural/Registry/README.po | 8 ---- .../ChainOfResponsibilities/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Command/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Iterator/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Mediator/README.po | 28 ------------ .../LC_MESSAGES/Behavioral/Memento/README.po | 16 ------- .../Behavioral/NullObject/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Observer/README.po | 12 ----- .../Behavioral/Specification/README.po | 32 -------------- .../LC_MESSAGES/Behavioral/State/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Strategy/README.po | 20 --------- .../Behavioral/TemplateMethod/README.po | 16 ------- .../LC_MESSAGES/Behavioral/Visitor/README.po | 24 ---------- .../Creational/AbstractFactory/README.po | 44 ------------------- .../LC_MESSAGES/Creational/Builder/README.po | 44 ------------------- .../Creational/FactoryMethod/README.po | 32 -------------- .../LC_MESSAGES/Creational/Multiton/README.po | 4 -- .../LC_MESSAGES/Creational/Pool/README.po | 20 --------- .../Creational/Prototype/README.po | 16 ------- .../Creational/SimpleFactory/README.po | 20 --------- .../Creational/Singleton/README.po | 8 ---- .../Creational/StaticFactory/README.po | 20 --------- .../LC_MESSAGES/More/Delegation/README.po | 16 ------- .../LC_MESSAGES/More/Repository/README.po | 16 ------- .../LC_MESSAGES/More/ServiceLocator/README.po | 28 ------------ .../LC_MESSAGES/Structural/Adapter/README.po | 24 ---------- .../LC_MESSAGES/Structural/Bridge/README.po | 28 ------------ .../Structural/Composite/README.po | 20 --------- .../Structural/DataMapper/README.po | 12 ----- .../Structural/Decorator/README.po | 24 ---------- .../Structural/DependencyInjection/README.po | 24 ---------- .../LC_MESSAGES/Structural/Facade/README.po | 16 ------- .../Structural/FluentInterface/README.po | 8 ---- .../Structural/Flyweight/README.po | 16 ------- .../LC_MESSAGES/Structural/Proxy/README.po | 8 ---- .../LC_MESSAGES/Structural/Registry/README.po | 8 ---- .../ChainOfResponsibilities/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Command/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Iterator/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Mediator/README.po | 28 ------------ .../LC_MESSAGES/Behavioral/Memento/README.po | 16 ------- .../Behavioral/NullObject/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Observer/README.po | 12 ----- .../Behavioral/Specification/README.po | 32 -------------- .../ru/LC_MESSAGES/Behavioral/State/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Strategy/README.po | 20 --------- .../Behavioral/TemplateMethod/README.po | 16 ------- .../LC_MESSAGES/Behavioral/Visitor/README.po | 24 ---------- .../Creational/AbstractFactory/README.po | 44 ------------------- .../LC_MESSAGES/Creational/Builder/README.po | 44 ------------------- .../Creational/FactoryMethod/README.po | 32 -------------- .../LC_MESSAGES/Creational/Multiton/README.po | 4 -- .../ru/LC_MESSAGES/Creational/Pool/README.po | 20 --------- .../Creational/Prototype/README.po | 16 ------- .../Creational/SimpleFactory/README.po | 20 --------- .../Creational/Singleton/README.po | 8 ---- .../Creational/StaticFactory/README.po | 20 --------- .../ru/LC_MESSAGES/More/Delegation/README.po | 16 ------- locale/ru/LC_MESSAGES/More/EAV/README.po | 12 ----- .../ru/LC_MESSAGES/More/Repository/README.po | 16 ------- .../LC_MESSAGES/More/ServiceLocator/README.po | 28 ------------ .../LC_MESSAGES/Structural/Adapter/README.po | 24 ---------- .../LC_MESSAGES/Structural/Bridge/README.po | 28 ------------ .../Structural/Composite/README.po | 20 --------- .../Structural/DataMapper/README.po | 12 ----- .../Structural/Decorator/README.po | 24 ---------- .../Structural/DependencyInjection/README.po | 24 ---------- .../LC_MESSAGES/Structural/Facade/README.po | 16 ------- .../Structural/FluentInterface/README.po | 8 ---- .../Structural/Flyweight/README.po | 16 ------- .../ru/LC_MESSAGES/Structural/Proxy/README.po | 8 ---- .../LC_MESSAGES/Structural/Registry/README.po | 8 ---- .../ChainOfResponsibilities/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Command/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Iterator/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Mediator/README.po | 28 ------------ .../LC_MESSAGES/Behavioral/Memento/README.po | 16 ------- .../Behavioral/NullObject/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Observer/README.po | 12 ----- .../Behavioral/Specification/README.po | 32 -------------- .../LC_MESSAGES/Behavioral/State/README.po | 20 --------- .../LC_MESSAGES/Behavioral/Strategy/README.po | 20 --------- .../Behavioral/TemplateMethod/README.po | 16 ------- .../LC_MESSAGES/Behavioral/Visitor/README.po | 24 ---------- .../Creational/AbstractFactory/README.po | 44 ------------------- .../LC_MESSAGES/Creational/Builder/README.po | 44 ------------------- .../Creational/FactoryMethod/README.po | 32 -------------- .../LC_MESSAGES/Creational/Multiton/README.po | 4 -- .../LC_MESSAGES/Creational/Pool/README.po | 20 --------- .../Creational/Prototype/README.po | 16 ------- .../Creational/SimpleFactory/README.po | 20 --------- .../Creational/Singleton/README.po | 8 ---- .../Creational/StaticFactory/README.po | 20 --------- .../LC_MESSAGES/More/Delegation/README.po | 16 ------- locale/zh_CN/LC_MESSAGES/More/EAV/README.po | 12 ----- .../LC_MESSAGES/More/Repository/README.po | 16 ------- .../LC_MESSAGES/More/ServiceLocator/README.po | 28 ------------ .../LC_MESSAGES/Structural/Adapter/README.po | 24 ---------- .../LC_MESSAGES/Structural/Bridge/README.po | 28 ------------ .../Structural/Composite/README.po | 20 --------- .../Structural/DataMapper/README.po | 12 ----- .../Structural/Decorator/README.po | 24 ---------- .../Structural/DependencyInjection/README.po | 24 ---------- .../LC_MESSAGES/Structural/Facade/README.po | 16 ------- .../Structural/FluentInterface/README.po | 8 ---- .../Structural/Flyweight/README.po | 16 ------- .../LC_MESSAGES/Structural/Proxy/README.po | 8 ---- .../LC_MESSAGES/Structural/Registry/README.po | 8 ---- 251 files changed, 5000 deletions(-) diff --git a/locale/ca/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po b/locale/ca/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po index 19f8d8d..74da4e5 100644 --- a/locale/ca/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po +++ b/locale/ca/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po @@ -65,26 +65,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/ChainOfResponsibilities/README.rst:36 -msgid "Request.php" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:42 -msgid "Handler.php" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:48 -msgid "Responsible/SlowStorage.php" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:54 -msgid "Responsible/FastStorage.php" -msgstr "" - #: ../../Behavioral/ChainOfResponsibilities/README.rst:61 msgid "Test" msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:63 -msgid "Tests/ChainTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Behavioral/Command/README.po b/locale/ca/LC_MESSAGES/Behavioral/Command/README.po index 158d346..e289808 100644 --- a/locale/ca/LC_MESSAGES/Behavioral/Command/README.po +++ b/locale/ca/LC_MESSAGES/Behavioral/Command/README.po @@ -74,26 +74,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Command/README.rst:43 -msgid "CommandInterface.php" -msgstr "" - -#: ../../Behavioral/Command/README.rst:49 -msgid "HelloCommand.php" -msgstr "" - -#: ../../Behavioral/Command/README.rst:55 -msgid "Receiver.php" -msgstr "" - -#: ../../Behavioral/Command/README.rst:61 -msgid "Invoker.php" -msgstr "" - #: ../../Behavioral/Command/README.rst:68 msgid "Test" msgstr "" - -#: ../../Behavioral/Command/README.rst:70 -msgid "Tests/CommandTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Behavioral/Iterator/README.po b/locale/ca/LC_MESSAGES/Behavioral/Iterator/README.po index 25ccf3a..043f4f3 100644 --- a/locale/ca/LC_MESSAGES/Behavioral/Iterator/README.po +++ b/locale/ca/LC_MESSAGES/Behavioral/Iterator/README.po @@ -56,26 +56,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Iterator/README.rst:36 -msgid "Book.php" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:42 -msgid "BookList.php" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:48 -msgid "BookListIterator.php" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:54 -msgid "BookListReverseIterator.php" -msgstr "" - #: ../../Behavioral/Iterator/README.rst:61 msgid "Test" msgstr "" - -#: ../../Behavioral/Iterator/README.rst:63 -msgid "Tests/IteratorTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Behavioral/Mediator/README.po b/locale/ca/LC_MESSAGES/Behavioral/Mediator/README.po index e9a44dd..58fdb1e 100644 --- a/locale/ca/LC_MESSAGES/Behavioral/Mediator/README.po +++ b/locale/ca/LC_MESSAGES/Behavioral/Mediator/README.po @@ -45,34 +45,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Mediator/README.rst:27 -msgid "MediatorInterface.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:33 -msgid "Mediator.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:39 -msgid "Colleague.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:45 -msgid "Subsystem/Client.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:51 -msgid "Subsystem/Database.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:57 -msgid "Subsystem/Server.php" -msgstr "" - #: ../../Behavioral/Mediator/README.rst:64 msgid "Test" msgstr "" - -#: ../../Behavioral/Mediator/README.rst:66 -msgid "Tests/MediatorTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Behavioral/Memento/README.po b/locale/ca/LC_MESSAGES/Behavioral/Memento/README.po index 2d4b2e1..361a5f9 100644 --- a/locale/ca/LC_MESSAGES/Behavioral/Memento/README.po +++ b/locale/ca/LC_MESSAGES/Behavioral/Memento/README.po @@ -102,23 +102,7 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Memento/README.rst:57 -msgid "Memento.php" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:63 -msgid "Originator.php" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:69 -msgid "Caretaker.php" -msgstr "" - #: ../../Behavioral/Memento/README.rst:76 msgid "Test" msgstr "" -#: ../../Behavioral/Memento/README.rst:78 -msgid "Tests/MementoTest.php" -msgstr "" - diff --git a/locale/ca/LC_MESSAGES/Behavioral/NullObject/README.po b/locale/ca/LC_MESSAGES/Behavioral/NullObject/README.po index a397fc5..4bdb431 100644 --- a/locale/ca/LC_MESSAGES/Behavioral/NullObject/README.po +++ b/locale/ca/LC_MESSAGES/Behavioral/NullObject/README.po @@ -78,26 +78,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/NullObject/README.rst:41 -msgid "Service.php" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:47 -msgid "LoggerInterface.php" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:53 -msgid "PrintLogger.php" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:59 -msgid "NullLogger.php" -msgstr "" - #: ../../Behavioral/NullObject/README.rst:66 msgid "Test" msgstr "" - -#: ../../Behavioral/NullObject/README.rst:68 -msgid "Tests/LoggerTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Behavioral/Observer/README.po b/locale/ca/LC_MESSAGES/Behavioral/Observer/README.po index 8a43616..a1b786a 100644 --- a/locale/ca/LC_MESSAGES/Behavioral/Observer/README.po +++ b/locale/ca/LC_MESSAGES/Behavioral/Observer/README.po @@ -58,18 +58,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Observer/README.rst:36 -msgid "User.php" -msgstr "" - -#: ../../Behavioral/Observer/README.rst:42 -msgid "UserObserver.php" -msgstr "" - #: ../../Behavioral/Observer/README.rst:49 msgid "Test" msgstr "" - -#: ../../Behavioral/Observer/README.rst:51 -msgid "Tests/ObserverTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Behavioral/Specification/README.po b/locale/ca/LC_MESSAGES/Behavioral/Specification/README.po index 7b1982b..64e14a8 100644 --- a/locale/ca/LC_MESSAGES/Behavioral/Specification/README.po +++ b/locale/ca/LC_MESSAGES/Behavioral/Specification/README.po @@ -47,38 +47,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Specification/README.rst:29 -msgid "Item.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:35 -msgid "SpecificationInterface.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:41 -msgid "AbstractSpecification.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:47 -msgid "Either.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:53 -msgid "PriceSpecification.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:59 -msgid "Plus.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:65 -msgid "Not.php" -msgstr "" - #: ../../Behavioral/Specification/README.rst:72 msgid "Test" msgstr "" - -#: ../../Behavioral/Specification/README.rst:74 -msgid "Tests/SpecificationTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Behavioral/State/README.po b/locale/ca/LC_MESSAGES/Behavioral/State/README.po index 2ced881..8dfd381 100644 --- a/locale/ca/LC_MESSAGES/Behavioral/State/README.po +++ b/locale/ca/LC_MESSAGES/Behavioral/State/README.po @@ -38,26 +38,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/State/README.rst:23 -msgid "OrderController.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:29 -msgid "OrderFactory.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:35 -msgid "OrderInterface.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:41 -msgid "ShippingOrder.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:47 -msgid "CreateOrder.php" -msgstr "" - #: ../../Behavioral/State/README.rst:54 msgid "Test" msgstr "" diff --git a/locale/ca/LC_MESSAGES/Behavioral/Strategy/README.po b/locale/ca/LC_MESSAGES/Behavioral/Strategy/README.po index c3b9fea..0b60661 100644 --- a/locale/ca/LC_MESSAGES/Behavioral/Strategy/README.po +++ b/locale/ca/LC_MESSAGES/Behavioral/Strategy/README.po @@ -67,26 +67,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Strategy/README.rst:37 -msgid "ObjectCollection.php" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:43 -msgid "ComparatorInterface.php" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:49 -msgid "DateComparator.php" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:55 -msgid "IdComparator.php" -msgstr "" - #: ../../Behavioral/Strategy/README.rst:62 msgid "Test" msgstr "" - -#: ../../Behavioral/Strategy/README.rst:64 -msgid "Tests/StrategyTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Behavioral/TemplateMethod/README.po b/locale/ca/LC_MESSAGES/Behavioral/TemplateMethod/README.po index 331d234..66e4e9b 100644 --- a/locale/ca/LC_MESSAGES/Behavioral/TemplateMethod/README.po +++ b/locale/ca/LC_MESSAGES/Behavioral/TemplateMethod/README.po @@ -62,22 +62,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/TemplateMethod/README.rst:36 -msgid "Journey.php" -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:42 -msgid "BeachJourney.php" -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:48 -msgid "CityJourney.php" -msgstr "" - #: ../../Behavioral/TemplateMethod/README.rst:55 msgid "Test" msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:57 -msgid "Tests/JourneyTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Behavioral/Visitor/README.po b/locale/ca/LC_MESSAGES/Behavioral/Visitor/README.po index 08784a3..62f65e1 100644 --- a/locale/ca/LC_MESSAGES/Behavioral/Visitor/README.po +++ b/locale/ca/LC_MESSAGES/Behavioral/Visitor/README.po @@ -46,30 +46,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Visitor/README.rst:28 -msgid "RoleVisitorInterface.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:34 -msgid "RolePrintVisitor.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:40 -msgid "Role.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:46 -msgid "User.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:52 -msgid "Group.php" -msgstr "" - #: ../../Behavioral/Visitor/README.rst:59 msgid "Test" msgstr "" - -#: ../../Behavioral/Visitor/README.rst:61 -msgid "Tests/VisitorTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Creational/AbstractFactory/README.po b/locale/ca/LC_MESSAGES/Creational/AbstractFactory/README.po index 5f30dba..d5571da 100644 --- a/locale/ca/LC_MESSAGES/Creational/AbstractFactory/README.po +++ b/locale/ca/LC_MESSAGES/Creational/AbstractFactory/README.po @@ -39,50 +39,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Creational/AbstractFactory/README.rst:24 -msgid "AbstractFactory.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:30 -msgid "JsonFactory.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:36 -msgid "HtmlFactory.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:42 -msgid "MediaInterface.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:48 -msgid "Picture.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:54 -msgid "Text.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:60 -msgid "Json/Picture.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:66 -msgid "Json/Text.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:72 -msgid "Html/Picture.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:78 -msgid "Html/Text.php" -msgstr "" - #: ../../Creational/AbstractFactory/README.rst:85 msgid "Test" msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:87 -msgid "Tests/AbstractFactoryTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Creational/Builder/README.po b/locale/ca/LC_MESSAGES/Creational/Builder/README.po index 52e2701..14769f8 100644 --- a/locale/ca/LC_MESSAGES/Creational/Builder/README.po +++ b/locale/ca/LC_MESSAGES/Creational/Builder/README.po @@ -61,50 +61,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Creational/Builder/README.rst:35 -msgid "Director.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:41 -msgid "BuilderInterface.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:47 -msgid "BikeBuilder.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:53 -msgid "CarBuilder.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:59 -msgid "Parts/Vehicle.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:65 -msgid "Parts/Bike.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:71 -msgid "Parts/Car.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:77 -msgid "Parts/Engine.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:83 -msgid "Parts/Wheel.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:89 -msgid "Parts/Door.php" -msgstr "" - #: ../../Creational/Builder/README.rst:96 msgid "Test" msgstr "" - -#: ../../Creational/Builder/README.rst:98 -msgid "Tests/DirectorTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Creational/FactoryMethod/README.po b/locale/ca/LC_MESSAGES/Creational/FactoryMethod/README.po index 9640841..75c9f89 100644 --- a/locale/ca/LC_MESSAGES/Creational/FactoryMethod/README.po +++ b/locale/ca/LC_MESSAGES/Creational/FactoryMethod/README.po @@ -53,38 +53,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Creational/FactoryMethod/README.rst:31 -msgid "FactoryMethod.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:37 -msgid "ItalianFactory.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:43 -msgid "GermanFactory.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:49 -msgid "VehicleInterface.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:55 -msgid "Porsche.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:61 -msgid "Bicycle.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:67 -msgid "Ferrari.php" -msgstr "" - #: ../../Creational/FactoryMethod/README.rst:74 msgid "Test" msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:76 -msgid "Tests/FactoryMethodTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Creational/Multiton/README.po b/locale/ca/LC_MESSAGES/Creational/Multiton/README.po index d6892a9..caa1137 100644 --- a/locale/ca/LC_MESSAGES/Creational/Multiton/README.po +++ b/locale/ca/LC_MESSAGES/Creational/Multiton/README.po @@ -55,10 +55,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Creational/Multiton/README.rst:31 -msgid "Multiton.php" -msgstr "" - #: ../../Creational/Multiton/README.rst:38 msgid "Test" msgstr "" diff --git a/locale/ca/LC_MESSAGES/Creational/Pool/README.po b/locale/ca/LC_MESSAGES/Creational/Pool/README.po index 899f583..ec43dea 100644 --- a/locale/ca/LC_MESSAGES/Creational/Pool/README.po +++ b/locale/ca/LC_MESSAGES/Creational/Pool/README.po @@ -56,26 +56,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Creational/Pool/README.rst:36 -msgid "Pool.php" -msgstr "" - -#: ../../Creational/Pool/README.rst:42 -msgid "Processor.php" -msgstr "" - -#: ../../Creational/Pool/README.rst:48 -msgid "Worker.php" -msgstr "" - #: ../../Creational/Pool/README.rst:55 msgid "Test" msgstr "" - -#: ../../Creational/Pool/README.rst:57 -msgid "Tests/PoolTest.php" -msgstr "" - -#: ../../Creational/Pool/README.rst:63 -msgid "Tests/TestWorker.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Creational/Prototype/README.po b/locale/ca/LC_MESSAGES/Creational/Prototype/README.po index 14e0bc2..261ba2e 100644 --- a/locale/ca/LC_MESSAGES/Creational/Prototype/README.po +++ b/locale/ca/LC_MESSAGES/Creational/Prototype/README.po @@ -47,22 +47,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Creational/Prototype/README.rst:28 -msgid "index.php" -msgstr "" - -#: ../../Creational/Prototype/README.rst:34 -msgid "BookPrototype.php" -msgstr "" - -#: ../../Creational/Prototype/README.rst:40 -msgid "BarBookPrototype.php" -msgstr "" - -#: ../../Creational/Prototype/README.rst:46 -msgid "FooBookPrototype.php" -msgstr "" - #: ../../Creational/Prototype/README.rst:53 msgid "Test" msgstr "" diff --git a/locale/ca/LC_MESSAGES/Creational/SimpleFactory/README.po b/locale/ca/LC_MESSAGES/Creational/SimpleFactory/README.po index 751085e..382089e 100644 --- a/locale/ca/LC_MESSAGES/Creational/SimpleFactory/README.po +++ b/locale/ca/LC_MESSAGES/Creational/SimpleFactory/README.po @@ -47,26 +47,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Creational/SimpleFactory/README.rst:27 -msgid "SimpleFactory.php" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:33 -msgid "VehicleInterface.php" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:39 -msgid "Bicycle.php" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:45 -msgid "Scooter.php" -msgstr "" - #: ../../Creational/SimpleFactory/README.rst:52 msgid "Test" msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:54 -msgid "Tests/SimpleFactoryTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Creational/Singleton/README.po b/locale/ca/LC_MESSAGES/Creational/Singleton/README.po index a80a777..bcf716e 100644 --- a/locale/ca/LC_MESSAGES/Creational/Singleton/README.po +++ b/locale/ca/LC_MESSAGES/Creational/Singleton/README.po @@ -62,14 +62,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Creational/Singleton/README.rst:34 -msgid "Singleton.php" -msgstr "" - #: ../../Creational/Singleton/README.rst:41 msgid "Test" msgstr "" - -#: ../../Creational/Singleton/README.rst:43 -msgid "Tests/SingletonTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Creational/StaticFactory/README.po b/locale/ca/LC_MESSAGES/Creational/StaticFactory/README.po index 538587f..c5ad37c 100644 --- a/locale/ca/LC_MESSAGES/Creational/StaticFactory/README.po +++ b/locale/ca/LC_MESSAGES/Creational/StaticFactory/README.po @@ -50,26 +50,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Creational/StaticFactory/README.rst:31 -msgid "StaticFactory.php" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:37 -msgid "FormatterInterface.php" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:43 -msgid "FormatString.php" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:49 -msgid "FormatNumber.php" -msgstr "" - #: ../../Creational/StaticFactory/README.rst:56 msgid "Test" msgstr "" - -#: ../../Creational/StaticFactory/README.rst:58 -msgid "Tests/StaticFactoryTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/More/Delegation/README.po b/locale/ca/LC_MESSAGES/More/Delegation/README.po index 907d828..4332b4f 100644 --- a/locale/ca/LC_MESSAGES/More/Delegation/README.po +++ b/locale/ca/LC_MESSAGES/More/Delegation/README.po @@ -58,23 +58,7 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../More/Delegation/README.rst:26 -msgid "Usage.php" -msgstr "" - -#: ../../More/Delegation/README.rst:32 -msgid "TeamLead.php" -msgstr "" - -#: ../../More/Delegation/README.rst:38 -msgid "JuniorDeveloper.php" -msgstr "" - #: ../../More/Delegation/README.rst:45 msgid "Test" msgstr "" -#: ../../More/Delegation/README.rst:47 -msgid "Tests/DelegationTest.php" -msgstr "" - diff --git a/locale/ca/LC_MESSAGES/More/EAV/README.po b/locale/ca/LC_MESSAGES/More/EAV/README.po index d0113c0..8e72b00 100644 --- a/locale/ca/LC_MESSAGES/More/EAV/README.po +++ b/locale/ca/LC_MESSAGES/More/EAV/README.po @@ -64,15 +64,3 @@ msgstr "" msgid "Test" msgstr "" -#: ../../More/EAV/README.rst:104 -msgid "Tests/EntityTest.php" -msgstr "" - -#: ../../More/EAV/README.rst:110 -msgid "Tests/AttributeTest.php" -msgstr "" - -#: ../../More/EAV/README.rst:116 -msgid "Tests/ValueTest.php" -msgstr "" - diff --git a/locale/ca/LC_MESSAGES/More/Repository/README.po b/locale/ca/LC_MESSAGES/More/Repository/README.po index 319ace4..b6e39ab 100644 --- a/locale/ca/LC_MESSAGES/More/Repository/README.po +++ b/locale/ca/LC_MESSAGES/More/Repository/README.po @@ -55,22 +55,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../More/Repository/README.rst:34 -msgid "Post.php" -msgstr "" - -#: ../../More/Repository/README.rst:40 -msgid "PostRepository.php" -msgstr "" - -#: ../../More/Repository/README.rst:46 -msgid "Persistence.php" -msgstr "" - -#: ../../More/Repository/README.rst:52 -msgid "InMemoryPersistence.php" -msgstr "" - #: ../../More/Repository/README.rst:59 msgid "Test" msgstr "" diff --git a/locale/ca/LC_MESSAGES/More/ServiceLocator/README.po b/locale/ca/LC_MESSAGES/More/ServiceLocator/README.po index 8efac15..a41751d 100644 --- a/locale/ca/LC_MESSAGES/More/ServiceLocator/README.po +++ b/locale/ca/LC_MESSAGES/More/ServiceLocator/README.po @@ -61,34 +61,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../More/ServiceLocator/README.rst:38 -msgid "ServiceLocatorInterface.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:44 -msgid "ServiceLocator.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:50 -msgid "LogServiceInterface.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:56 -msgid "LogService.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:62 -msgid "DatabaseServiceInterface.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:68 -msgid "DatabaseService.php" -msgstr "" - #: ../../More/ServiceLocator/README.rst:75 msgid "Test" msgstr "" - -#: ../../More/ServiceLocator/README.rst:77 -msgid "Tests/ServiceLocatorTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Structural/Adapter/README.po b/locale/ca/LC_MESSAGES/Structural/Adapter/README.po index 00c1d2f..aa79116 100644 --- a/locale/ca/LC_MESSAGES/Structural/Adapter/README.po +++ b/locale/ca/LC_MESSAGES/Structural/Adapter/README.po @@ -53,30 +53,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Adapter/README.rst:31 -msgid "PaperBookInterface.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:37 -msgid "Book.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:43 -msgid "EBookAdapter.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:49 -msgid "EBookInterface.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:55 -msgid "Kindle.php" -msgstr "" - #: ../../Structural/Adapter/README.rst:62 msgid "Test" msgstr "" - -#: ../../Structural/Adapter/README.rst:64 -msgid "Tests/AdapterTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Structural/Bridge/README.po b/locale/ca/LC_MESSAGES/Structural/Bridge/README.po index e2ee3f6..ac8200c 100644 --- a/locale/ca/LC_MESSAGES/Structural/Bridge/README.po +++ b/locale/ca/LC_MESSAGES/Structural/Bridge/README.po @@ -45,34 +45,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Bridge/README.rst:28 -msgid "Workshop.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:34 -msgid "Assemble.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:40 -msgid "Produce.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:46 -msgid "Vehicle.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:52 -msgid "Motorcycle.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:58 -msgid "Car.php" -msgstr "" - #: ../../Structural/Bridge/README.rst:65 msgid "Test" msgstr "" - -#: ../../Structural/Bridge/README.rst:67 -msgid "Tests/BridgeTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Structural/Composite/README.po b/locale/ca/LC_MESSAGES/Structural/Composite/README.po index a5b59d4..7908b74 100644 --- a/locale/ca/LC_MESSAGES/Structural/Composite/README.po +++ b/locale/ca/LC_MESSAGES/Structural/Composite/README.po @@ -53,26 +53,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Composite/README.rst:31 -msgid "FormElement.php" -msgstr "" - -#: ../../Structural/Composite/README.rst:37 -msgid "Form.php" -msgstr "" - -#: ../../Structural/Composite/README.rst:43 -msgid "InputElement.php" -msgstr "" - -#: ../../Structural/Composite/README.rst:49 -msgid "TextElement.php" -msgstr "" - #: ../../Structural/Composite/README.rst:56 msgid "Test" msgstr "" - -#: ../../Structural/Composite/README.rst:58 -msgid "Tests/CompositeTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Structural/DataMapper/README.po b/locale/ca/LC_MESSAGES/Structural/DataMapper/README.po index 6093eea..164f7ed 100644 --- a/locale/ca/LC_MESSAGES/Structural/DataMapper/README.po +++ b/locale/ca/LC_MESSAGES/Structural/DataMapper/README.po @@ -60,18 +60,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/DataMapper/README.rst:38 -msgid "User.php" -msgstr "" - -#: ../../Structural/DataMapper/README.rst:44 -msgid "UserMapper.php" -msgstr "" - #: ../../Structural/DataMapper/README.rst:51 msgid "Test" msgstr "" - -#: ../../Structural/DataMapper/README.rst:53 -msgid "Tests/DataMapperTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Structural/Decorator/README.po b/locale/ca/LC_MESSAGES/Structural/Decorator/README.po index 124019f..335d776 100644 --- a/locale/ca/LC_MESSAGES/Structural/Decorator/README.po +++ b/locale/ca/LC_MESSAGES/Structural/Decorator/README.po @@ -49,30 +49,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Decorator/README.rst:28 -msgid "RendererInterface.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:34 -msgid "Webservice.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:40 -msgid "Decorator.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:46 -msgid "RenderInXml.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:52 -msgid "RenderInJson.php" -msgstr "" - #: ../../Structural/Decorator/README.rst:59 msgid "Test" msgstr "" - -#: ../../Structural/Decorator/README.rst:61 -msgid "Tests/DecoratorTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Structural/DependencyInjection/README.po b/locale/ca/LC_MESSAGES/Structural/DependencyInjection/README.po index 7eeeb06..f017805 100644 --- a/locale/ca/LC_MESSAGES/Structural/DependencyInjection/README.po +++ b/locale/ca/LC_MESSAGES/Structural/DependencyInjection/README.po @@ -78,30 +78,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/DependencyInjection/README.rst:48 -msgid "AbstractConfig.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:54 -msgid "Parameters.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:60 -msgid "ArrayConfig.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:66 -msgid "Connection.php" -msgstr "" - #: ../../Structural/DependencyInjection/README.rst:73 msgid "Test" msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:75 -msgid "Tests/DependencyInjectionTest.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:81 -msgid "Tests/config.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Structural/Facade/README.po b/locale/ca/LC_MESSAGES/Structural/Facade/README.po index 81358f4..6cca97b 100644 --- a/locale/ca/LC_MESSAGES/Structural/Facade/README.po +++ b/locale/ca/LC_MESSAGES/Structural/Facade/README.po @@ -66,22 +66,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Facade/README.rst:38 -msgid "Facade.php" -msgstr "" - -#: ../../Structural/Facade/README.rst:44 -msgid "OsInterface.php" -msgstr "" - -#: ../../Structural/Facade/README.rst:50 -msgid "BiosInterface.php" -msgstr "" - #: ../../Structural/Facade/README.rst:57 msgid "Test" msgstr "" - -#: ../../Structural/Facade/README.rst:59 -msgid "Tests/FacadeTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Structural/FluentInterface/README.po b/locale/ca/LC_MESSAGES/Structural/FluentInterface/README.po index 4331b7c..b330ab4 100644 --- a/locale/ca/LC_MESSAGES/Structural/FluentInterface/README.po +++ b/locale/ca/LC_MESSAGES/Structural/FluentInterface/README.po @@ -53,14 +53,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/FluentInterface/README.rst:30 -msgid "Sql.php" -msgstr "" - #: ../../Structural/FluentInterface/README.rst:37 msgid "Test" msgstr "" - -#: ../../Structural/FluentInterface/README.rst:39 -msgid "Tests/FluentInterfaceTest.php" -msgstr "" diff --git a/locale/ca/LC_MESSAGES/Structural/Flyweight/README.po b/locale/ca/LC_MESSAGES/Structural/Flyweight/README.po index cfa8492..2514886 100644 --- a/locale/ca/LC_MESSAGES/Structural/Flyweight/README.po +++ b/locale/ca/LC_MESSAGES/Structural/Flyweight/README.po @@ -47,23 +47,7 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Flyweight/README.rst:23 -msgid "FlyweightInterface.php" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:29 -msgid "CharacterFlyweight.php" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:35 -msgid "FlyweightFactory.php" -msgstr "" - #: ../../Structural/Flyweight/README.rst:42 msgid "Test" msgstr "" -#: ../../Structural/Flyweight/README.rst:44 -msgid "Tests/FlyweightTest.php" -msgstr "" - diff --git a/locale/ca/LC_MESSAGES/Structural/Proxy/README.po b/locale/ca/LC_MESSAGES/Structural/Proxy/README.po index 1e52782..6a3e254 100644 --- a/locale/ca/LC_MESSAGES/Structural/Proxy/README.po +++ b/locale/ca/LC_MESSAGES/Structural/Proxy/README.po @@ -46,14 +46,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Proxy/README.rst:28 -msgid "Record.php" -msgstr "" - -#: ../../Structural/Proxy/README.rst:34 -msgid "RecordProxy.php" -msgstr "" - #: ../../Structural/Proxy/README.rst:41 msgid "Test" msgstr "" diff --git a/locale/ca/LC_MESSAGES/Structural/Registry/README.po b/locale/ca/LC_MESSAGES/Structural/Registry/README.po index 104a57d..326d6c0 100644 --- a/locale/ca/LC_MESSAGES/Structural/Registry/README.po +++ b/locale/ca/LC_MESSAGES/Structural/Registry/README.po @@ -54,14 +54,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Registry/README.rst:31 -msgid "Registry.php" -msgstr "" - #: ../../Structural/Registry/README.rst:38 msgid "Test" msgstr "" - -#: ../../Structural/Registry/README.rst:40 -msgid "Tests/RegistryTest.php" -msgstr "" diff --git a/locale/de/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po b/locale/de/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po index b84bf8a..1e543a4 100644 --- a/locale/de/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po +++ b/locale/de/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po @@ -71,26 +71,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du kannst den Code auch auf `GitHub` einsehen_" -#: ../../Behavioral/ChainOfResponsibilities/README.rst:36 -msgid "Request.php" -msgstr "Request.php" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:42 -msgid "Handler.php" -msgstr "Handler.php" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:48 -msgid "Responsible/SlowStorage.php" -msgstr "Responsible/SlowStorage.php" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:54 -msgid "Responsible/FastStorage.php" -msgstr "Responsible/FastStorage.php" - #: ../../Behavioral/ChainOfResponsibilities/README.rst:61 msgid "Test" msgstr "Теst" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:63 -msgid "Tests/ChainTest.php" -msgstr "Tests/ChainTest.php" diff --git a/locale/de/LC_MESSAGES/Behavioral/Command/README.po b/locale/de/LC_MESSAGES/Behavioral/Command/README.po index 3e90fb0..03a548b 100644 --- a/locale/de/LC_MESSAGES/Behavioral/Command/README.po +++ b/locale/de/LC_MESSAGES/Behavioral/Command/README.po @@ -85,26 +85,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du kannst diesen Code auch auf `GitHub` einsehen_" -#: ../../Behavioral/Command/README.rst:43 -msgid "CommandInterface.php" -msgstr "CommandInterface.php" - -#: ../../Behavioral/Command/README.rst:49 -msgid "HelloCommand.php" -msgstr "HelloCommand.php" - -#: ../../Behavioral/Command/README.rst:55 -msgid "Receiver.php" -msgstr "Receiver.php" - -#: ../../Behavioral/Command/README.rst:61 -msgid "Invoker.php" -msgstr "Invoker.php" - #: ../../Behavioral/Command/README.rst:68 msgid "Test" msgstr "Теst" - -#: ../../Behavioral/Command/README.rst:70 -msgid "Tests/CommandTest.php" -msgstr "Tests/CommandTest.php" diff --git a/locale/de/LC_MESSAGES/Behavioral/Iterator/README.po b/locale/de/LC_MESSAGES/Behavioral/Iterator/README.po index 0d137cc..1ee22d3 100644 --- a/locale/de/LC_MESSAGES/Behavioral/Iterator/README.po +++ b/locale/de/LC_MESSAGES/Behavioral/Iterator/README.po @@ -65,26 +65,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du kannst den Code auch auf `GitHub` einsehen_" -#: ../../Behavioral/Iterator/README.rst:36 -msgid "Book.php" -msgstr "Book.php" - -#: ../../Behavioral/Iterator/README.rst:42 -msgid "BookList.php" -msgstr "BookList.php" - -#: ../../Behavioral/Iterator/README.rst:48 -msgid "BookListIterator.php" -msgstr "BookListIterator.php" - -#: ../../Behavioral/Iterator/README.rst:54 -msgid "BookListReverseIterator.php" -msgstr "BookListReverseIterator.php" - #: ../../Behavioral/Iterator/README.rst:61 msgid "Test" msgstr "Теst" - -#: ../../Behavioral/Iterator/README.rst:63 -msgid "Tests/IteratorTest.php" -msgstr "Tests/IteratorTest.php" diff --git a/locale/de/LC_MESSAGES/Behavioral/Mediator/README.po b/locale/de/LC_MESSAGES/Behavioral/Mediator/README.po index 6915d6f..1492ba6 100644 --- a/locale/de/LC_MESSAGES/Behavioral/Mediator/README.po +++ b/locale/de/LC_MESSAGES/Behavioral/Mediator/README.po @@ -52,34 +52,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code hierzu auf `GitHub`_" -#: ../../Behavioral/Mediator/README.rst:27 -msgid "MediatorInterface.php" -msgstr "MediatorInterface.php" - -#: ../../Behavioral/Mediator/README.rst:33 -msgid "Mediator.php" -msgstr "Mediator.php" - -#: ../../Behavioral/Mediator/README.rst:39 -msgid "Colleague.php" -msgstr "Colleague.php" - -#: ../../Behavioral/Mediator/README.rst:45 -msgid "Subsystem/Client.php" -msgstr "Subsystem/Client.php" - -#: ../../Behavioral/Mediator/README.rst:51 -msgid "Subsystem/Database.php" -msgstr "Subsystem/Database.php" - -#: ../../Behavioral/Mediator/README.rst:57 -msgid "Subsystem/Server.php" -msgstr "Subsystem/Server.php" - #: ../../Behavioral/Mediator/README.rst:64 msgid "Test" msgstr "Test" - -#: ../../Behavioral/Mediator/README.rst:66 -msgid "Tests/MediatorTest.php" -msgstr "Tests/MediatorTest.php" diff --git a/locale/de/LC_MESSAGES/Behavioral/Memento/README.po b/locale/de/LC_MESSAGES/Behavioral/Memento/README.po index f00407c..024cfcd 100644 --- a/locale/de/LC_MESSAGES/Behavioral/Memento/README.po +++ b/locale/de/LC_MESSAGES/Behavioral/Memento/README.po @@ -102,26 +102,10 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Memento/README.rst:57 -msgid "Memento.php" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:63 -msgid "Originator.php" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:69 -msgid "Caretaker.php" -msgstr "" - #: ../../Behavioral/Memento/README.rst:76 msgid "Test" msgstr "" -#: ../../Behavioral/Memento/README.rst:78 -msgid "Tests/MementoTest.php" -msgstr "" - #. # #. msgid "" diff --git a/locale/de/LC_MESSAGES/Behavioral/NullObject/README.po b/locale/de/LC_MESSAGES/Behavioral/NullObject/README.po index 08ad9f7..ce9772a 100644 --- a/locale/de/LC_MESSAGES/Behavioral/NullObject/README.po +++ b/locale/de/LC_MESSAGES/Behavioral/NullObject/README.po @@ -84,26 +84,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code hierzu auf `GitHub`_" -#: ../../Behavioral/NullObject/README.rst:41 -msgid "Service.php" -msgstr "Service.php" - -#: ../../Behavioral/NullObject/README.rst:47 -msgid "LoggerInterface.php" -msgstr "LoggerInterface.php" - -#: ../../Behavioral/NullObject/README.rst:53 -msgid "PrintLogger.php" -msgstr "PrintLogger.php" - -#: ../../Behavioral/NullObject/README.rst:59 -msgid "NullLogger.php" -msgstr "NullLogger.php" - #: ../../Behavioral/NullObject/README.rst:66 msgid "Test" msgstr "Test" - -#: ../../Behavioral/NullObject/README.rst:68 -msgid "Tests/LoggerTest.php" -msgstr "Tests/LoggerTest.php" diff --git a/locale/de/LC_MESSAGES/Behavioral/Observer/README.po b/locale/de/LC_MESSAGES/Behavioral/Observer/README.po index 86de6a8..30db12b 100644 --- a/locale/de/LC_MESSAGES/Behavioral/Observer/README.po +++ b/locale/de/LC_MESSAGES/Behavioral/Observer/README.po @@ -64,18 +64,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code hierzu auf `GitHub`_" -#: ../../Behavioral/Observer/README.rst:36 -msgid "User.php" -msgstr "User.php" - -#: ../../Behavioral/Observer/README.rst:42 -msgid "UserObserver.php" -msgstr "UserObserver.php" - #: ../../Behavioral/Observer/README.rst:49 msgid "Test" msgstr "Test" - -#: ../../Behavioral/Observer/README.rst:51 -msgid "Tests/ObserverTest.php" -msgstr "Tests/ObserverTest.php" diff --git a/locale/de/LC_MESSAGES/Behavioral/Specification/README.po b/locale/de/LC_MESSAGES/Behavioral/Specification/README.po index 2dbb78b..ca61f40 100644 --- a/locale/de/LC_MESSAGES/Behavioral/Specification/README.po +++ b/locale/de/LC_MESSAGES/Behavioral/Specification/README.po @@ -51,38 +51,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code hierzu auf `GitHub`_" -#: ../../Behavioral/Specification/README.rst:29 -msgid "Item.php" -msgstr "Item.php" - -#: ../../Behavioral/Specification/README.rst:35 -msgid "SpecificationInterface.php" -msgstr "SpecificationInterface.php" - -#: ../../Behavioral/Specification/README.rst:41 -msgid "AbstractSpecification.php" -msgstr "AbstractSpecification.php" - -#: ../../Behavioral/Specification/README.rst:47 -msgid "Either.php" -msgstr "Either.php" - -#: ../../Behavioral/Specification/README.rst:53 -msgid "PriceSpecification.php" -msgstr "PriceSpecification.php" - -#: ../../Behavioral/Specification/README.rst:59 -msgid "Plus.php" -msgstr "Plus.php" - -#: ../../Behavioral/Specification/README.rst:65 -msgid "Not.php" -msgstr "Not.php" - #: ../../Behavioral/Specification/README.rst:72 msgid "Test" msgstr "Test" - -#: ../../Behavioral/Specification/README.rst:74 -msgid "Tests/SpecificationTest.php" -msgstr "Tests/SpecificationTest.php" diff --git a/locale/de/LC_MESSAGES/Behavioral/State/README.po b/locale/de/LC_MESSAGES/Behavioral/State/README.po index a4bbc2f..6019a54 100644 --- a/locale/de/LC_MESSAGES/Behavioral/State/README.po +++ b/locale/de/LC_MESSAGES/Behavioral/State/README.po @@ -43,26 +43,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code hierzu auf `GitHub`_" -#: ../../Behavioral/State/README.rst:23 -msgid "OrderController.php" -msgstr "OrderController.php" - -#: ../../Behavioral/State/README.rst:29 -msgid "OrderFactory.php" -msgstr "OrderFactory.php" - -#: ../../Behavioral/State/README.rst:35 -msgid "OrderInterface.php" -msgstr "OrderInterface.php" - -#: ../../Behavioral/State/README.rst:41 -msgid "ShippingOrder.php" -msgstr "ShippingOrder.php" - -#: ../../Behavioral/State/README.rst:47 -msgid "CreateOrder.php" -msgstr "CreateOrder.php" - #: ../../Behavioral/State/README.rst:54 msgid "Test" msgstr "Test" diff --git a/locale/de/LC_MESSAGES/Behavioral/Strategy/README.po b/locale/de/LC_MESSAGES/Behavioral/Strategy/README.po index 0649cff..0e951c0 100644 --- a/locale/de/LC_MESSAGES/Behavioral/Strategy/README.po +++ b/locale/de/LC_MESSAGES/Behavioral/Strategy/README.po @@ -73,26 +73,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code hierzu auf `GitHub`_" -#: ../../Behavioral/Strategy/README.rst:37 -msgid "ObjectCollection.php" -msgstr "ObjectCollection.php" - -#: ../../Behavioral/Strategy/README.rst:43 -msgid "ComparatorInterface.php" -msgstr "ComparatorInterface.php" - -#: ../../Behavioral/Strategy/README.rst:49 -msgid "DateComparator.php" -msgstr "DateComparator.php" - -#: ../../Behavioral/Strategy/README.rst:55 -msgid "IdComparator.php" -msgstr "IdComparator.php" - #: ../../Behavioral/Strategy/README.rst:62 msgid "Test" msgstr "Test" - -#: ../../Behavioral/Strategy/README.rst:64 -msgid "Tests/StrategyTest.php" -msgstr "Tests/StrategyTest.php" diff --git a/locale/de/LC_MESSAGES/Behavioral/TemplateMethod/README.po b/locale/de/LC_MESSAGES/Behavioral/TemplateMethod/README.po index e5d5359..d95ffdd 100644 --- a/locale/de/LC_MESSAGES/Behavioral/TemplateMethod/README.po +++ b/locale/de/LC_MESSAGES/Behavioral/TemplateMethod/README.po @@ -65,22 +65,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code hierzu auf `GitHub`_" -#: ../../Behavioral/TemplateMethod/README.rst:36 -msgid "Journey.php" -msgstr "Journey.php" - -#: ../../Behavioral/TemplateMethod/README.rst:42 -msgid "BeachJourney.php" -msgstr "BeachJourney.php" - -#: ../../Behavioral/TemplateMethod/README.rst:48 -msgid "CityJourney.php" -msgstr "CityJourney.php" - #: ../../Behavioral/TemplateMethod/README.rst:55 msgid "Test" msgstr "Test" - -#: ../../Behavioral/TemplateMethod/README.rst:57 -msgid "Tests/JourneyTest.php" -msgstr "Tests/JourneyTest.php" diff --git a/locale/de/LC_MESSAGES/Behavioral/Visitor/README.po b/locale/de/LC_MESSAGES/Behavioral/Visitor/README.po index 5384b89..2979a3e 100644 --- a/locale/de/LC_MESSAGES/Behavioral/Visitor/README.po +++ b/locale/de/LC_MESSAGES/Behavioral/Visitor/README.po @@ -51,30 +51,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code hierzu auf `GitHub`_" -#: ../../Behavioral/Visitor/README.rst:28 -msgid "RoleVisitorInterface.php" -msgstr "RoleVisitorInterface.php" - -#: ../../Behavioral/Visitor/README.rst:34 -msgid "RolePrintVisitor.php" -msgstr "RolePrintVisitor.php" - -#: ../../Behavioral/Visitor/README.rst:40 -msgid "Role.php" -msgstr "Role.php" - -#: ../../Behavioral/Visitor/README.rst:46 -msgid "User.php" -msgstr "User.php" - -#: ../../Behavioral/Visitor/README.rst:52 -msgid "Group.php" -msgstr "Group.php" - #: ../../Behavioral/Visitor/README.rst:59 msgid "Test" msgstr "Test" - -#: ../../Behavioral/Visitor/README.rst:61 -msgid "Tests/VisitorTest.php" -msgstr "Tests/VisitorTest.php" diff --git a/locale/de/LC_MESSAGES/Creational/AbstractFactory/README.po b/locale/de/LC_MESSAGES/Creational/AbstractFactory/README.po index ef9802d..3fe7727 100644 --- a/locale/de/LC_MESSAGES/Creational/AbstractFactory/README.po +++ b/locale/de/LC_MESSAGES/Creational/AbstractFactory/README.po @@ -46,50 +46,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Creational/AbstractFactory/README.rst:24 -msgid "AbstractFactory.php" -msgstr "AbstractFactory.php" - -#: ../../Creational/AbstractFactory/README.rst:30 -msgid "JsonFactory.php" -msgstr "JsonFactory.php" - -#: ../../Creational/AbstractFactory/README.rst:36 -msgid "HtmlFactory.php" -msgstr "HtmlFactory.php" - -#: ../../Creational/AbstractFactory/README.rst:42 -msgid "MediaInterface.php" -msgstr "MediaInterface.php" - -#: ../../Creational/AbstractFactory/README.rst:48 -msgid "Picture.php" -msgstr "Picture.php" - -#: ../../Creational/AbstractFactory/README.rst:54 -msgid "Text.php" -msgstr "Text.php" - -#: ../../Creational/AbstractFactory/README.rst:60 -msgid "Json/Picture.php" -msgstr "Json/Picture.php" - -#: ../../Creational/AbstractFactory/README.rst:66 -msgid "Json/Text.php" -msgstr "Json/Text.php" - -#: ../../Creational/AbstractFactory/README.rst:72 -msgid "Html/Picture.php" -msgstr "Html/Picture.php" - -#: ../../Creational/AbstractFactory/README.rst:78 -msgid "Html/Text.php" -msgstr "Html/Text.php" - #: ../../Creational/AbstractFactory/README.rst:85 msgid "Test" msgstr "Теst" - -#: ../../Creational/AbstractFactory/README.rst:87 -msgid "Tests/AbstractFactoryTest.php" -msgstr "Tests/AbstractFactoryTest.php" diff --git a/locale/de/LC_MESSAGES/Creational/Builder/README.po b/locale/de/LC_MESSAGES/Creational/Builder/README.po index 5572e5a..2b9a437 100644 --- a/locale/de/LC_MESSAGES/Creational/Builder/README.po +++ b/locale/de/LC_MESSAGES/Creational/Builder/README.po @@ -71,50 +71,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Creational/Builder/README.rst:35 -msgid "Director.php" -msgstr "Director.php" - -#: ../../Creational/Builder/README.rst:41 -msgid "BuilderInterface.php" -msgstr "BuilderInterface.php" - -#: ../../Creational/Builder/README.rst:47 -msgid "BikeBuilder.php" -msgstr "BikeBuilder.php" - -#: ../../Creational/Builder/README.rst:53 -msgid "CarBuilder.php" -msgstr "CarBuilder.php" - -#: ../../Creational/Builder/README.rst:59 -msgid "Parts/Vehicle.php" -msgstr "Parts/Vehicle.php" - -#: ../../Creational/Builder/README.rst:65 -msgid "Parts/Bike.php" -msgstr "Parts/Bike.php" - -#: ../../Creational/Builder/README.rst:71 -msgid "Parts/Car.php" -msgstr "Parts/Car.php" - -#: ../../Creational/Builder/README.rst:77 -msgid "Parts/Engine.php" -msgstr "Parts/Engine.php" - -#: ../../Creational/Builder/README.rst:83 -msgid "Parts/Wheel.php" -msgstr "Parts/Wheel.php" - -#: ../../Creational/Builder/README.rst:89 -msgid "Parts/Door.php" -msgstr "Parts/Door.php" - #: ../../Creational/Builder/README.rst:96 msgid "Test" msgstr "Теst" - -#: ../../Creational/Builder/README.rst:98 -msgid "Tests/DirectorTest.php" -msgstr "Tests/DirectorTest.php" diff --git a/locale/de/LC_MESSAGES/Creational/FactoryMethod/README.po b/locale/de/LC_MESSAGES/Creational/FactoryMethod/README.po index d17699d..0ce8e40 100644 --- a/locale/de/LC_MESSAGES/Creational/FactoryMethod/README.po +++ b/locale/de/LC_MESSAGES/Creational/FactoryMethod/README.po @@ -65,38 +65,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Creational/FactoryMethod/README.rst:31 -msgid "FactoryMethod.php" -msgstr "FactoryMethod.php" - -#: ../../Creational/FactoryMethod/README.rst:37 -msgid "ItalianFactory.php" -msgstr "ItalianFactory.php" - -#: ../../Creational/FactoryMethod/README.rst:43 -msgid "GermanFactory.php" -msgstr "GermanFactory.php" - -#: ../../Creational/FactoryMethod/README.rst:49 -msgid "VehicleInterface.php" -msgstr "VehicleInterface.php" - -#: ../../Creational/FactoryMethod/README.rst:55 -msgid "Porsche.php" -msgstr "Porsche.php" - -#: ../../Creational/FactoryMethod/README.rst:61 -msgid "Bicycle.php" -msgstr "Bicycle.php" - -#: ../../Creational/FactoryMethod/README.rst:67 -msgid "Ferrari.php" -msgstr "Ferrari.php" - #: ../../Creational/FactoryMethod/README.rst:74 msgid "Test" msgstr "Теst" - -#: ../../Creational/FactoryMethod/README.rst:76 -msgid "Tests/FactoryMethodTest.php" -msgstr "Tests/FactoryMethodTest.php" diff --git a/locale/de/LC_MESSAGES/Creational/Multiton/README.po b/locale/de/LC_MESSAGES/Creational/Multiton/README.po index f6a2a20..33b53ab 100644 --- a/locale/de/LC_MESSAGES/Creational/Multiton/README.po +++ b/locale/de/LC_MESSAGES/Creational/Multiton/README.po @@ -62,10 +62,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Creational/Multiton/README.rst:31 -msgid "Multiton.php" -msgstr "Multiton.php" - #: ../../Creational/Multiton/README.rst:38 msgid "Test" msgstr "Теst" diff --git a/locale/de/LC_MESSAGES/Creational/Pool/README.po b/locale/de/LC_MESSAGES/Creational/Pool/README.po index a77401d..f84a67a 100644 --- a/locale/de/LC_MESSAGES/Creational/Pool/README.po +++ b/locale/de/LC_MESSAGES/Creational/Pool/README.po @@ -76,26 +76,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Creational/Pool/README.rst:36 -msgid "Pool.php" -msgstr "Pool.php" - -#: ../../Creational/Pool/README.rst:42 -msgid "Processor.php" -msgstr "Processor.php" - -#: ../../Creational/Pool/README.rst:48 -msgid "Worker.php" -msgstr "Worker.php" - #: ../../Creational/Pool/README.rst:55 msgid "Test" msgstr "Теst" - -#: ../../Creational/Pool/README.rst:57 -msgid "Tests/PoolTest.php" -msgstr "Tests/PoolTest.php" - -#: ../../Creational/Pool/README.rst:63 -msgid "Tests/TestWorker.php" -msgstr "Tests/TestWorker.php" diff --git a/locale/de/LC_MESSAGES/Creational/Prototype/README.po b/locale/de/LC_MESSAGES/Creational/Prototype/README.po index 59840c7..8ff4dc4 100644 --- a/locale/de/LC_MESSAGES/Creational/Prototype/README.po +++ b/locale/de/LC_MESSAGES/Creational/Prototype/README.po @@ -54,22 +54,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Creational/Prototype/README.rst:28 -msgid "index.php" -msgstr "index.php" - -#: ../../Creational/Prototype/README.rst:34 -msgid "BookPrototype.php" -msgstr "BookPrototype.php" - -#: ../../Creational/Prototype/README.rst:40 -msgid "BarBookPrototype.php" -msgstr "BarBookPrototype.php" - -#: ../../Creational/Prototype/README.rst:46 -msgid "FooBookPrototype.php" -msgstr "FooBookPrototype.php" - #: ../../Creational/Prototype/README.rst:53 msgid "Test" msgstr "Теst" diff --git a/locale/de/LC_MESSAGES/Creational/SimpleFactory/README.po b/locale/de/LC_MESSAGES/Creational/SimpleFactory/README.po index 9c216de..3ff0222 100644 --- a/locale/de/LC_MESSAGES/Creational/SimpleFactory/README.po +++ b/locale/de/LC_MESSAGES/Creational/SimpleFactory/README.po @@ -55,26 +55,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Creational/SimpleFactory/README.rst:27 -msgid "SimpleFactory.php" -msgstr "SimpleFactory.php" - -#: ../../Creational/SimpleFactory/README.rst:33 -msgid "VehicleInterface.php" -msgstr "VehicleInterface.php" - -#: ../../Creational/SimpleFactory/README.rst:39 -msgid "Bicycle.php" -msgstr "Bicycle.php" - -#: ../../Creational/SimpleFactory/README.rst:45 -msgid "Scooter.php" -msgstr "Scooter.php" - #: ../../Creational/SimpleFactory/README.rst:52 msgid "Test" msgstr "Теst" - -#: ../../Creational/SimpleFactory/README.rst:54 -msgid "Tests/SimpleFactoryTest.php" -msgstr "Tests/SimpleFactoryTest.php" diff --git a/locale/de/LC_MESSAGES/Creational/Singleton/README.po b/locale/de/LC_MESSAGES/Creational/Singleton/README.po index 6c62928..1ff2dfc 100644 --- a/locale/de/LC_MESSAGES/Creational/Singleton/README.po +++ b/locale/de/LC_MESSAGES/Creational/Singleton/README.po @@ -72,14 +72,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Creational/Singleton/README.rst:34 -msgid "Singleton.php" -msgstr "Singleton.php" - #: ../../Creational/Singleton/README.rst:41 msgid "Test" msgstr "Теst" - -#: ../../Creational/Singleton/README.rst:43 -msgid "Tests/SingletonTest.php" -msgstr "Tests/SingletonTest.php" diff --git a/locale/de/LC_MESSAGES/Creational/StaticFactory/README.po b/locale/de/LC_MESSAGES/Creational/StaticFactory/README.po index 8281af6..c37877e 100644 --- a/locale/de/LC_MESSAGES/Creational/StaticFactory/README.po +++ b/locale/de/LC_MESSAGES/Creational/StaticFactory/README.po @@ -59,26 +59,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Creational/StaticFactory/README.rst:31 -msgid "StaticFactory.php" -msgstr "StaticFactory.php" - -#: ../../Creational/StaticFactory/README.rst:37 -msgid "FormatterInterface.php" -msgstr "FormatterInterface.php" - -#: ../../Creational/StaticFactory/README.rst:43 -msgid "FormatString.php" -msgstr "FormatString.php" - -#: ../../Creational/StaticFactory/README.rst:49 -msgid "FormatNumber.php" -msgstr "FormatNumber.php" - #: ../../Creational/StaticFactory/README.rst:56 msgid "Test" msgstr "Теst" - -#: ../../Creational/StaticFactory/README.rst:58 -msgid "Tests/StaticFactoryTest.php" -msgstr "Tests/StaticFactoryTest.php" diff --git a/locale/de/LC_MESSAGES/More/Delegation/README.po b/locale/de/LC_MESSAGES/More/Delegation/README.po index 907d828..4332b4f 100644 --- a/locale/de/LC_MESSAGES/More/Delegation/README.po +++ b/locale/de/LC_MESSAGES/More/Delegation/README.po @@ -58,23 +58,7 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../More/Delegation/README.rst:26 -msgid "Usage.php" -msgstr "" - -#: ../../More/Delegation/README.rst:32 -msgid "TeamLead.php" -msgstr "" - -#: ../../More/Delegation/README.rst:38 -msgid "JuniorDeveloper.php" -msgstr "" - #: ../../More/Delegation/README.rst:45 msgid "Test" msgstr "" -#: ../../More/Delegation/README.rst:47 -msgid "Tests/DelegationTest.php" -msgstr "" - diff --git a/locale/de/LC_MESSAGES/More/EAV/README.po b/locale/de/LC_MESSAGES/More/EAV/README.po index d0113c0..8e72b00 100644 --- a/locale/de/LC_MESSAGES/More/EAV/README.po +++ b/locale/de/LC_MESSAGES/More/EAV/README.po @@ -64,15 +64,3 @@ msgstr "" msgid "Test" msgstr "" -#: ../../More/EAV/README.rst:104 -msgid "Tests/EntityTest.php" -msgstr "" - -#: ../../More/EAV/README.rst:110 -msgid "Tests/AttributeTest.php" -msgstr "" - -#: ../../More/EAV/README.rst:116 -msgid "Tests/ValueTest.php" -msgstr "" - diff --git a/locale/de/LC_MESSAGES/More/Repository/README.po b/locale/de/LC_MESSAGES/More/Repository/README.po index f4e077a..1c1dd7f 100644 --- a/locale/de/LC_MESSAGES/More/Repository/README.po +++ b/locale/de/LC_MESSAGES/More/Repository/README.po @@ -66,22 +66,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../More/Repository/README.rst:34 -msgid "Post.php" -msgstr "Post.php" - -#: ../../More/Repository/README.rst:40 -msgid "PostRepository.php" -msgstr "PostRepository.php" - -#: ../../More/Repository/README.rst:46 -msgid "Persistence.php" -msgstr "Persistence.php" - -#: ../../More/Repository/README.rst:52 -msgid "InMemoryPersistence.php" -msgstr "InMemoryPersistence.php" - #: ../../More/Repository/README.rst:59 msgid "Test" msgstr "Теst" diff --git a/locale/de/LC_MESSAGES/More/ServiceLocator/README.po b/locale/de/LC_MESSAGES/More/ServiceLocator/README.po index d3914c8..8baeb3e 100644 --- a/locale/de/LC_MESSAGES/More/ServiceLocator/README.po +++ b/locale/de/LC_MESSAGES/More/ServiceLocator/README.po @@ -75,34 +75,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../More/ServiceLocator/README.rst:38 -msgid "ServiceLocatorInterface.php" -msgstr "ServiceLocatorInterface.php" - -#: ../../More/ServiceLocator/README.rst:44 -msgid "ServiceLocator.php" -msgstr "ServiceLocator.php" - -#: ../../More/ServiceLocator/README.rst:50 -msgid "LogServiceInterface.php" -msgstr "LogServiceInterface.php" - -#: ../../More/ServiceLocator/README.rst:56 -msgid "LogService.php" -msgstr "LogService.php" - -#: ../../More/ServiceLocator/README.rst:62 -msgid "DatabaseServiceInterface.php" -msgstr "DatabaseServiceInterface.php" - -#: ../../More/ServiceLocator/README.rst:68 -msgid "DatabaseService.php" -msgstr "DatabaseService.php" - #: ../../More/ServiceLocator/README.rst:75 msgid "Test" msgstr "Теst" - -#: ../../More/ServiceLocator/README.rst:77 -msgid "Tests/ServiceLocatorTest.php" -msgstr "Tests/ServiceLocatorTest.php" diff --git a/locale/de/LC_MESSAGES/Structural/Adapter/README.po b/locale/de/LC_MESSAGES/Structural/Adapter/README.po index d02f228..9517fda 100644 --- a/locale/de/LC_MESSAGES/Structural/Adapter/README.po +++ b/locale/de/LC_MESSAGES/Structural/Adapter/README.po @@ -63,30 +63,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Structural/Adapter/README.rst:31 -msgid "PaperBookInterface.php" -msgstr "PaperBookInterface.php" - -#: ../../Structural/Adapter/README.rst:37 -msgid "Book.php" -msgstr "Book.php" - -#: ../../Structural/Adapter/README.rst:43 -msgid "EBookAdapter.php" -msgstr "EBookAdapter.php" - -#: ../../Structural/Adapter/README.rst:49 -msgid "EBookInterface.php" -msgstr "EBookInterface.php" - -#: ../../Structural/Adapter/README.rst:55 -msgid "Kindle.php" -msgstr "Kindle.php" - #: ../../Structural/Adapter/README.rst:62 msgid "Test" msgstr "Теst" - -#: ../../Structural/Adapter/README.rst:64 -msgid "Tests/AdapterTest.php" -msgstr "Tests/AdapterTest.php" diff --git a/locale/de/LC_MESSAGES/Structural/Bridge/README.po b/locale/de/LC_MESSAGES/Structural/Bridge/README.po index 62dd226..b57ae86 100644 --- a/locale/de/LC_MESSAGES/Structural/Bridge/README.po +++ b/locale/de/LC_MESSAGES/Structural/Bridge/README.po @@ -50,34 +50,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Structural/Bridge/README.rst:28 -msgid "Workshop.php" -msgstr "Workshop.php" - -#: ../../Structural/Bridge/README.rst:34 -msgid "Assemble.php" -msgstr "Assemble.php" - -#: ../../Structural/Bridge/README.rst:40 -msgid "Produce.php" -msgstr "Produce.php" - -#: ../../Structural/Bridge/README.rst:46 -msgid "Vehicle.php" -msgstr "Vehicle.php" - -#: ../../Structural/Bridge/README.rst:52 -msgid "Motorcycle.php" -msgstr "Motorcycle.php" - -#: ../../Structural/Bridge/README.rst:58 -msgid "Car.php" -msgstr "Car.php" - #: ../../Structural/Bridge/README.rst:65 msgid "Test" msgstr "Теst" - -#: ../../Structural/Bridge/README.rst:67 -msgid "Tests/BridgeTest.php" -msgstr "Tests/BridgeTest.php" diff --git a/locale/de/LC_MESSAGES/Structural/Composite/README.po b/locale/de/LC_MESSAGES/Structural/Composite/README.po index 3bb2f07..92d0b5d 100644 --- a/locale/de/LC_MESSAGES/Structural/Composite/README.po +++ b/locale/de/LC_MESSAGES/Structural/Composite/README.po @@ -63,26 +63,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Structural/Composite/README.rst:31 -msgid "FormElement.php" -msgstr "FormElement.php" - -#: ../../Structural/Composite/README.rst:37 -msgid "Form.php" -msgstr "Form.php" - -#: ../../Structural/Composite/README.rst:43 -msgid "InputElement.php" -msgstr "InputElement.php" - -#: ../../Structural/Composite/README.rst:49 -msgid "TextElement.php" -msgstr "TextElement.php" - #: ../../Structural/Composite/README.rst:56 msgid "Test" msgstr "Теst" - -#: ../../Structural/Composite/README.rst:58 -msgid "Tests/CompositeTest.php" -msgstr "Tests/CompositeTest.php" diff --git a/locale/de/LC_MESSAGES/Structural/DataMapper/README.po b/locale/de/LC_MESSAGES/Structural/DataMapper/README.po index 0caf1e7..821cf65 100644 --- a/locale/de/LC_MESSAGES/Structural/DataMapper/README.po +++ b/locale/de/LC_MESSAGES/Structural/DataMapper/README.po @@ -75,18 +75,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Structural/DataMapper/README.rst:38 -msgid "User.php" -msgstr "User.php" - -#: ../../Structural/DataMapper/README.rst:44 -msgid "UserMapper.php" -msgstr "UserMapper.php" - #: ../../Structural/DataMapper/README.rst:51 msgid "Test" msgstr "Теst" - -#: ../../Structural/DataMapper/README.rst:53 -msgid "Tests/DataMapperTest.php" -msgstr "Tests/DataMapperTest.php" diff --git a/locale/de/LC_MESSAGES/Structural/Decorator/README.po b/locale/de/LC_MESSAGES/Structural/Decorator/README.po index c9e07db..584daff 100644 --- a/locale/de/LC_MESSAGES/Structural/Decorator/README.po +++ b/locale/de/LC_MESSAGES/Structural/Decorator/README.po @@ -51,30 +51,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Structural/Decorator/README.rst:28 -msgid "RendererInterface.php" -msgstr "RendererInterface.php" - -#: ../../Structural/Decorator/README.rst:34 -msgid "Webservice.php" -msgstr "Webservice.php" - -#: ../../Structural/Decorator/README.rst:40 -msgid "Decorator.php" -msgstr "Decorator.php" - -#: ../../Structural/Decorator/README.rst:46 -msgid "RenderInXml.php" -msgstr "RenderInXml.php" - -#: ../../Structural/Decorator/README.rst:52 -msgid "RenderInJson.php" -msgstr "RenderInJson.php" - #: ../../Structural/Decorator/README.rst:59 msgid "Test" msgstr "Теst" - -#: ../../Structural/Decorator/README.rst:61 -msgid "Tests/DecoratorTest.php" -msgstr "Tests/DecoratorTest.php" diff --git a/locale/de/LC_MESSAGES/Structural/DependencyInjection/README.po b/locale/de/LC_MESSAGES/Structural/DependencyInjection/README.po index 101df4f..9abbf97 100644 --- a/locale/de/LC_MESSAGES/Structural/DependencyInjection/README.po +++ b/locale/de/LC_MESSAGES/Structural/DependencyInjection/README.po @@ -99,30 +99,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Structural/DependencyInjection/README.rst:48 -msgid "AbstractConfig.php" -msgstr "AbstractConfig.php" - -#: ../../Structural/DependencyInjection/README.rst:54 -msgid "Parameters.php" -msgstr "Parameters.php" - -#: ../../Structural/DependencyInjection/README.rst:60 -msgid "ArrayConfig.php" -msgstr "ArrayConfig.php" - -#: ../../Structural/DependencyInjection/README.rst:66 -msgid "Connection.php" -msgstr "Connection.php" - #: ../../Structural/DependencyInjection/README.rst:73 msgid "Test" msgstr "Теst" - -#: ../../Structural/DependencyInjection/README.rst:75 -msgid "Tests/DependencyInjectionTest.php" -msgstr "Tests/DependencyInjectionTest.php" - -#: ../../Structural/DependencyInjection/README.rst:81 -msgid "Tests/config.php" -msgstr "Tests/config.php" diff --git a/locale/de/LC_MESSAGES/Structural/Facade/README.po b/locale/de/LC_MESSAGES/Structural/Facade/README.po index ee3902c..957d6a8 100644 --- a/locale/de/LC_MESSAGES/Structural/Facade/README.po +++ b/locale/de/LC_MESSAGES/Structural/Facade/README.po @@ -81,22 +81,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Structural/Facade/README.rst:38 -msgid "Facade.php" -msgstr "Facade.php" - -#: ../../Structural/Facade/README.rst:44 -msgid "OsInterface.php" -msgstr "OsInterface.php" - -#: ../../Structural/Facade/README.rst:50 -msgid "BiosInterface.php" -msgstr "BiosInterface.php" - #: ../../Structural/Facade/README.rst:57 msgid "Test" msgstr "Теst" - -#: ../../Structural/Facade/README.rst:59 -msgid "Tests/FacadeTest.php" -msgstr "Tests/FacadeTest.php" diff --git a/locale/de/LC_MESSAGES/Structural/FluentInterface/README.po b/locale/de/LC_MESSAGES/Structural/FluentInterface/README.po index f51776a..c4ed0c3 100644 --- a/locale/de/LC_MESSAGES/Structural/FluentInterface/README.po +++ b/locale/de/LC_MESSAGES/Structural/FluentInterface/README.po @@ -59,14 +59,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Structural/FluentInterface/README.rst:30 -msgid "Sql.php" -msgstr "Sql.php" - #: ../../Structural/FluentInterface/README.rst:37 msgid "Test" msgstr "Теst" - -#: ../../Structural/FluentInterface/README.rst:39 -msgid "Tests/FluentInterfaceTest.php" -msgstr "Tests/FluentInterfaceTest.php" diff --git a/locale/de/LC_MESSAGES/Structural/Flyweight/README.po b/locale/de/LC_MESSAGES/Structural/Flyweight/README.po index cfa8492..2514886 100644 --- a/locale/de/LC_MESSAGES/Structural/Flyweight/README.po +++ b/locale/de/LC_MESSAGES/Structural/Flyweight/README.po @@ -47,23 +47,7 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Flyweight/README.rst:23 -msgid "FlyweightInterface.php" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:29 -msgid "CharacterFlyweight.php" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:35 -msgid "FlyweightFactory.php" -msgstr "" - #: ../../Structural/Flyweight/README.rst:42 msgid "Test" msgstr "" -#: ../../Structural/Flyweight/README.rst:44 -msgid "Tests/FlyweightTest.php" -msgstr "" - diff --git a/locale/de/LC_MESSAGES/Structural/Proxy/README.po b/locale/de/LC_MESSAGES/Structural/Proxy/README.po index 3d85bb4..9f14568 100644 --- a/locale/de/LC_MESSAGES/Structural/Proxy/README.po +++ b/locale/de/LC_MESSAGES/Structural/Proxy/README.po @@ -53,14 +53,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Structural/Proxy/README.rst:28 -msgid "Record.php" -msgstr "Record.php" - -#: ../../Structural/Proxy/README.rst:34 -msgid "RecordProxy.php" -msgstr "RecordProxy.php" - #: ../../Structural/Proxy/README.rst:41 msgid "Test" msgstr "Теst" diff --git a/locale/de/LC_MESSAGES/Structural/Registry/README.po b/locale/de/LC_MESSAGES/Structural/Registry/README.po index efda2fd..c1c2fbf 100644 --- a/locale/de/LC_MESSAGES/Structural/Registry/README.po +++ b/locale/de/LC_MESSAGES/Structural/Registry/README.po @@ -64,14 +64,6 @@ msgstr "Code" msgid "You can also find this code on `GitHub`_" msgstr "Du findest den Code auch auf `GitHub`_" -#: ../../Structural/Registry/README.rst:31 -msgid "Registry.php" -msgstr "Registry.php" - #: ../../Structural/Registry/README.rst:38 msgid "Test" msgstr "Теst" - -#: ../../Structural/Registry/README.rst:40 -msgid "Tests/RegistryTest.php" -msgstr "Tests/RegistryTest.php" diff --git a/locale/es/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po b/locale/es/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po index cf1873c..9b795e4 100644 --- a/locale/es/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po +++ b/locale/es/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po @@ -65,26 +65,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Behavioral/ChainOfResponsibilities/README.rst:36 -msgid "Request.php" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:42 -msgid "Handler.php" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:48 -msgid "Responsible/SlowStorage.php" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:54 -msgid "Responsible/FastStorage.php" -msgstr "" - #: ../../Behavioral/ChainOfResponsibilities/README.rst:61 msgid "Test" msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:63 -msgid "Tests/ChainTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Behavioral/Command/README.po b/locale/es/LC_MESSAGES/Behavioral/Command/README.po index 0198a5d..25279ce 100644 --- a/locale/es/LC_MESSAGES/Behavioral/Command/README.po +++ b/locale/es/LC_MESSAGES/Behavioral/Command/README.po @@ -74,26 +74,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Behavioral/Command/README.rst:43 -msgid "CommandInterface.php" -msgstr "" - -#: ../../Behavioral/Command/README.rst:49 -msgid "HelloCommand.php" -msgstr "" - -#: ../../Behavioral/Command/README.rst:55 -msgid "Receiver.php" -msgstr "" - -#: ../../Behavioral/Command/README.rst:61 -msgid "Invoker.php" -msgstr "" - #: ../../Behavioral/Command/README.rst:68 msgid "Test" msgstr "" - -#: ../../Behavioral/Command/README.rst:70 -msgid "Tests/CommandTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Behavioral/Iterator/README.po b/locale/es/LC_MESSAGES/Behavioral/Iterator/README.po index 18e83fb..709ea20 100644 --- a/locale/es/LC_MESSAGES/Behavioral/Iterator/README.po +++ b/locale/es/LC_MESSAGES/Behavioral/Iterator/README.po @@ -56,26 +56,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Behavioral/Iterator/README.rst:36 -msgid "Book.php" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:42 -msgid "BookList.php" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:48 -msgid "BookListIterator.php" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:54 -msgid "BookListReverseIterator.php" -msgstr "" - #: ../../Behavioral/Iterator/README.rst:61 msgid "Test" msgstr "" - -#: ../../Behavioral/Iterator/README.rst:63 -msgid "Tests/IteratorTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Behavioral/Mediator/README.po b/locale/es/LC_MESSAGES/Behavioral/Mediator/README.po index 1bf6c04..bac2aeb 100644 --- a/locale/es/LC_MESSAGES/Behavioral/Mediator/README.po +++ b/locale/es/LC_MESSAGES/Behavioral/Mediator/README.po @@ -45,34 +45,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Behavioral/Mediator/README.rst:27 -msgid "MediatorInterface.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:33 -msgid "Mediator.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:39 -msgid "Colleague.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:45 -msgid "Subsystem/Client.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:51 -msgid "Subsystem/Database.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:57 -msgid "Subsystem/Server.php" -msgstr "" - #: ../../Behavioral/Mediator/README.rst:64 msgid "Test" msgstr "" - -#: ../../Behavioral/Mediator/README.rst:66 -msgid "Tests/MediatorTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Behavioral/Memento/README.po b/locale/es/LC_MESSAGES/Behavioral/Memento/README.po index ec42c6a..4cab022 100644 --- a/locale/es/LC_MESSAGES/Behavioral/Memento/README.po +++ b/locale/es/LC_MESSAGES/Behavioral/Memento/README.po @@ -102,26 +102,10 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Behavioral/Memento/README.rst:57 -msgid "Memento.php" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:63 -msgid "Originator.php" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:69 -msgid "Caretaker.php" -msgstr "" - #: ../../Behavioral/Memento/README.rst:76 msgid "Test" msgstr "" -#: ../../Behavioral/Memento/README.rst:78 -msgid "Tests/MementoTest.php" -msgstr "" - #. # diff --git a/locale/es/LC_MESSAGES/Behavioral/NullObject/README.po b/locale/es/LC_MESSAGES/Behavioral/NullObject/README.po index 592e25c..8c52f4f 100644 --- a/locale/es/LC_MESSAGES/Behavioral/NullObject/README.po +++ b/locale/es/LC_MESSAGES/Behavioral/NullObject/README.po @@ -78,26 +78,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Behavioral/NullObject/README.rst:41 -msgid "Service.php" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:47 -msgid "LoggerInterface.php" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:53 -msgid "PrintLogger.php" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:59 -msgid "NullLogger.php" -msgstr "" - #: ../../Behavioral/NullObject/README.rst:66 msgid "Test" msgstr "" - -#: ../../Behavioral/NullObject/README.rst:68 -msgid "Tests/LoggerTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Behavioral/Observer/README.po b/locale/es/LC_MESSAGES/Behavioral/Observer/README.po index 3889db1..ec38f2c 100644 --- a/locale/es/LC_MESSAGES/Behavioral/Observer/README.po +++ b/locale/es/LC_MESSAGES/Behavioral/Observer/README.po @@ -58,18 +58,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Behavioral/Observer/README.rst:36 -msgid "User.php" -msgstr "" - -#: ../../Behavioral/Observer/README.rst:42 -msgid "UserObserver.php" -msgstr "" - #: ../../Behavioral/Observer/README.rst:49 msgid "Test" msgstr "" - -#: ../../Behavioral/Observer/README.rst:51 -msgid "Tests/ObserverTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Behavioral/Specification/README.po b/locale/es/LC_MESSAGES/Behavioral/Specification/README.po index bf96867..4f3237e 100644 --- a/locale/es/LC_MESSAGES/Behavioral/Specification/README.po +++ b/locale/es/LC_MESSAGES/Behavioral/Specification/README.po @@ -47,38 +47,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Behavioral/Specification/README.rst:29 -msgid "Item.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:35 -msgid "SpecificationInterface.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:41 -msgid "AbstractSpecification.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:47 -msgid "Either.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:53 -msgid "PriceSpecification.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:59 -msgid "Plus.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:65 -msgid "Not.php" -msgstr "" - #: ../../Behavioral/Specification/README.rst:72 msgid "Test" msgstr "" - -#: ../../Behavioral/Specification/README.rst:74 -msgid "Tests/SpecificationTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Behavioral/State/README.po b/locale/es/LC_MESSAGES/Behavioral/State/README.po index 193cd6c..c18a2a8 100644 --- a/locale/es/LC_MESSAGES/Behavioral/State/README.po +++ b/locale/es/LC_MESSAGES/Behavioral/State/README.po @@ -38,26 +38,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Behavioral/State/README.rst:23 -msgid "OrderController.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:29 -msgid "OrderFactory.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:35 -msgid "OrderInterface.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:41 -msgid "ShippingOrder.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:47 -msgid "CreateOrder.php" -msgstr "" - #: ../../Behavioral/State/README.rst:54 msgid "Test" msgstr "" diff --git a/locale/es/LC_MESSAGES/Behavioral/Strategy/README.po b/locale/es/LC_MESSAGES/Behavioral/Strategy/README.po index 16f4b88..8060552 100644 --- a/locale/es/LC_MESSAGES/Behavioral/Strategy/README.po +++ b/locale/es/LC_MESSAGES/Behavioral/Strategy/README.po @@ -67,26 +67,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Behavioral/Strategy/README.rst:37 -msgid "ObjectCollection.php" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:43 -msgid "ComparatorInterface.php" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:49 -msgid "DateComparator.php" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:55 -msgid "IdComparator.php" -msgstr "" - #: ../../Behavioral/Strategy/README.rst:62 msgid "Test" msgstr "" - -#: ../../Behavioral/Strategy/README.rst:64 -msgid "Tests/StrategyTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Behavioral/TemplateMethod/README.po b/locale/es/LC_MESSAGES/Behavioral/TemplateMethod/README.po index f603e75..3cca2b3 100644 --- a/locale/es/LC_MESSAGES/Behavioral/TemplateMethod/README.po +++ b/locale/es/LC_MESSAGES/Behavioral/TemplateMethod/README.po @@ -62,22 +62,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Behavioral/TemplateMethod/README.rst:36 -msgid "Journey.php" -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:42 -msgid "BeachJourney.php" -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:48 -msgid "CityJourney.php" -msgstr "" - #: ../../Behavioral/TemplateMethod/README.rst:55 msgid "Test" msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:57 -msgid "Tests/JourneyTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Behavioral/Visitor/README.po b/locale/es/LC_MESSAGES/Behavioral/Visitor/README.po index 563d992..50f3b70 100644 --- a/locale/es/LC_MESSAGES/Behavioral/Visitor/README.po +++ b/locale/es/LC_MESSAGES/Behavioral/Visitor/README.po @@ -46,30 +46,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Behavioral/Visitor/README.rst:28 -msgid "RoleVisitorInterface.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:34 -msgid "RolePrintVisitor.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:40 -msgid "Role.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:46 -msgid "User.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:52 -msgid "Group.php" -msgstr "" - #: ../../Behavioral/Visitor/README.rst:59 msgid "Test" msgstr "" - -#: ../../Behavioral/Visitor/README.rst:61 -msgid "Tests/VisitorTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Creational/AbstractFactory/README.po b/locale/es/LC_MESSAGES/Creational/AbstractFactory/README.po index d15d864..0e0c68a 100644 --- a/locale/es/LC_MESSAGES/Creational/AbstractFactory/README.po +++ b/locale/es/LC_MESSAGES/Creational/AbstractFactory/README.po @@ -45,50 +45,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Creational/AbstractFactory/README.rst:24 -msgid "AbstractFactory.php" -msgstr "AbstractFactory.php" - -#: ../../Creational/AbstractFactory/README.rst:30 -msgid "JsonFactory.php" -msgstr "JsonFactory.php" - -#: ../../Creational/AbstractFactory/README.rst:36 -msgid "HtmlFactory.php" -msgstr "HtmlFactory.php" - -#: ../../Creational/AbstractFactory/README.rst:42 -msgid "MediaInterface.php" -msgstr "MediaInterface.php" - -#: ../../Creational/AbstractFactory/README.rst:48 -msgid "Picture.php" -msgstr "Picture.php" - -#: ../../Creational/AbstractFactory/README.rst:54 -msgid "Text.php" -msgstr "Text.php" - -#: ../../Creational/AbstractFactory/README.rst:60 -msgid "Json/Picture.php" -msgstr "Json/Picture.php" - -#: ../../Creational/AbstractFactory/README.rst:66 -msgid "Json/Text.php" -msgstr "Json/Text.php" - -#: ../../Creational/AbstractFactory/README.rst:72 -msgid "Html/Picture.php" -msgstr "Html/Picture.php" - -#: ../../Creational/AbstractFactory/README.rst:78 -msgid "Html/Text.php" -msgstr "Html/Text.php" - #: ../../Creational/AbstractFactory/README.rst:85 msgid "Test" msgstr "Test" - -#: ../../Creational/AbstractFactory/README.rst:87 -msgid "Tests/AbstractFactoryTest.php" -msgstr "Tests/AbstractFactoryTest.php" diff --git a/locale/es/LC_MESSAGES/Creational/Builder/README.po b/locale/es/LC_MESSAGES/Creational/Builder/README.po index 9458005..7d2f6ca 100644 --- a/locale/es/LC_MESSAGES/Creational/Builder/README.po +++ b/locale/es/LC_MESSAGES/Creational/Builder/README.po @@ -72,50 +72,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Creational/Builder/README.rst:35 -msgid "Director.php" -msgstr "Director.php" - -#: ../../Creational/Builder/README.rst:41 -msgid "BuilderInterface.php" -msgstr "BuilderInterface.php" - -#: ../../Creational/Builder/README.rst:47 -msgid "BikeBuilder.php" -msgstr "BikeBuilder.php" - -#: ../../Creational/Builder/README.rst:53 -msgid "CarBuilder.php" -msgstr "CarBuilder.php" - -#: ../../Creational/Builder/README.rst:59 -msgid "Parts/Vehicle.php" -msgstr "Parts/Vehicle.php" - -#: ../../Creational/Builder/README.rst:65 -msgid "Parts/Bike.php" -msgstr "Parts/Bike.php" - -#: ../../Creational/Builder/README.rst:71 -msgid "Parts/Car.php" -msgstr "Parts/Car.php" - -#: ../../Creational/Builder/README.rst:77 -msgid "Parts/Engine.php" -msgstr "Parts/Engine.php" - -#: ../../Creational/Builder/README.rst:83 -msgid "Parts/Wheel.php" -msgstr "Parts/Wheel.php" - -#: ../../Creational/Builder/README.rst:89 -msgid "Parts/Door.php" -msgstr "Parts/Door.php" - #: ../../Creational/Builder/README.rst:96 msgid "Test" msgstr "Test" - -#: ../../Creational/Builder/README.rst:98 -msgid "Tests/DirectorTest.php" -msgstr "Tests/DirectorTest.php" diff --git a/locale/es/LC_MESSAGES/Creational/FactoryMethod/README.po b/locale/es/LC_MESSAGES/Creational/FactoryMethod/README.po index 2767257..274f32f 100644 --- a/locale/es/LC_MESSAGES/Creational/FactoryMethod/README.po +++ b/locale/es/LC_MESSAGES/Creational/FactoryMethod/README.po @@ -60,38 +60,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Creational/FactoryMethod/README.rst:31 -msgid "FactoryMethod.php" -msgstr "FactoryMethod.php" - -#: ../../Creational/FactoryMethod/README.rst:37 -msgid "ItalianFactory.php" -msgstr "ItalianFactory.php" - -#: ../../Creational/FactoryMethod/README.rst:43 -msgid "GermanFactory.php" -msgstr "GermanFactory.php" - -#: ../../Creational/FactoryMethod/README.rst:49 -msgid "VehicleInterface.php" -msgstr "VehicleInterface.php" - -#: ../../Creational/FactoryMethod/README.rst:55 -msgid "Porsche.php" -msgstr "Porsche.php" - -#: ../../Creational/FactoryMethod/README.rst:61 -msgid "Bicycle.php" -msgstr "Bicycle.php" - -#: ../../Creational/FactoryMethod/README.rst:67 -msgid "Ferrari.php" -msgstr "Ferrari.php" - #: ../../Creational/FactoryMethod/README.rst:74 msgid "Test" msgstr "Test" - -#: ../../Creational/FactoryMethod/README.rst:76 -msgid "Tests/FactoryMethodTest.php" -msgstr "Tests/FactoryMethodTest.php" diff --git a/locale/es/LC_MESSAGES/Creational/Multiton/README.po b/locale/es/LC_MESSAGES/Creational/Multiton/README.po index 9ff0c3a..a877fb6 100644 --- a/locale/es/LC_MESSAGES/Creational/Multiton/README.po +++ b/locale/es/LC_MESSAGES/Creational/Multiton/README.po @@ -62,10 +62,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Creational/Multiton/README.rst:31 -msgid "Multiton.php" -msgstr "Multiton.php" - #: ../../Creational/Multiton/README.rst:38 msgid "Test" msgstr "Test" diff --git a/locale/es/LC_MESSAGES/Creational/Pool/README.po b/locale/es/LC_MESSAGES/Creational/Pool/README.po index 9ddb8c9..db1ef6d 100644 --- a/locale/es/LC_MESSAGES/Creational/Pool/README.po +++ b/locale/es/LC_MESSAGES/Creational/Pool/README.po @@ -69,26 +69,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Creational/Pool/README.rst:36 -msgid "Pool.php" -msgstr "" - -#: ../../Creational/Pool/README.rst:42 -msgid "Processor.php" -msgstr "" - -#: ../../Creational/Pool/README.rst:48 -msgid "Worker.php" -msgstr "" - #: ../../Creational/Pool/README.rst:55 msgid "Test" msgstr "" - -#: ../../Creational/Pool/README.rst:57 -msgid "Tests/PoolTest.php" -msgstr "" - -#: ../../Creational/Pool/README.rst:63 -msgid "Tests/TestWorker.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Creational/Prototype/README.po b/locale/es/LC_MESSAGES/Creational/Prototype/README.po index 422c3ef..87f3561 100644 --- a/locale/es/LC_MESSAGES/Creational/Prototype/README.po +++ b/locale/es/LC_MESSAGES/Creational/Prototype/README.po @@ -53,22 +53,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Creational/Prototype/README.rst:28 -msgid "index.php" -msgstr "index.php" - -#: ../../Creational/Prototype/README.rst:34 -msgid "BookPrototype.php" -msgstr "BookPrototype.php" - -#: ../../Creational/Prototype/README.rst:40 -msgid "BarBookPrototype.php" -msgstr "BarBookPrototype.php" - -#: ../../Creational/Prototype/README.rst:46 -msgid "FooBookPrototype.php" -msgstr "FooBookPrototype.php" - #: ../../Creational/Prototype/README.rst:53 msgid "Test" msgstr "Test" diff --git a/locale/es/LC_MESSAGES/Creational/SimpleFactory/README.po b/locale/es/LC_MESSAGES/Creational/SimpleFactory/README.po index 1535b3a..021178a 100644 --- a/locale/es/LC_MESSAGES/Creational/SimpleFactory/README.po +++ b/locale/es/LC_MESSAGES/Creational/SimpleFactory/README.po @@ -47,26 +47,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Creational/SimpleFactory/README.rst:27 -msgid "SimpleFactory.php" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:33 -msgid "VehicleInterface.php" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:39 -msgid "Bicycle.php" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:45 -msgid "Scooter.php" -msgstr "" - #: ../../Creational/SimpleFactory/README.rst:52 msgid "Test" msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:54 -msgid "Tests/SimpleFactoryTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Creational/Singleton/README.po b/locale/es/LC_MESSAGES/Creational/Singleton/README.po index 9f0dfb2..c53dcaa 100644 --- a/locale/es/LC_MESSAGES/Creational/Singleton/README.po +++ b/locale/es/LC_MESSAGES/Creational/Singleton/README.po @@ -71,14 +71,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar este código en `GitHub`_" -#: ../../Creational/Singleton/README.rst:34 -msgid "Singleton.php" -msgstr "Singleton.php" - #: ../../Creational/Singleton/README.rst:41 msgid "Test" msgstr "Test" - -#: ../../Creational/Singleton/README.rst:43 -msgid "Tests/SingletonTest.php" -msgstr "Tests/SingletonTest.php" diff --git a/locale/es/LC_MESSAGES/Creational/StaticFactory/README.po b/locale/es/LC_MESSAGES/Creational/StaticFactory/README.po index 038d1e4..45e367d 100644 --- a/locale/es/LC_MESSAGES/Creational/StaticFactory/README.po +++ b/locale/es/LC_MESSAGES/Creational/StaticFactory/README.po @@ -59,26 +59,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Creational/StaticFactory/README.rst:31 -msgid "StaticFactory.php" -msgstr "StaticFactory.php" - -#: ../../Creational/StaticFactory/README.rst:37 -msgid "FormatterInterface.php" -msgstr "FormatterInterface.php" - -#: ../../Creational/StaticFactory/README.rst:43 -msgid "FormatString.php" -msgstr "FormatString.php" - -#: ../../Creational/StaticFactory/README.rst:49 -msgid "FormatNumber.php" -msgstr "FormatNumber.php" - #: ../../Creational/StaticFactory/README.rst:56 msgid "Test" msgstr "Test" - -#: ../../Creational/StaticFactory/README.rst:58 -msgid "Tests/StaticFactoryTest.php" -msgstr "Tests/StaticFactoryTest.php" diff --git a/locale/es/LC_MESSAGES/More/Delegation/README.po b/locale/es/LC_MESSAGES/More/Delegation/README.po index 0166041..b725b28 100644 --- a/locale/es/LC_MESSAGES/More/Delegation/README.po +++ b/locale/es/LC_MESSAGES/More/Delegation/README.po @@ -58,23 +58,7 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../More/Delegation/README.rst:26 -msgid "Usage.php" -msgstr "" - -#: ../../More/Delegation/README.rst:32 -msgid "TeamLead.php" -msgstr "" - -#: ../../More/Delegation/README.rst:38 -msgid "JuniorDeveloper.php" -msgstr "" - #: ../../More/Delegation/README.rst:45 msgid "Test" msgstr "" -#: ../../More/Delegation/README.rst:47 -msgid "Tests/DelegationTest.php" -msgstr "" - diff --git a/locale/es/LC_MESSAGES/More/EAV/README.po b/locale/es/LC_MESSAGES/More/EAV/README.po index e43d2a8..f305f0a 100644 --- a/locale/es/LC_MESSAGES/More/EAV/README.po +++ b/locale/es/LC_MESSAGES/More/EAV/README.po @@ -64,15 +64,3 @@ msgstr "Puedes encontrar el código en `GitHub`_" msgid "Test" msgstr "" -#: ../../More/EAV/README.rst:104 -msgid "Tests/EntityTest.php" -msgstr "" - -#: ../../More/EAV/README.rst:110 -msgid "Tests/AttributeTest.php" -msgstr "" - -#: ../../More/EAV/README.rst:116 -msgid "Tests/ValueTest.php" -msgstr "" - diff --git a/locale/es/LC_MESSAGES/More/Repository/README.po b/locale/es/LC_MESSAGES/More/Repository/README.po index 1ca95fe..91048c9 100644 --- a/locale/es/LC_MESSAGES/More/Repository/README.po +++ b/locale/es/LC_MESSAGES/More/Repository/README.po @@ -55,22 +55,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../More/Repository/README.rst:34 -msgid "Post.php" -msgstr "" - -#: ../../More/Repository/README.rst:40 -msgid "PostRepository.php" -msgstr "" - -#: ../../More/Repository/README.rst:46 -msgid "Persistence.php" -msgstr "" - -#: ../../More/Repository/README.rst:52 -msgid "InMemoryPersistence.php" -msgstr "" - #: ../../More/Repository/README.rst:59 msgid "Test" msgstr "" diff --git a/locale/es/LC_MESSAGES/More/ServiceLocator/README.po b/locale/es/LC_MESSAGES/More/ServiceLocator/README.po index 63dc0b8..5a0633e 100644 --- a/locale/es/LC_MESSAGES/More/ServiceLocator/README.po +++ b/locale/es/LC_MESSAGES/More/ServiceLocator/README.po @@ -61,34 +61,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../More/ServiceLocator/README.rst:38 -msgid "ServiceLocatorInterface.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:44 -msgid "ServiceLocator.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:50 -msgid "LogServiceInterface.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:56 -msgid "LogService.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:62 -msgid "DatabaseServiceInterface.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:68 -msgid "DatabaseService.php" -msgstr "" - #: ../../More/ServiceLocator/README.rst:75 msgid "Test" msgstr "" - -#: ../../More/ServiceLocator/README.rst:77 -msgid "Tests/ServiceLocatorTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Structural/Adapter/README.po b/locale/es/LC_MESSAGES/Structural/Adapter/README.po index c71d572..227fa2a 100644 --- a/locale/es/LC_MESSAGES/Structural/Adapter/README.po +++ b/locale/es/LC_MESSAGES/Structural/Adapter/README.po @@ -53,30 +53,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Structural/Adapter/README.rst:31 -msgid "PaperBookInterface.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:37 -msgid "Book.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:43 -msgid "EBookAdapter.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:49 -msgid "EBookInterface.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:55 -msgid "Kindle.php" -msgstr "" - #: ../../Structural/Adapter/README.rst:62 msgid "Test" msgstr "" - -#: ../../Structural/Adapter/README.rst:64 -msgid "Tests/AdapterTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Structural/Bridge/README.po b/locale/es/LC_MESSAGES/Structural/Bridge/README.po index 952a5ba..ce14366 100644 --- a/locale/es/LC_MESSAGES/Structural/Bridge/README.po +++ b/locale/es/LC_MESSAGES/Structural/Bridge/README.po @@ -45,34 +45,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Structural/Bridge/README.rst:28 -msgid "Workshop.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:34 -msgid "Assemble.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:40 -msgid "Produce.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:46 -msgid "Vehicle.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:52 -msgid "Motorcycle.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:58 -msgid "Car.php" -msgstr "" - #: ../../Structural/Bridge/README.rst:65 msgid "Test" msgstr "" - -#: ../../Structural/Bridge/README.rst:67 -msgid "Tests/BridgeTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Structural/Composite/README.po b/locale/es/LC_MESSAGES/Structural/Composite/README.po index 30191eb..020a683 100644 --- a/locale/es/LC_MESSAGES/Structural/Composite/README.po +++ b/locale/es/LC_MESSAGES/Structural/Composite/README.po @@ -53,26 +53,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Structural/Composite/README.rst:31 -msgid "FormElement.php" -msgstr "" - -#: ../../Structural/Composite/README.rst:37 -msgid "Form.php" -msgstr "" - -#: ../../Structural/Composite/README.rst:43 -msgid "InputElement.php" -msgstr "" - -#: ../../Structural/Composite/README.rst:49 -msgid "TextElement.php" -msgstr "" - #: ../../Structural/Composite/README.rst:56 msgid "Test" msgstr "" - -#: ../../Structural/Composite/README.rst:58 -msgid "Tests/CompositeTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Structural/DataMapper/README.po b/locale/es/LC_MESSAGES/Structural/DataMapper/README.po index 2834de4..7045650 100644 --- a/locale/es/LC_MESSAGES/Structural/DataMapper/README.po +++ b/locale/es/LC_MESSAGES/Structural/DataMapper/README.po @@ -60,18 +60,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Structural/DataMapper/README.rst:38 -msgid "User.php" -msgstr "" - -#: ../../Structural/DataMapper/README.rst:44 -msgid "UserMapper.php" -msgstr "" - #: ../../Structural/DataMapper/README.rst:51 msgid "Test" msgstr "" - -#: ../../Structural/DataMapper/README.rst:53 -msgid "Tests/DataMapperTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Structural/Decorator/README.po b/locale/es/LC_MESSAGES/Structural/Decorator/README.po index ccbccc5..419785d 100644 --- a/locale/es/LC_MESSAGES/Structural/Decorator/README.po +++ b/locale/es/LC_MESSAGES/Structural/Decorator/README.po @@ -49,30 +49,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Structural/Decorator/README.rst:28 -msgid "RendererInterface.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:34 -msgid "Webservice.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:40 -msgid "Decorator.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:46 -msgid "RenderInXml.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:52 -msgid "RenderInJson.php" -msgstr "" - #: ../../Structural/Decorator/README.rst:59 msgid "Test" msgstr "" - -#: ../../Structural/Decorator/README.rst:61 -msgid "Tests/DecoratorTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Structural/DependencyInjection/README.po b/locale/es/LC_MESSAGES/Structural/DependencyInjection/README.po index 2c5dbde..6da7504 100644 --- a/locale/es/LC_MESSAGES/Structural/DependencyInjection/README.po +++ b/locale/es/LC_MESSAGES/Structural/DependencyInjection/README.po @@ -78,30 +78,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Structural/DependencyInjection/README.rst:48 -msgid "AbstractConfig.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:54 -msgid "Parameters.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:60 -msgid "ArrayConfig.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:66 -msgid "Connection.php" -msgstr "" - #: ../../Structural/DependencyInjection/README.rst:73 msgid "Test" msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:75 -msgid "Tests/DependencyInjectionTest.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:81 -msgid "Tests/config.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Structural/Facade/README.po b/locale/es/LC_MESSAGES/Structural/Facade/README.po index 2f4d4d4..70bb318 100644 --- a/locale/es/LC_MESSAGES/Structural/Facade/README.po +++ b/locale/es/LC_MESSAGES/Structural/Facade/README.po @@ -66,22 +66,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Structural/Facade/README.rst:38 -msgid "Facade.php" -msgstr "" - -#: ../../Structural/Facade/README.rst:44 -msgid "OsInterface.php" -msgstr "" - -#: ../../Structural/Facade/README.rst:50 -msgid "BiosInterface.php" -msgstr "" - #: ../../Structural/Facade/README.rst:57 msgid "Test" msgstr "" - -#: ../../Structural/Facade/README.rst:59 -msgid "Tests/FacadeTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Structural/FluentInterface/README.po b/locale/es/LC_MESSAGES/Structural/FluentInterface/README.po index 9ea7f40..3b9f449 100644 --- a/locale/es/LC_MESSAGES/Structural/FluentInterface/README.po +++ b/locale/es/LC_MESSAGES/Structural/FluentInterface/README.po @@ -53,14 +53,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Structural/FluentInterface/README.rst:30 -msgid "Sql.php" -msgstr "" - #: ../../Structural/FluentInterface/README.rst:37 msgid "Test" msgstr "" - -#: ../../Structural/FluentInterface/README.rst:39 -msgid "Tests/FluentInterfaceTest.php" -msgstr "" diff --git a/locale/es/LC_MESSAGES/Structural/Flyweight/README.po b/locale/es/LC_MESSAGES/Structural/Flyweight/README.po index 9c175aa..fb2bc3d 100644 --- a/locale/es/LC_MESSAGES/Structural/Flyweight/README.po +++ b/locale/es/LC_MESSAGES/Structural/Flyweight/README.po @@ -47,23 +47,7 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Structural/Flyweight/README.rst:23 -msgid "FlyweightInterface.php" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:29 -msgid "CharacterFlyweight.php" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:35 -msgid "FlyweightFactory.php" -msgstr "" - #: ../../Structural/Flyweight/README.rst:42 msgid "Test" msgstr "" -#: ../../Structural/Flyweight/README.rst:44 -msgid "Tests/FlyweightTest.php" -msgstr "" - diff --git a/locale/es/LC_MESSAGES/Structural/Proxy/README.po b/locale/es/LC_MESSAGES/Structural/Proxy/README.po index e1a2c04..7941261 100644 --- a/locale/es/LC_MESSAGES/Structural/Proxy/README.po +++ b/locale/es/LC_MESSAGES/Structural/Proxy/README.po @@ -46,14 +46,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Structural/Proxy/README.rst:28 -msgid "Record.php" -msgstr "" - -#: ../../Structural/Proxy/README.rst:34 -msgid "RecordProxy.php" -msgstr "" - #: ../../Structural/Proxy/README.rst:41 msgid "Test" msgstr "" diff --git a/locale/es/LC_MESSAGES/Structural/Registry/README.po b/locale/es/LC_MESSAGES/Structural/Registry/README.po index 420508f..3529a0d 100644 --- a/locale/es/LC_MESSAGES/Structural/Registry/README.po +++ b/locale/es/LC_MESSAGES/Structural/Registry/README.po @@ -54,14 +54,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "Puedes encontrar el código en `GitHub`_" -#: ../../Structural/Registry/README.rst:31 -msgid "Registry.php" -msgstr "" - #: ../../Structural/Registry/README.rst:38 msgid "Test" msgstr "" - -#: ../../Structural/Registry/README.rst:40 -msgid "Tests/RegistryTest.php" -msgstr "" diff --git a/locale/pl/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po b/locale/pl/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po index a92163b..94d667f 100644 --- a/locale/pl/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po +++ b/locale/pl/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po @@ -74,26 +74,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Behavioral/ChainOfResponsibilities/README.rst:36 -msgid "Request.php" -msgstr "Request.php" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:42 -msgid "Handler.php" -msgstr "Handler.php" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:48 -msgid "Responsible/SlowStorage.php" -msgstr "Responsible/SlowStorage.php" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:54 -msgid "Responsible/FastStorage.php" -msgstr "Responsible/FastStorage.php" - #: ../../Behavioral/ChainOfResponsibilities/README.rst:61 msgid "Test" msgstr "Testy" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:63 -msgid "Tests/ChainTest.php" -msgstr "Tests/ChainTest.php" diff --git a/locale/pl/LC_MESSAGES/Behavioral/Command/README.po b/locale/pl/LC_MESSAGES/Behavioral/Command/README.po index 12d1269..0c6eaf1 100644 --- a/locale/pl/LC_MESSAGES/Behavioral/Command/README.po +++ b/locale/pl/LC_MESSAGES/Behavioral/Command/README.po @@ -86,26 +86,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Behavioral/Command/README.rst:43 -msgid "CommandInterface.php" -msgstr "CommandInterface.php" - -#: ../../Behavioral/Command/README.rst:49 -msgid "HelloCommand.php" -msgstr "HelloCommand.php" - -#: ../../Behavioral/Command/README.rst:55 -msgid "Receiver.php" -msgstr "Receiver.php" - -#: ../../Behavioral/Command/README.rst:61 -msgid "Invoker.php" -msgstr "Invoker.php" - #: ../../Behavioral/Command/README.rst:68 msgid "Test" msgstr "Testy" - -#: ../../Behavioral/Command/README.rst:70 -msgid "Tests/CommandTest.php" -msgstr "Tests/CommandTest.php" diff --git a/locale/pl/LC_MESSAGES/Behavioral/Iterator/README.po b/locale/pl/LC_MESSAGES/Behavioral/Iterator/README.po index 798bae0..0a7f988 100644 --- a/locale/pl/LC_MESSAGES/Behavioral/Iterator/README.po +++ b/locale/pl/LC_MESSAGES/Behavioral/Iterator/README.po @@ -64,26 +64,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Behavioral/Iterator/README.rst:36 -msgid "Book.php" -msgstr "Book.php" - -#: ../../Behavioral/Iterator/README.rst:42 -msgid "BookList.php" -msgstr "BookList.php" - -#: ../../Behavioral/Iterator/README.rst:48 -msgid "BookListIterator.php" -msgstr "BookListIterator.php" - -#: ../../Behavioral/Iterator/README.rst:54 -msgid "BookListReverseIterator.php" -msgstr "BookListReverseIterator.php" - #: ../../Behavioral/Iterator/README.rst:61 msgid "Test" msgstr "Testy" - -#: ../../Behavioral/Iterator/README.rst:63 -msgid "Tests/IteratorTest.php" -msgstr "Tests/IteratorTest.php" diff --git a/locale/pl/LC_MESSAGES/Behavioral/Mediator/README.po b/locale/pl/LC_MESSAGES/Behavioral/Mediator/README.po index 563e961..1673979 100644 --- a/locale/pl/LC_MESSAGES/Behavioral/Mediator/README.po +++ b/locale/pl/LC_MESSAGES/Behavioral/Mediator/README.po @@ -55,34 +55,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Behavioral/Mediator/README.rst:27 -msgid "MediatorInterface.php" -msgstr "MediatorInterface.php" - -#: ../../Behavioral/Mediator/README.rst:33 -msgid "Mediator.php" -msgstr "Mediator.php" - -#: ../../Behavioral/Mediator/README.rst:39 -msgid "Colleague.php" -msgstr "Colleague.php" - -#: ../../Behavioral/Mediator/README.rst:45 -msgid "Subsystem/Client.php" -msgstr "Subsystem/Client.php" - -#: ../../Behavioral/Mediator/README.rst:51 -msgid "Subsystem/Database.php" -msgstr "Subsystem/Database.php" - -#: ../../Behavioral/Mediator/README.rst:57 -msgid "Subsystem/Server.php" -msgstr "Subsystem/Server.php" - #: ../../Behavioral/Mediator/README.rst:64 msgid "Test" msgstr "Testy" - -#: ../../Behavioral/Mediator/README.rst:66 -msgid "Tests/MediatorTest.php" -msgstr "Tests/MediatorTest.php" diff --git a/locale/pl/LC_MESSAGES/Behavioral/Memento/README.po b/locale/pl/LC_MESSAGES/Behavioral/Memento/README.po index 73bcb41..4f53161 100644 --- a/locale/pl/LC_MESSAGES/Behavioral/Memento/README.po +++ b/locale/pl/LC_MESSAGES/Behavioral/Memento/README.po @@ -116,22 +116,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Behavioral/Memento/README.rst:57 -msgid "Memento.php" -msgstr "Memento.php" - -#: ../../Behavioral/Memento/README.rst:63 -msgid "Originator.php" -msgstr "Originator.php" - -#: ../../Behavioral/Memento/README.rst:69 -msgid "Caretaker.php" -msgstr "Caretaker.php" - #: ../../Behavioral/Memento/README.rst:76 msgid "Test" msgstr "Testy" - -#: ../../Behavioral/Memento/README.rst:78 -msgid "Tests/MementoTest.php" -msgstr "Tests/MementoTest.php" diff --git a/locale/pl/LC_MESSAGES/Behavioral/NullObject/README.po b/locale/pl/LC_MESSAGES/Behavioral/NullObject/README.po index 8e3f5cb..5858337 100644 --- a/locale/pl/LC_MESSAGES/Behavioral/NullObject/README.po +++ b/locale/pl/LC_MESSAGES/Behavioral/NullObject/README.po @@ -84,26 +84,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Behavioral/NullObject/README.rst:41 -msgid "Service.php" -msgstr "Service.php" - -#: ../../Behavioral/NullObject/README.rst:47 -msgid "LoggerInterface.php" -msgstr "LoggerInterface.php" - -#: ../../Behavioral/NullObject/README.rst:53 -msgid "PrintLogger.php" -msgstr "PrintLogger.php" - -#: ../../Behavioral/NullObject/README.rst:59 -msgid "NullLogger.php" -msgstr "NullLogger.php" - #: ../../Behavioral/NullObject/README.rst:66 msgid "Test" msgstr "Testy" - -#: ../../Behavioral/NullObject/README.rst:68 -msgid "Tests/LoggerTest.php" -msgstr "Tests/LoggerTest.php" diff --git a/locale/pl/LC_MESSAGES/Behavioral/Observer/README.po b/locale/pl/LC_MESSAGES/Behavioral/Observer/README.po index aae3a67..624cc36 100644 --- a/locale/pl/LC_MESSAGES/Behavioral/Observer/README.po +++ b/locale/pl/LC_MESSAGES/Behavioral/Observer/README.po @@ -65,18 +65,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Behavioral/Observer/README.rst:36 -msgid "User.php" -msgstr "User.php" - -#: ../../Behavioral/Observer/README.rst:42 -msgid "UserObserver.php" -msgstr "UserObserver.php" - #: ../../Behavioral/Observer/README.rst:49 msgid "Test" msgstr "Testy" - -#: ../../Behavioral/Observer/README.rst:51 -msgid "Tests/ObserverTest.php" -msgstr "Tests/ObserverTest.php" diff --git a/locale/pl/LC_MESSAGES/Behavioral/Specification/README.po b/locale/pl/LC_MESSAGES/Behavioral/Specification/README.po index 5f4bb7e..510264d 100644 --- a/locale/pl/LC_MESSAGES/Behavioral/Specification/README.po +++ b/locale/pl/LC_MESSAGES/Behavioral/Specification/README.po @@ -50,38 +50,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Behavioral/Specification/README.rst:29 -msgid "Item.php" -msgstr "Item.php" - -#: ../../Behavioral/Specification/README.rst:35 -msgid "SpecificationInterface.php" -msgstr "SpecificationInterface.php" - -#: ../../Behavioral/Specification/README.rst:41 -msgid "AbstractSpecification.php" -msgstr "AbstractSpecification.php" - -#: ../../Behavioral/Specification/README.rst:47 -msgid "Either.php" -msgstr "Either.php" - -#: ../../Behavioral/Specification/README.rst:53 -msgid "PriceSpecification.php" -msgstr "PriceSpecification.php" - -#: ../../Behavioral/Specification/README.rst:59 -msgid "Plus.php" -msgstr "Plus.php" - -#: ../../Behavioral/Specification/README.rst:65 -msgid "Not.php" -msgstr "Not.php" - #: ../../Behavioral/Specification/README.rst:72 msgid "Test" msgstr "Testy" - -#: ../../Behavioral/Specification/README.rst:74 -msgid "Tests/SpecificationTest.php" -msgstr "Tests/SpecificationTest.php" diff --git a/locale/pl/LC_MESSAGES/Behavioral/State/README.po b/locale/pl/LC_MESSAGES/Behavioral/State/README.po index 386bb28..117c35c 100644 --- a/locale/pl/LC_MESSAGES/Behavioral/State/README.po +++ b/locale/pl/LC_MESSAGES/Behavioral/State/README.po @@ -40,26 +40,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Behavioral/State/README.rst:23 -msgid "OrderController.php" -msgstr "OrderController.php" - -#: ../../Behavioral/State/README.rst:29 -msgid "OrderFactory.php" -msgstr "OrderFactory.php" - -#: ../../Behavioral/State/README.rst:35 -msgid "OrderInterface.php" -msgstr "OrderInterface.php" - -#: ../../Behavioral/State/README.rst:41 -msgid "ShippingOrder.php" -msgstr "ShippingOrder.php" - -#: ../../Behavioral/State/README.rst:47 -msgid "CreateOrder.php" -msgstr "CreateOrder.php" - #: ../../Behavioral/State/README.rst:54 msgid "Test" msgstr "Testy" diff --git a/locale/pl/LC_MESSAGES/Behavioral/Strategy/README.po b/locale/pl/LC_MESSAGES/Behavioral/Strategy/README.po index 600ad3c..cd9c095 100644 --- a/locale/pl/LC_MESSAGES/Behavioral/Strategy/README.po +++ b/locale/pl/LC_MESSAGES/Behavioral/Strategy/README.po @@ -72,26 +72,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Behavioral/Strategy/README.rst:37 -msgid "Context.php" -msgstr "Context.php" - -#: ../../Behavioral/Strategy/README.rst:43 -msgid "ComparatorInterface.php" -msgstr "ComparatorInterface.php" - -#: ../../Behavioral/Strategy/README.rst:49 -msgid "DateComparator.php" -msgstr "DateComparator.php" - -#: ../../Behavioral/Strategy/README.rst:55 -msgid "IdComparator.php" -msgstr "IdComparator.php" - #: ../../Behavioral/Strategy/README.rst:62 msgid "Test" msgstr "Testy" - -#: ../../Behavioral/Strategy/README.rst:64 -msgid "Tests/StrategyTest.php" -msgstr "Tests/StrategyTest.php" diff --git a/locale/pl/LC_MESSAGES/Behavioral/TemplateMethod/README.po b/locale/pl/LC_MESSAGES/Behavioral/TemplateMethod/README.po index 6105aeb..3b8067e 100644 --- a/locale/pl/LC_MESSAGES/Behavioral/TemplateMethod/README.po +++ b/locale/pl/LC_MESSAGES/Behavioral/TemplateMethod/README.po @@ -74,22 +74,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Behavioral/TemplateMethod/README.rst:36 -msgid "Journey.php" -msgstr "Journey.php" - -#: ../../Behavioral/TemplateMethod/README.rst:42 -msgid "BeachJourney.php" -msgstr "BeachJourney.php" - -#: ../../Behavioral/TemplateMethod/README.rst:48 -msgid "CityJourney.php" -msgstr "CityJourney.php" - #: ../../Behavioral/TemplateMethod/README.rst:55 msgid "Test" msgstr "Testy" - -#: ../../Behavioral/TemplateMethod/README.rst:57 -msgid "Tests/JourneyTest.php" -msgstr "Tests/JourneyTest.php" diff --git a/locale/pl/LC_MESSAGES/Behavioral/Visitor/README.po b/locale/pl/LC_MESSAGES/Behavioral/Visitor/README.po index b43578e..947c064 100644 --- a/locale/pl/LC_MESSAGES/Behavioral/Visitor/README.po +++ b/locale/pl/LC_MESSAGES/Behavioral/Visitor/README.po @@ -51,30 +51,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Behavioral/Visitor/README.rst:28 -msgid "RoleVisitorInterface.php" -msgstr "RoleVisitorInterface.php" - -#: ../../Behavioral/Visitor/README.rst:34 -msgid "RolePrintVisitor.php" -msgstr "RolePrintVisitor.php" - -#: ../../Behavioral/Visitor/README.rst:40 -msgid "Role.php" -msgstr "Role.php" - -#: ../../Behavioral/Visitor/README.rst:46 -msgid "User.php" -msgstr "User.php" - -#: ../../Behavioral/Visitor/README.rst:52 -msgid "Group.php" -msgstr "Group.php" - #: ../../Behavioral/Visitor/README.rst:59 msgid "Test" msgstr "Testy" - -#: ../../Behavioral/Visitor/README.rst:61 -msgid "Tests/VisitorTest.php" -msgstr "Tests/VisitorTest.php" diff --git a/locale/pl/LC_MESSAGES/Creational/AbstractFactory/README.po b/locale/pl/LC_MESSAGES/Creational/AbstractFactory/README.po index 5598634..d5a4d2f 100644 --- a/locale/pl/LC_MESSAGES/Creational/AbstractFactory/README.po +++ b/locale/pl/LC_MESSAGES/Creational/AbstractFactory/README.po @@ -42,50 +42,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Creational/AbstractFactory/README.rst:24 -msgid "AbstractFactory.php" -msgstr "AbstractFactory.php" - -#: ../../Creational/AbstractFactory/README.rst:30 -msgid "JsonFactory.php" -msgstr "JsonFactory.php" - -#: ../../Creational/AbstractFactory/README.rst:36 -msgid "HtmlFactory.php" -msgstr "HtmlFactory.php" - -#: ../../Creational/AbstractFactory/README.rst:42 -msgid "MediaInterface.php" -msgstr "MediaInterface.php" - -#: ../../Creational/AbstractFactory/README.rst:48 -msgid "Picture.php" -msgstr "Picture.php" - -#: ../../Creational/AbstractFactory/README.rst:54 -msgid "Text.php" -msgstr "Text.php" - -#: ../../Creational/AbstractFactory/README.rst:60 -msgid "Json/Picture.php" -msgstr "Json/Picture.php" - -#: ../../Creational/AbstractFactory/README.rst:66 -msgid "Json/Text.php" -msgstr "Json/Text.php" - -#: ../../Creational/AbstractFactory/README.rst:72 -msgid "Html/Picture.php" -msgstr "Html/Picture.php" - -#: ../../Creational/AbstractFactory/README.rst:78 -msgid "Html/Text.php" -msgstr "Html/Text.php" - #: ../../Creational/AbstractFactory/README.rst:85 msgid "Test" msgstr "Testy" - -#: ../../Creational/AbstractFactory/README.rst:87 -msgid "Tests/AbstractFactoryTest.php" -msgstr "Tests/AbstractFactoryTest.php" diff --git a/locale/pl/LC_MESSAGES/Creational/Builder/README.po b/locale/pl/LC_MESSAGES/Creational/Builder/README.po index 37a016d..6360d67 100644 --- a/locale/pl/LC_MESSAGES/Creational/Builder/README.po +++ b/locale/pl/LC_MESSAGES/Creational/Builder/README.po @@ -70,50 +70,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Creational/Builder/README.rst:35 -msgid "Director.php" -msgstr "Director.php" - -#: ../../Creational/Builder/README.rst:41 -msgid "BuilderInterface.php" -msgstr "BuilderInterface.php" - -#: ../../Creational/Builder/README.rst:47 -msgid "BikeBuilder.php" -msgstr "BikeBuilder.php" - -#: ../../Creational/Builder/README.rst:53 -msgid "CarBuilder.php" -msgstr "CarBuilder.php" - -#: ../../Creational/Builder/README.rst:59 -msgid "Parts/Vehicle.php" -msgstr "Parts/Vehicle.php" - -#: ../../Creational/Builder/README.rst:65 -msgid "Parts/Bike.php" -msgstr "Parts/Bike.php" - -#: ../../Creational/Builder/README.rst:71 -msgid "Parts/Car.php" -msgstr "Parts/Car.php" - -#: ../../Creational/Builder/README.rst:77 -msgid "Parts/Engine.php" -msgstr "Parts/Engine.php" - -#: ../../Creational/Builder/README.rst:83 -msgid "Parts/Wheel.php" -msgstr "Parts/Wheel.php" - -#: ../../Creational/Builder/README.rst:89 -msgid "Parts/Door.php" -msgstr "Parts/Door.php" - #: ../../Creational/Builder/README.rst:96 msgid "Test" msgstr "Testy" - -#: ../../Creational/Builder/README.rst:98 -msgid "Tests/DirectorTest.php" -msgstr "Tests/DirectorTest.php" diff --git a/locale/pl/LC_MESSAGES/Creational/FactoryMethod/README.po b/locale/pl/LC_MESSAGES/Creational/FactoryMethod/README.po index 489f4c7..1752486 100644 --- a/locale/pl/LC_MESSAGES/Creational/FactoryMethod/README.po +++ b/locale/pl/LC_MESSAGES/Creational/FactoryMethod/README.po @@ -59,38 +59,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Creational/FactoryMethod/README.rst:31 -msgid "FactoryMethod.php" -msgstr "FactoryMethod.php" - -#: ../../Creational/FactoryMethod/README.rst:37 -msgid "ItalianFactory.php" -msgstr "ItalianFactory.php" - -#: ../../Creational/FactoryMethod/README.rst:43 -msgid "GermanFactory.php" -msgstr "GermanFactory.php" - -#: ../../Creational/FactoryMethod/README.rst:49 -msgid "VehicleInterface.php" -msgstr "VehicleInterface.php" - -#: ../../Creational/FactoryMethod/README.rst:55 -msgid "Porsche.php" -msgstr "Porsche.php" - -#: ../../Creational/FactoryMethod/README.rst:61 -msgid "Bicycle.php" -msgstr "Bicycle.php" - -#: ../../Creational/FactoryMethod/README.rst:67 -msgid "Ferrari.php" -msgstr "Ferrari.php" - #: ../../Creational/FactoryMethod/README.rst:74 msgid "Test" msgstr "Testy" - -#: ../../Creational/FactoryMethod/README.rst:76 -msgid "Tests/FactoryMethodTest.php" -msgstr "Tests/FactoryMethodTest.php" diff --git a/locale/pl/LC_MESSAGES/Creational/Multiton/README.po b/locale/pl/LC_MESSAGES/Creational/Multiton/README.po index c13b708..ecc234c 100644 --- a/locale/pl/LC_MESSAGES/Creational/Multiton/README.po +++ b/locale/pl/LC_MESSAGES/Creational/Multiton/README.po @@ -61,10 +61,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Creational/Multiton/README.rst:31 -msgid "Multiton.php" -msgstr "Multiton.php" - #: ../../Creational/Multiton/README.rst:38 msgid "Test" msgstr "Testy" diff --git a/locale/pl/LC_MESSAGES/Creational/Pool/README.po b/locale/pl/LC_MESSAGES/Creational/Pool/README.po index a02085a..76931ec 100644 --- a/locale/pl/LC_MESSAGES/Creational/Pool/README.po +++ b/locale/pl/LC_MESSAGES/Creational/Pool/README.po @@ -73,26 +73,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Creational/Pool/README.rst:36 -msgid "Pool.php" -msgstr "Pool.php" - -#: ../../Creational/Pool/README.rst:42 -msgid "Processor.php" -msgstr "Processor.php" - -#: ../../Creational/Pool/README.rst:48 -msgid "Worker.php" -msgstr "Worker.php" - #: ../../Creational/Pool/README.rst:55 msgid "Test" msgstr "Testy" - -#: ../../Creational/Pool/README.rst:57 -msgid "Tests/PoolTest.php" -msgstr "Tests/PoolTest.php" - -#: ../../Creational/Pool/README.rst:63 -msgid "Tests/TestWorker.php" -msgstr "Tests/TestWorker.php" diff --git a/locale/pl/LC_MESSAGES/Creational/Prototype/README.po b/locale/pl/LC_MESSAGES/Creational/Prototype/README.po index 48d2218..30f7d88 100644 --- a/locale/pl/LC_MESSAGES/Creational/Prototype/README.po +++ b/locale/pl/LC_MESSAGES/Creational/Prototype/README.po @@ -52,22 +52,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Creational/Prototype/README.rst:28 -msgid "index.php" -msgstr "index.php" - -#: ../../Creational/Prototype/README.rst:34 -msgid "BookPrototype.php" -msgstr "BookPrototype.php" - -#: ../../Creational/Prototype/README.rst:40 -msgid "BarBookPrototype.php" -msgstr "BarBookPrototype.php" - -#: ../../Creational/Prototype/README.rst:46 -msgid "FooBookPrototype.php" -msgstr "FooBookPrototype.php" - #: ../../Creational/Prototype/README.rst:53 msgid "Test" msgstr "Testy" diff --git a/locale/pl/LC_MESSAGES/Creational/SimpleFactory/README.po b/locale/pl/LC_MESSAGES/Creational/SimpleFactory/README.po index 368b35e..f998517 100644 --- a/locale/pl/LC_MESSAGES/Creational/SimpleFactory/README.po +++ b/locale/pl/LC_MESSAGES/Creational/SimpleFactory/README.po @@ -45,26 +45,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Creational/SimpleFactory/README.rst:27 -msgid "SimpleFactory.php" -msgstr "SimpleFactory.php" - -#: ../../Creational/SimpleFactory/README.rst:33 -msgid "VehicleInterface.php" -msgstr "VehicleInterface.php" - -#: ../../Creational/SimpleFactory/README.rst:39 -msgid "Bicycle.php" -msgstr "Bicycle.php" - -#: ../../Creational/SimpleFactory/README.rst:45 -msgid "Scooter.php" -msgstr "Scooter.php" - #: ../../Creational/SimpleFactory/README.rst:52 msgid "Test" msgstr "Testy" - -#: ../../Creational/SimpleFactory/README.rst:54 -msgid "Tests/SimpleFactoryTest.php" -msgstr "Tests/SimpleFactoryTest.php" diff --git a/locale/pl/LC_MESSAGES/Creational/Singleton/README.po b/locale/pl/LC_MESSAGES/Creational/Singleton/README.po index 15fe1be..849a38e 100644 --- a/locale/pl/LC_MESSAGES/Creational/Singleton/README.po +++ b/locale/pl/LC_MESSAGES/Creational/Singleton/README.po @@ -68,14 +68,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Creational/Singleton/README.rst:34 -msgid "Singleton.php" -msgstr "Singleton.php" - #: ../../Creational/Singleton/README.rst:41 msgid "Test" msgstr "Testy" - -#: ../../Creational/Singleton/README.rst:43 -msgid "Tests/SingletonTest.php" -msgstr "Tests/SingletonTest.php" diff --git a/locale/pl/LC_MESSAGES/Creational/StaticFactory/README.po b/locale/pl/LC_MESSAGES/Creational/StaticFactory/README.po index eb52b55..fb8ac9e 100644 --- a/locale/pl/LC_MESSAGES/Creational/StaticFactory/README.po +++ b/locale/pl/LC_MESSAGES/Creational/StaticFactory/README.po @@ -56,26 +56,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Creational/StaticFactory/README.rst:31 -msgid "StaticFactory.php" -msgstr "StaticFactory.php" - -#: ../../Creational/StaticFactory/README.rst:37 -msgid "FormatterInterface.php" -msgstr "FormatterInterface.php" - -#: ../../Creational/StaticFactory/README.rst:43 -msgid "FormatString.php" -msgstr "FormatString.php" - -#: ../../Creational/StaticFactory/README.rst:49 -msgid "FormatNumber.php" -msgstr "FormatNumber.php" - #: ../../Creational/StaticFactory/README.rst:56 msgid "Test" msgstr "Testy" - -#: ../../Creational/StaticFactory/README.rst:58 -msgid "Tests/StaticFactoryTest.php" -msgstr "Tests/StaticFactoryTest.php" diff --git a/locale/pl/LC_MESSAGES/More/Delegation/README.po b/locale/pl/LC_MESSAGES/More/Delegation/README.po index 4a1482b..0686f5f 100644 --- a/locale/pl/LC_MESSAGES/More/Delegation/README.po +++ b/locale/pl/LC_MESSAGES/More/Delegation/README.po @@ -67,22 +67,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../More/Delegation/README.rst:26 -msgid "Usage.php" -msgstr "Usage.php" - -#: ../../More/Delegation/README.rst:32 -msgid "TeamLead.php" -msgstr "TeamLead.php" - -#: ../../More/Delegation/README.rst:38 -msgid "JuniorDeveloper.php" -msgstr "JuniorDeveloper.php" - #: ../../More/Delegation/README.rst:45 msgid "Test" msgstr "Testy" - -#: ../../More/Delegation/README.rst:47 -msgid "Tests/DelegationTest.php" -msgstr "Tests/DelegationTest.php" diff --git a/locale/pl/LC_MESSAGES/More/EAV/README.po b/locale/pl/LC_MESSAGES/More/EAV/README.po index 235db1a..94fec3e 100644 --- a/locale/pl/LC_MESSAGES/More/EAV/README.po +++ b/locale/pl/LC_MESSAGES/More/EAV/README.po @@ -69,15 +69,3 @@ msgstr "Ten kod znajdziesz również na `GitHub`_." msgid "Test" msgstr "Testy" -#: ../../More/EAV/README.rst:104 -msgid "Tests/EntityTest.php" -msgstr "Tests/EntityTest.php" - -#: ../../More/EAV/README.rst:110 -msgid "Tests/AttributeTest.php" -msgstr "Tests/AttributeTest.php" - -#: ../../More/EAV/README.rst:116 -msgid "Tests/ValueTest.php" -msgstr "Tests/ValueTest.php" - diff --git a/locale/pl/LC_MESSAGES/More/Repository/README.po b/locale/pl/LC_MESSAGES/More/Repository/README.po index b1faa49..8823bf1 100644 --- a/locale/pl/LC_MESSAGES/More/Repository/README.po +++ b/locale/pl/LC_MESSAGES/More/Repository/README.po @@ -63,22 +63,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../More/Repository/README.rst:34 -msgid "Post.php" -msgstr "Post.php" - -#: ../../More/Repository/README.rst:40 -msgid "PostRepository.php" -msgstr "PostRepository.php" - -#: ../../More/Repository/README.rst:46 -msgid "Persistence.php" -msgstr "Persistence.php" - -#: ../../More/Repository/README.rst:52 -msgid "InMemoryPersistence.php" -msgstr "InMemoryPersistence.php" - #: ../../More/Repository/README.rst:59 msgid "Test" msgstr "Testy" diff --git a/locale/pl/LC_MESSAGES/More/ServiceLocator/README.po b/locale/pl/LC_MESSAGES/More/ServiceLocator/README.po index 44263ee..aff8949 100644 --- a/locale/pl/LC_MESSAGES/More/ServiceLocator/README.po +++ b/locale/pl/LC_MESSAGES/More/ServiceLocator/README.po @@ -87,34 +87,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../More/ServiceLocator/README.rst:38 -msgid "ServiceLocatorInterface.php" -msgstr "ServiceLocatorInterface.php" - -#: ../../More/ServiceLocator/README.rst:44 -msgid "ServiceLocator.php" -msgstr "ServiceLocator.php" - -#: ../../More/ServiceLocator/README.rst:50 -msgid "LogServiceInterface.php" -msgstr "LogServiceInterface.php" - -#: ../../More/ServiceLocator/README.rst:56 -msgid "LogService.php" -msgstr "LogService.php" - -#: ../../More/ServiceLocator/README.rst:62 -msgid "DatabaseServiceInterface.php" -msgstr "DatabaseServiceInterface.php" - -#: ../../More/ServiceLocator/README.rst:68 -msgid "DatabaseService.php" -msgstr "DatabaseService.php" - #: ../../More/ServiceLocator/README.rst:75 msgid "Test" msgstr "Testy" - -#: ../../More/ServiceLocator/README.rst:77 -msgid "Tests/ServiceLocatorTest.php" -msgstr "Tests/ServiceLocatorTest.php" diff --git a/locale/pl/LC_MESSAGES/Structural/Adapter/README.po b/locale/pl/LC_MESSAGES/Structural/Adapter/README.po index b0c4b23..8f39ac1 100644 --- a/locale/pl/LC_MESSAGES/Structural/Adapter/README.po +++ b/locale/pl/LC_MESSAGES/Structural/Adapter/README.po @@ -61,30 +61,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Structural/Adapter/README.rst:31 -msgid "PaperBookInterface.php" -msgstr "PaperBookInterface.php" - -#: ../../Structural/Adapter/README.rst:37 -msgid "Book.php" -msgstr "Book.php" - -#: ../../Structural/Adapter/README.rst:43 -msgid "EBookAdapter.php" -msgstr "EBookAdapter.php" - -#: ../../Structural/Adapter/README.rst:49 -msgid "EBookInterface.php" -msgstr "EBookInterface.php" - -#: ../../Structural/Adapter/README.rst:55 -msgid "Kindle.php" -msgstr "Kindle.php" - #: ../../Structural/Adapter/README.rst:62 msgid "Test" msgstr "Testy" - -#: ../../Structural/Adapter/README.rst:64 -msgid "Tests/AdapterTest.php" -msgstr "Tests/AdapterTest.php" diff --git a/locale/pl/LC_MESSAGES/Structural/Bridge/README.po b/locale/pl/LC_MESSAGES/Structural/Bridge/README.po index 4e07f7f..1a19033 100644 --- a/locale/pl/LC_MESSAGES/Structural/Bridge/README.po +++ b/locale/pl/LC_MESSAGES/Structural/Bridge/README.po @@ -49,34 +49,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Structural/Bridge/README.rst:28 -msgid "Workshop.php" -msgstr "Workshop.php" - -#: ../../Structural/Bridge/README.rst:34 -msgid "Assemble.php" -msgstr "Assemble.php" - -#: ../../Structural/Bridge/README.rst:40 -msgid "Produce.php" -msgstr "Produce.php" - -#: ../../Structural/Bridge/README.rst:46 -msgid "Vehicle.php" -msgstr "Vehicle.php" - -#: ../../Structural/Bridge/README.rst:52 -msgid "Motorcycle.php" -msgstr "Motorcycle.php" - -#: ../../Structural/Bridge/README.rst:58 -msgid "Car.php" -msgstr "Car.php" - #: ../../Structural/Bridge/README.rst:65 msgid "Test" msgstr "Testy" - -#: ../../Structural/Bridge/README.rst:67 -msgid "Tests/BridgeTest.php" -msgstr "Tests/BridgeTest.php" diff --git a/locale/pl/LC_MESSAGES/Structural/Composite/README.po b/locale/pl/LC_MESSAGES/Structural/Composite/README.po index f7eee16..4bc91aa 100644 --- a/locale/pl/LC_MESSAGES/Structural/Composite/README.po +++ b/locale/pl/LC_MESSAGES/Structural/Composite/README.po @@ -61,26 +61,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Structural/Composite/README.rst:31 -msgid "FormElement.php" -msgstr "FormElement.php" - -#: ../../Structural/Composite/README.rst:37 -msgid "Form.php" -msgstr "Form.php" - -#: ../../Structural/Composite/README.rst:43 -msgid "InputElement.php" -msgstr "InputElement.php" - -#: ../../Structural/Composite/README.rst:49 -msgid "TextElement.php" -msgstr "TextElement.php" - #: ../../Structural/Composite/README.rst:56 msgid "Test" msgstr "Testy" - -#: ../../Structural/Composite/README.rst:58 -msgid "Tests/CompositeTest.php" -msgstr "Tests/CompositeTest.php" diff --git a/locale/pl/LC_MESSAGES/Structural/DataMapper/README.po b/locale/pl/LC_MESSAGES/Structural/DataMapper/README.po index 080d29c..1ed5602 100644 --- a/locale/pl/LC_MESSAGES/Structural/DataMapper/README.po +++ b/locale/pl/LC_MESSAGES/Structural/DataMapper/README.po @@ -72,18 +72,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Structural/DataMapper/README.rst:38 -msgid "User.php" -msgstr "User.php" - -#: ../../Structural/DataMapper/README.rst:44 -msgid "UserMapper.php" -msgstr "UserMapper.php" - #: ../../Structural/DataMapper/README.rst:51 msgid "Test" msgstr "Testy" - -#: ../../Structural/DataMapper/README.rst:53 -msgid "Tests/DataMapperTest.php" -msgstr "Tests/DataMapperTest.php" diff --git a/locale/pl/LC_MESSAGES/Structural/Decorator/README.po b/locale/pl/LC_MESSAGES/Structural/Decorator/README.po index 5dbc472..664cd11 100644 --- a/locale/pl/LC_MESSAGES/Structural/Decorator/README.po +++ b/locale/pl/LC_MESSAGES/Structural/Decorator/README.po @@ -52,30 +52,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Structural/Decorator/README.rst:28 -msgid "RendererInterface.php" -msgstr "RendererInterface.php" - -#: ../../Structural/Decorator/README.rst:34 -msgid "Webservice.php" -msgstr "Webservice.php" - -#: ../../Structural/Decorator/README.rst:40 -msgid "Decorator.php" -msgstr "Decorator.php" - -#: ../../Structural/Decorator/README.rst:46 -msgid "RenderInXml.php" -msgstr "RenderInXml.php" - -#: ../../Structural/Decorator/README.rst:52 -msgid "RenderInJson.php" -msgstr "RenderInJson.php" - #: ../../Structural/Decorator/README.rst:59 msgid "Test" msgstr "Testy" - -#: ../../Structural/Decorator/README.rst:61 -msgid "Tests/DecoratorTest.php" -msgstr "Tests/DecoratorTest.php" diff --git a/locale/pl/LC_MESSAGES/Structural/DependencyInjection/README.po b/locale/pl/LC_MESSAGES/Structural/DependencyInjection/README.po index 3f24034..e8ee6ea 100644 --- a/locale/pl/LC_MESSAGES/Structural/DependencyInjection/README.po +++ b/locale/pl/LC_MESSAGES/Structural/DependencyInjection/README.po @@ -99,30 +99,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Structural/DependencyInjection/README.rst:48 -msgid "AbstractConfig.php" -msgstr "AbstractConfig.php" - -#: ../../Structural/DependencyInjection/README.rst:54 -msgid "Parameters.php" -msgstr "Parameters.php" - -#: ../../Structural/DependencyInjection/README.rst:60 -msgid "ArrayConfig.php" -msgstr "ArrayConfig.php" - -#: ../../Structural/DependencyInjection/README.rst:66 -msgid "Connection.php" -msgstr "Connection.php" - #: ../../Structural/DependencyInjection/README.rst:73 msgid "Test" msgstr "Testy" - -#: ../../Structural/DependencyInjection/README.rst:75 -msgid "Tests/DependencyInjectionTest.php" -msgstr "Tests/DependencyInjectionTest.php" - -#: ../../Structural/DependencyInjection/README.rst:81 -msgid "Tests/config.php" -msgstr "Tests/config.php" diff --git a/locale/pl/LC_MESSAGES/Structural/Facade/README.po b/locale/pl/LC_MESSAGES/Structural/Facade/README.po index 3cdeba5..fc1dcca 100644 --- a/locale/pl/LC_MESSAGES/Structural/Facade/README.po +++ b/locale/pl/LC_MESSAGES/Structural/Facade/README.po @@ -82,22 +82,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Structural/Facade/README.rst:38 -msgid "Facade.php" -msgstr "Facade.php" - -#: ../../Structural/Facade/README.rst:44 -msgid "OsInterface.php" -msgstr "OsInterface.php" - -#: ../../Structural/Facade/README.rst:50 -msgid "BiosInterface.php" -msgstr "BiosInterface.php" - #: ../../Structural/Facade/README.rst:57 msgid "Test" msgstr "Testy" - -#: ../../Structural/Facade/README.rst:59 -msgid "Tests/FacadeTest.php" -msgstr "Tests/FacadeTest.php" diff --git a/locale/pl/LC_MESSAGES/Structural/FluentInterface/README.po b/locale/pl/LC_MESSAGES/Structural/FluentInterface/README.po index 34330d5..73f1719 100644 --- a/locale/pl/LC_MESSAGES/Structural/FluentInterface/README.po +++ b/locale/pl/LC_MESSAGES/Structural/FluentInterface/README.po @@ -58,14 +58,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Structural/FluentInterface/README.rst:30 -msgid "Sql.php" -msgstr "Sql.php" - #: ../../Structural/FluentInterface/README.rst:37 msgid "Test" msgstr "Testy" - -#: ../../Structural/FluentInterface/README.rst:39 -msgid "Tests/FluentInterfaceTest.php" -msgstr "Tests/FluentInterfaceTest.php" diff --git a/locale/pl/LC_MESSAGES/Structural/Flyweight/README.po b/locale/pl/LC_MESSAGES/Structural/Flyweight/README.po index 1037b7d..26f386b 100644 --- a/locale/pl/LC_MESSAGES/Structural/Flyweight/README.po +++ b/locale/pl/LC_MESSAGES/Structural/Flyweight/README.po @@ -51,23 +51,7 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Structural/Flyweight/README.rst:23 -msgid "FlyweightInterface.php" -msgstr "FlyweightInterface.php" - -#: ../../Structural/Flyweight/README.rst:29 -msgid "CharacterFlyweight.php" -msgstr "CharacterFlyweight.php" - -#: ../../Structural/Flyweight/README.rst:35 -msgid "FlyweightFactory.php" -msgstr "FlyweightFactory.php" - #: ../../Structural/Flyweight/README.rst:42 msgid "Test" msgstr "Testy" -#: ../../Structural/Flyweight/README.rst:44 -msgid "Tests/FlyweightTest.php" -msgstr "Tests/FlyweightTest.php" - diff --git a/locale/pl/LC_MESSAGES/Structural/Proxy/README.po b/locale/pl/LC_MESSAGES/Structural/Proxy/README.po index e1204d6..52e1009 100644 --- a/locale/pl/LC_MESSAGES/Structural/Proxy/README.po +++ b/locale/pl/LC_MESSAGES/Structural/Proxy/README.po @@ -52,14 +52,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Structural/Proxy/README.rst:28 -msgid "Record.php" -msgstr "Record.php" - -#: ../../Structural/Proxy/README.rst:34 -msgid "RecordProxy.php" -msgstr "RecordProxy.php" - #: ../../Structural/Proxy/README.rst:41 msgid "Test" msgstr "Testy" diff --git a/locale/pl/LC_MESSAGES/Structural/Registry/README.po b/locale/pl/LC_MESSAGES/Structural/Registry/README.po index 45b17a8..91136e0 100644 --- a/locale/pl/LC_MESSAGES/Structural/Registry/README.po +++ b/locale/pl/LC_MESSAGES/Structural/Registry/README.po @@ -63,14 +63,6 @@ msgstr "Kod" msgid "You can also find this code on `GitHub`_" msgstr "Ten kod znajdziesz również na `GitHub`_." -#: ../../Structural/Registry/README.rst:31 -msgid "Registry.php" -msgstr "Registry.php" - #: ../../Structural/Registry/README.rst:38 msgid "Test" msgstr "Testy" - -#: ../../Structural/Registry/README.rst:40 -msgid "Tests/RegistryTest.php" -msgstr "Tests/RegistryTest.php" diff --git a/locale/pt_BR/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po b/locale/pt_BR/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po index 19f8d8d..74da4e5 100644 --- a/locale/pt_BR/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po +++ b/locale/pt_BR/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po @@ -65,26 +65,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/ChainOfResponsibilities/README.rst:36 -msgid "Request.php" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:42 -msgid "Handler.php" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:48 -msgid "Responsible/SlowStorage.php" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:54 -msgid "Responsible/FastStorage.php" -msgstr "" - #: ../../Behavioral/ChainOfResponsibilities/README.rst:61 msgid "Test" msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:63 -msgid "Tests/ChainTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Behavioral/Command/README.po b/locale/pt_BR/LC_MESSAGES/Behavioral/Command/README.po index 158d346..e289808 100644 --- a/locale/pt_BR/LC_MESSAGES/Behavioral/Command/README.po +++ b/locale/pt_BR/LC_MESSAGES/Behavioral/Command/README.po @@ -74,26 +74,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Command/README.rst:43 -msgid "CommandInterface.php" -msgstr "" - -#: ../../Behavioral/Command/README.rst:49 -msgid "HelloCommand.php" -msgstr "" - -#: ../../Behavioral/Command/README.rst:55 -msgid "Receiver.php" -msgstr "" - -#: ../../Behavioral/Command/README.rst:61 -msgid "Invoker.php" -msgstr "" - #: ../../Behavioral/Command/README.rst:68 msgid "Test" msgstr "" - -#: ../../Behavioral/Command/README.rst:70 -msgid "Tests/CommandTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Behavioral/Iterator/README.po b/locale/pt_BR/LC_MESSAGES/Behavioral/Iterator/README.po index 25ccf3a..043f4f3 100644 --- a/locale/pt_BR/LC_MESSAGES/Behavioral/Iterator/README.po +++ b/locale/pt_BR/LC_MESSAGES/Behavioral/Iterator/README.po @@ -56,26 +56,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Iterator/README.rst:36 -msgid "Book.php" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:42 -msgid "BookList.php" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:48 -msgid "BookListIterator.php" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:54 -msgid "BookListReverseIterator.php" -msgstr "" - #: ../../Behavioral/Iterator/README.rst:61 msgid "Test" msgstr "" - -#: ../../Behavioral/Iterator/README.rst:63 -msgid "Tests/IteratorTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Behavioral/Mediator/README.po b/locale/pt_BR/LC_MESSAGES/Behavioral/Mediator/README.po index e9a44dd..58fdb1e 100644 --- a/locale/pt_BR/LC_MESSAGES/Behavioral/Mediator/README.po +++ b/locale/pt_BR/LC_MESSAGES/Behavioral/Mediator/README.po @@ -45,34 +45,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Mediator/README.rst:27 -msgid "MediatorInterface.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:33 -msgid "Mediator.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:39 -msgid "Colleague.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:45 -msgid "Subsystem/Client.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:51 -msgid "Subsystem/Database.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:57 -msgid "Subsystem/Server.php" -msgstr "" - #: ../../Behavioral/Mediator/README.rst:64 msgid "Test" msgstr "" - -#: ../../Behavioral/Mediator/README.rst:66 -msgid "Tests/MediatorTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Behavioral/Memento/README.po b/locale/pt_BR/LC_MESSAGES/Behavioral/Memento/README.po index 13c073e..d09b54f 100644 --- a/locale/pt_BR/LC_MESSAGES/Behavioral/Memento/README.po +++ b/locale/pt_BR/LC_MESSAGES/Behavioral/Memento/README.po @@ -102,26 +102,10 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Memento/README.rst:57 -msgid "Memento.php" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:63 -msgid "Originator.php" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:69 -msgid "Caretaker.php" -msgstr "" - #: ../../Behavioral/Memento/README.rst:76 msgid "Test" msgstr "" -#: ../../Behavioral/Memento/README.rst:78 -msgid "Tests/MementoTest.php" -msgstr "" - #. # diff --git a/locale/pt_BR/LC_MESSAGES/Behavioral/NullObject/README.po b/locale/pt_BR/LC_MESSAGES/Behavioral/NullObject/README.po index a397fc5..4bdb431 100644 --- a/locale/pt_BR/LC_MESSAGES/Behavioral/NullObject/README.po +++ b/locale/pt_BR/LC_MESSAGES/Behavioral/NullObject/README.po @@ -78,26 +78,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/NullObject/README.rst:41 -msgid "Service.php" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:47 -msgid "LoggerInterface.php" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:53 -msgid "PrintLogger.php" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:59 -msgid "NullLogger.php" -msgstr "" - #: ../../Behavioral/NullObject/README.rst:66 msgid "Test" msgstr "" - -#: ../../Behavioral/NullObject/README.rst:68 -msgid "Tests/LoggerTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Behavioral/Observer/README.po b/locale/pt_BR/LC_MESSAGES/Behavioral/Observer/README.po index 8a43616..a1b786a 100644 --- a/locale/pt_BR/LC_MESSAGES/Behavioral/Observer/README.po +++ b/locale/pt_BR/LC_MESSAGES/Behavioral/Observer/README.po @@ -58,18 +58,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Observer/README.rst:36 -msgid "User.php" -msgstr "" - -#: ../../Behavioral/Observer/README.rst:42 -msgid "UserObserver.php" -msgstr "" - #: ../../Behavioral/Observer/README.rst:49 msgid "Test" msgstr "" - -#: ../../Behavioral/Observer/README.rst:51 -msgid "Tests/ObserverTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Behavioral/Specification/README.po b/locale/pt_BR/LC_MESSAGES/Behavioral/Specification/README.po index 7b1982b..64e14a8 100644 --- a/locale/pt_BR/LC_MESSAGES/Behavioral/Specification/README.po +++ b/locale/pt_BR/LC_MESSAGES/Behavioral/Specification/README.po @@ -47,38 +47,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Specification/README.rst:29 -msgid "Item.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:35 -msgid "SpecificationInterface.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:41 -msgid "AbstractSpecification.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:47 -msgid "Either.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:53 -msgid "PriceSpecification.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:59 -msgid "Plus.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:65 -msgid "Not.php" -msgstr "" - #: ../../Behavioral/Specification/README.rst:72 msgid "Test" msgstr "" - -#: ../../Behavioral/Specification/README.rst:74 -msgid "Tests/SpecificationTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Behavioral/State/README.po b/locale/pt_BR/LC_MESSAGES/Behavioral/State/README.po index 2ced881..8dfd381 100644 --- a/locale/pt_BR/LC_MESSAGES/Behavioral/State/README.po +++ b/locale/pt_BR/LC_MESSAGES/Behavioral/State/README.po @@ -38,26 +38,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/State/README.rst:23 -msgid "OrderController.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:29 -msgid "OrderFactory.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:35 -msgid "OrderInterface.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:41 -msgid "ShippingOrder.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:47 -msgid "CreateOrder.php" -msgstr "" - #: ../../Behavioral/State/README.rst:54 msgid "Test" msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Behavioral/Strategy/README.po b/locale/pt_BR/LC_MESSAGES/Behavioral/Strategy/README.po index c3b9fea..0b60661 100644 --- a/locale/pt_BR/LC_MESSAGES/Behavioral/Strategy/README.po +++ b/locale/pt_BR/LC_MESSAGES/Behavioral/Strategy/README.po @@ -67,26 +67,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Strategy/README.rst:37 -msgid "ObjectCollection.php" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:43 -msgid "ComparatorInterface.php" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:49 -msgid "DateComparator.php" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:55 -msgid "IdComparator.php" -msgstr "" - #: ../../Behavioral/Strategy/README.rst:62 msgid "Test" msgstr "" - -#: ../../Behavioral/Strategy/README.rst:64 -msgid "Tests/StrategyTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Behavioral/TemplateMethod/README.po b/locale/pt_BR/LC_MESSAGES/Behavioral/TemplateMethod/README.po index 331d234..66e4e9b 100644 --- a/locale/pt_BR/LC_MESSAGES/Behavioral/TemplateMethod/README.po +++ b/locale/pt_BR/LC_MESSAGES/Behavioral/TemplateMethod/README.po @@ -62,22 +62,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/TemplateMethod/README.rst:36 -msgid "Journey.php" -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:42 -msgid "BeachJourney.php" -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:48 -msgid "CityJourney.php" -msgstr "" - #: ../../Behavioral/TemplateMethod/README.rst:55 msgid "Test" msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:57 -msgid "Tests/JourneyTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Behavioral/Visitor/README.po b/locale/pt_BR/LC_MESSAGES/Behavioral/Visitor/README.po index 08784a3..62f65e1 100644 --- a/locale/pt_BR/LC_MESSAGES/Behavioral/Visitor/README.po +++ b/locale/pt_BR/LC_MESSAGES/Behavioral/Visitor/README.po @@ -46,30 +46,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Visitor/README.rst:28 -msgid "RoleVisitorInterface.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:34 -msgid "RolePrintVisitor.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:40 -msgid "Role.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:46 -msgid "User.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:52 -msgid "Group.php" -msgstr "" - #: ../../Behavioral/Visitor/README.rst:59 msgid "Test" msgstr "" - -#: ../../Behavioral/Visitor/README.rst:61 -msgid "Tests/VisitorTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Creational/AbstractFactory/README.po b/locale/pt_BR/LC_MESSAGES/Creational/AbstractFactory/README.po index b005aac..4aed9f1 100644 --- a/locale/pt_BR/LC_MESSAGES/Creational/AbstractFactory/README.po +++ b/locale/pt_BR/LC_MESSAGES/Creational/AbstractFactory/README.po @@ -43,50 +43,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Você pode encontrar o código no `Github`_" -#: ../../Creational/AbstractFactory/README.rst:24 -msgid "AbstractFactory.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:30 -msgid "JsonFactory.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:36 -msgid "HtmlFactory.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:42 -msgid "MediaInterface.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:48 -msgid "Picture.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:54 -msgid "Text.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:60 -msgid "Json/Picture.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:66 -msgid "Json/Text.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:72 -msgid "Html/Picture.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:78 -msgid "Html/Text.php" -msgstr "" - #: ../../Creational/AbstractFactory/README.rst:85 msgid "Test" msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:87 -msgid "Tests/AbstractFactoryTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Creational/Builder/README.po b/locale/pt_BR/LC_MESSAGES/Creational/Builder/README.po index 78d55d6..1af2cb3 100644 --- a/locale/pt_BR/LC_MESSAGES/Creational/Builder/README.po +++ b/locale/pt_BR/LC_MESSAGES/Creational/Builder/README.po @@ -66,50 +66,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Você pode encontrar esse código no `Github`_" -#: ../../Creational/Builder/README.rst:35 -msgid "Director.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:41 -msgid "BuilderInterface.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:47 -msgid "BikeBuilder.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:53 -msgid "CarBuilder.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:59 -msgid "Parts/Vehicle.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:65 -msgid "Parts/Bike.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:71 -msgid "Parts/Car.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:77 -msgid "Parts/Engine.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:83 -msgid "Parts/Wheel.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:89 -msgid "Parts/Door.php" -msgstr "" - #: ../../Creational/Builder/README.rst:96 msgid "Test" msgstr "" - -#: ../../Creational/Builder/README.rst:98 -msgid "Tests/DirectorTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Creational/FactoryMethod/README.po b/locale/pt_BR/LC_MESSAGES/Creational/FactoryMethod/README.po index ed17024..9797e55 100644 --- a/locale/pt_BR/LC_MESSAGES/Creational/FactoryMethod/README.po +++ b/locale/pt_BR/LC_MESSAGES/Creational/FactoryMethod/README.po @@ -60,38 +60,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Você pode encontrar este código no `Github`_" -#: ../../Creational/FactoryMethod/README.rst:31 -msgid "FactoryMethod.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:37 -msgid "ItalianFactory.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:43 -msgid "GermanFactory.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:49 -msgid "VehicleInterface.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:55 -msgid "Porsche.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:61 -msgid "Bicycle.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:67 -msgid "Ferrari.php" -msgstr "" - #: ../../Creational/FactoryMethod/README.rst:74 msgid "Test" msgstr "Teste" - -#: ../../Creational/FactoryMethod/README.rst:76 -msgid "Tests/FactoryMethodTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Creational/Multiton/README.po b/locale/pt_BR/LC_MESSAGES/Creational/Multiton/README.po index cef5d3c..6d1e011 100644 --- a/locale/pt_BR/LC_MESSAGES/Creational/Multiton/README.po +++ b/locale/pt_BR/LC_MESSAGES/Creational/Multiton/README.po @@ -59,10 +59,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Você também pode encontrar esse código no `GitHub`_" -#: ../../Creational/Multiton/README.rst:31 -msgid "Multiton.php" -msgstr "" - #: ../../Creational/Multiton/README.rst:38 msgid "Test" msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Creational/Pool/README.po b/locale/pt_BR/LC_MESSAGES/Creational/Pool/README.po index 899f583..ec43dea 100644 --- a/locale/pt_BR/LC_MESSAGES/Creational/Pool/README.po +++ b/locale/pt_BR/LC_MESSAGES/Creational/Pool/README.po @@ -56,26 +56,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Creational/Pool/README.rst:36 -msgid "Pool.php" -msgstr "" - -#: ../../Creational/Pool/README.rst:42 -msgid "Processor.php" -msgstr "" - -#: ../../Creational/Pool/README.rst:48 -msgid "Worker.php" -msgstr "" - #: ../../Creational/Pool/README.rst:55 msgid "Test" msgstr "" - -#: ../../Creational/Pool/README.rst:57 -msgid "Tests/PoolTest.php" -msgstr "" - -#: ../../Creational/Pool/README.rst:63 -msgid "Tests/TestWorker.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Creational/Prototype/README.po b/locale/pt_BR/LC_MESSAGES/Creational/Prototype/README.po index 6ac1fe0..52e0db7 100644 --- a/locale/pt_BR/LC_MESSAGES/Creational/Prototype/README.po +++ b/locale/pt_BR/LC_MESSAGES/Creational/Prototype/README.po @@ -51,22 +51,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Você também encontra este código no `GitHub`_" -#: ../../Creational/Prototype/README.rst:28 -msgid "index.php" -msgstr "" - -#: ../../Creational/Prototype/README.rst:34 -msgid "BookPrototype.php" -msgstr "" - -#: ../../Creational/Prototype/README.rst:40 -msgid "BarBookPrototype.php" -msgstr "" - -#: ../../Creational/Prototype/README.rst:46 -msgid "FooBookPrototype.php" -msgstr "" - #: ../../Creational/Prototype/README.rst:53 msgid "Test" msgstr "Teste" diff --git a/locale/pt_BR/LC_MESSAGES/Creational/SimpleFactory/README.po b/locale/pt_BR/LC_MESSAGES/Creational/SimpleFactory/README.po index 836a31f..a34ef8e 100644 --- a/locale/pt_BR/LC_MESSAGES/Creational/SimpleFactory/README.po +++ b/locale/pt_BR/LC_MESSAGES/Creational/SimpleFactory/README.po @@ -51,26 +51,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Você também pode encontrar esse código no `GitHub`_" -#: ../../Creational/SimpleFactory/README.rst:27 -msgid "SimpleFactory.php" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:33 -msgid "VehicleInterface.php" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:39 -msgid "Bicycle.php" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:45 -msgid "Scooter.php" -msgstr "" - #: ../../Creational/SimpleFactory/README.rst:52 msgid "Test" msgstr "Teste" - -#: ../../Creational/SimpleFactory/README.rst:54 -msgid "Tests/SimpleFactoryTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Creational/Singleton/README.po b/locale/pt_BR/LC_MESSAGES/Creational/Singleton/README.po index d341bfd..4e10bbb 100644 --- a/locale/pt_BR/LC_MESSAGES/Creational/Singleton/README.po +++ b/locale/pt_BR/LC_MESSAGES/Creational/Singleton/README.po @@ -69,14 +69,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Você também pode encontrar esse código no `GitHub`_" -#: ../../Creational/Singleton/README.rst:34 -msgid "Singleton.php" -msgstr "" - #: ../../Creational/Singleton/README.rst:41 msgid "Test" msgstr "Teste" - -#: ../../Creational/Singleton/README.rst:43 -msgid "Tests/SingletonTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Creational/StaticFactory/README.po b/locale/pt_BR/LC_MESSAGES/Creational/StaticFactory/README.po index 556ebe3..f5fe944 100644 --- a/locale/pt_BR/LC_MESSAGES/Creational/StaticFactory/README.po +++ b/locale/pt_BR/LC_MESSAGES/Creational/StaticFactory/README.po @@ -52,26 +52,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Creational/StaticFactory/README.rst:31 -msgid "StaticFactory.php" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:37 -msgid "FormatterInterface.php" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:43 -msgid "FormatString.php" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:49 -msgid "FormatNumber.php" -msgstr "" - #: ../../Creational/StaticFactory/README.rst:56 msgid "Test" msgstr "" - -#: ../../Creational/StaticFactory/README.rst:58 -msgid "Tests/StaticFactoryTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/More/Delegation/README.po b/locale/pt_BR/LC_MESSAGES/More/Delegation/README.po index 659a28f..7580c26 100644 --- a/locale/pt_BR/LC_MESSAGES/More/Delegation/README.po +++ b/locale/pt_BR/LC_MESSAGES/More/Delegation/README.po @@ -64,22 +64,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Você também pode encontrar esse código no `Github`_" -#: ../../More/Delegation/README.rst:26 -msgid "Usage.php" -msgstr "" - -#: ../../More/Delegation/README.rst:32 -msgid "TeamLead.php" -msgstr "" - -#: ../../More/Delegation/README.rst:38 -msgid "JuniorDeveloper.php" -msgstr "" - #: ../../More/Delegation/README.rst:45 msgid "Test" msgstr "" - -#: ../../More/Delegation/README.rst:47 -msgid "Tests/DelegationTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/More/Repository/README.po b/locale/pt_BR/LC_MESSAGES/More/Repository/README.po index f9a9d36..9864946 100644 --- a/locale/pt_BR/LC_MESSAGES/More/Repository/README.po +++ b/locale/pt_BR/LC_MESSAGES/More/Repository/README.po @@ -63,22 +63,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Você também pode encontrar esse código no `GitHub`_" -#: ../../More/Repository/README.rst:34 -msgid "Post.php" -msgstr "" - -#: ../../More/Repository/README.rst:40 -msgid "PostRepository.php" -msgstr "" - -#: ../../More/Repository/README.rst:46 -msgid "Persistence.php" -msgstr "" - -#: ../../More/Repository/README.rst:52 -msgid "InMemoryPersistence.php" -msgstr "" - #: ../../More/Repository/README.rst:59 msgid "Test" msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/More/ServiceLocator/README.po b/locale/pt_BR/LC_MESSAGES/More/ServiceLocator/README.po index 26a99b4..031fbd4 100644 --- a/locale/pt_BR/LC_MESSAGES/More/ServiceLocator/README.po +++ b/locale/pt_BR/LC_MESSAGES/More/ServiceLocator/README.po @@ -71,34 +71,6 @@ msgstr "Código" msgid "You can also find this code on `GitHub`_" msgstr "Você também pode encontrar este código no `Github`_" -#: ../../More/ServiceLocator/README.rst:38 -msgid "ServiceLocatorInterface.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:44 -msgid "ServiceLocator.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:50 -msgid "LogServiceInterface.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:56 -msgid "LogService.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:62 -msgid "DatabaseServiceInterface.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:68 -msgid "DatabaseService.php" -msgstr "" - #: ../../More/ServiceLocator/README.rst:75 msgid "Test" msgstr "" - -#: ../../More/ServiceLocator/README.rst:77 -msgid "Tests/ServiceLocatorTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Structural/Adapter/README.po b/locale/pt_BR/LC_MESSAGES/Structural/Adapter/README.po index d8a9383..9492c61 100644 --- a/locale/pt_BR/LC_MESSAGES/Structural/Adapter/README.po +++ b/locale/pt_BR/LC_MESSAGES/Structural/Adapter/README.po @@ -63,30 +63,6 @@ msgid "You can also find this code on `GitHub`_" msgstr "" >>>>>>> c1f0faccc8503a78a1b4cae192aaef127a2edb02 -#: ../../Structural/Adapter/README.rst:31 -msgid "PaperBookInterface.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:37 -msgid "Book.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:43 -msgid "EBookAdapter.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:49 -msgid "EBookInterface.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:55 -msgid "Kindle.php" -msgstr "" - #: ../../Structural/Adapter/README.rst:62 msgid "Test" msgstr "" - -#: ../../Structural/Adapter/README.rst:64 -msgid "Tests/AdapterTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Structural/Bridge/README.po b/locale/pt_BR/LC_MESSAGES/Structural/Bridge/README.po index e2ee3f6..ac8200c 100644 --- a/locale/pt_BR/LC_MESSAGES/Structural/Bridge/README.po +++ b/locale/pt_BR/LC_MESSAGES/Structural/Bridge/README.po @@ -45,34 +45,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Bridge/README.rst:28 -msgid "Workshop.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:34 -msgid "Assemble.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:40 -msgid "Produce.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:46 -msgid "Vehicle.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:52 -msgid "Motorcycle.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:58 -msgid "Car.php" -msgstr "" - #: ../../Structural/Bridge/README.rst:65 msgid "Test" msgstr "" - -#: ../../Structural/Bridge/README.rst:67 -msgid "Tests/BridgeTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Structural/Composite/README.po b/locale/pt_BR/LC_MESSAGES/Structural/Composite/README.po index a5b59d4..7908b74 100644 --- a/locale/pt_BR/LC_MESSAGES/Structural/Composite/README.po +++ b/locale/pt_BR/LC_MESSAGES/Structural/Composite/README.po @@ -53,26 +53,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Composite/README.rst:31 -msgid "FormElement.php" -msgstr "" - -#: ../../Structural/Composite/README.rst:37 -msgid "Form.php" -msgstr "" - -#: ../../Structural/Composite/README.rst:43 -msgid "InputElement.php" -msgstr "" - -#: ../../Structural/Composite/README.rst:49 -msgid "TextElement.php" -msgstr "" - #: ../../Structural/Composite/README.rst:56 msgid "Test" msgstr "" - -#: ../../Structural/Composite/README.rst:58 -msgid "Tests/CompositeTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Structural/DataMapper/README.po b/locale/pt_BR/LC_MESSAGES/Structural/DataMapper/README.po index 6093eea..164f7ed 100644 --- a/locale/pt_BR/LC_MESSAGES/Structural/DataMapper/README.po +++ b/locale/pt_BR/LC_MESSAGES/Structural/DataMapper/README.po @@ -60,18 +60,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/DataMapper/README.rst:38 -msgid "User.php" -msgstr "" - -#: ../../Structural/DataMapper/README.rst:44 -msgid "UserMapper.php" -msgstr "" - #: ../../Structural/DataMapper/README.rst:51 msgid "Test" msgstr "" - -#: ../../Structural/DataMapper/README.rst:53 -msgid "Tests/DataMapperTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Structural/Decorator/README.po b/locale/pt_BR/LC_MESSAGES/Structural/Decorator/README.po index 124019f..335d776 100644 --- a/locale/pt_BR/LC_MESSAGES/Structural/Decorator/README.po +++ b/locale/pt_BR/LC_MESSAGES/Structural/Decorator/README.po @@ -49,30 +49,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Decorator/README.rst:28 -msgid "RendererInterface.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:34 -msgid "Webservice.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:40 -msgid "Decorator.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:46 -msgid "RenderInXml.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:52 -msgid "RenderInJson.php" -msgstr "" - #: ../../Structural/Decorator/README.rst:59 msgid "Test" msgstr "" - -#: ../../Structural/Decorator/README.rst:61 -msgid "Tests/DecoratorTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Structural/DependencyInjection/README.po b/locale/pt_BR/LC_MESSAGES/Structural/DependencyInjection/README.po index 7eeeb06..f017805 100644 --- a/locale/pt_BR/LC_MESSAGES/Structural/DependencyInjection/README.po +++ b/locale/pt_BR/LC_MESSAGES/Structural/DependencyInjection/README.po @@ -78,30 +78,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/DependencyInjection/README.rst:48 -msgid "AbstractConfig.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:54 -msgid "Parameters.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:60 -msgid "ArrayConfig.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:66 -msgid "Connection.php" -msgstr "" - #: ../../Structural/DependencyInjection/README.rst:73 msgid "Test" msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:75 -msgid "Tests/DependencyInjectionTest.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:81 -msgid "Tests/config.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Structural/Facade/README.po b/locale/pt_BR/LC_MESSAGES/Structural/Facade/README.po index 81358f4..6cca97b 100644 --- a/locale/pt_BR/LC_MESSAGES/Structural/Facade/README.po +++ b/locale/pt_BR/LC_MESSAGES/Structural/Facade/README.po @@ -66,22 +66,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Facade/README.rst:38 -msgid "Facade.php" -msgstr "" - -#: ../../Structural/Facade/README.rst:44 -msgid "OsInterface.php" -msgstr "" - -#: ../../Structural/Facade/README.rst:50 -msgid "BiosInterface.php" -msgstr "" - #: ../../Structural/Facade/README.rst:57 msgid "Test" msgstr "" - -#: ../../Structural/Facade/README.rst:59 -msgid "Tests/FacadeTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Structural/FluentInterface/README.po b/locale/pt_BR/LC_MESSAGES/Structural/FluentInterface/README.po index 4331b7c..b330ab4 100644 --- a/locale/pt_BR/LC_MESSAGES/Structural/FluentInterface/README.po +++ b/locale/pt_BR/LC_MESSAGES/Structural/FluentInterface/README.po @@ -53,14 +53,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/FluentInterface/README.rst:30 -msgid "Sql.php" -msgstr "" - #: ../../Structural/FluentInterface/README.rst:37 msgid "Test" msgstr "" - -#: ../../Structural/FluentInterface/README.rst:39 -msgid "Tests/FluentInterfaceTest.php" -msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Structural/Flyweight/README.po b/locale/pt_BR/LC_MESSAGES/Structural/Flyweight/README.po index cfa8492..2514886 100644 --- a/locale/pt_BR/LC_MESSAGES/Structural/Flyweight/README.po +++ b/locale/pt_BR/LC_MESSAGES/Structural/Flyweight/README.po @@ -47,23 +47,7 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Flyweight/README.rst:23 -msgid "FlyweightInterface.php" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:29 -msgid "CharacterFlyweight.php" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:35 -msgid "FlyweightFactory.php" -msgstr "" - #: ../../Structural/Flyweight/README.rst:42 msgid "Test" msgstr "" -#: ../../Structural/Flyweight/README.rst:44 -msgid "Tests/FlyweightTest.php" -msgstr "" - diff --git a/locale/pt_BR/LC_MESSAGES/Structural/Proxy/README.po b/locale/pt_BR/LC_MESSAGES/Structural/Proxy/README.po index 1e52782..6a3e254 100644 --- a/locale/pt_BR/LC_MESSAGES/Structural/Proxy/README.po +++ b/locale/pt_BR/LC_MESSAGES/Structural/Proxy/README.po @@ -46,14 +46,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Proxy/README.rst:28 -msgid "Record.php" -msgstr "" - -#: ../../Structural/Proxy/README.rst:34 -msgid "RecordProxy.php" -msgstr "" - #: ../../Structural/Proxy/README.rst:41 msgid "Test" msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/Structural/Registry/README.po b/locale/pt_BR/LC_MESSAGES/Structural/Registry/README.po index 104a57d..326d6c0 100644 --- a/locale/pt_BR/LC_MESSAGES/Structural/Registry/README.po +++ b/locale/pt_BR/LC_MESSAGES/Structural/Registry/README.po @@ -54,14 +54,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Registry/README.rst:31 -msgid "Registry.php" -msgstr "" - #: ../../Structural/Registry/README.rst:38 msgid "Test" msgstr "" - -#: ../../Structural/Registry/README.rst:40 -msgid "Tests/RegistryTest.php" -msgstr "" diff --git a/locale/ru/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po b/locale/ru/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po index ba49fbe..761298c 100644 --- a/locale/ru/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po +++ b/locale/ru/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po @@ -76,26 +76,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Behavioral/ChainOfResponsibilities/README.rst:36 -msgid "Request.php" -msgstr "Request.php" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:42 -msgid "Handler.php" -msgstr "Handler.php" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:48 -msgid "Responsible/SlowStorage.php" -msgstr "Responsible/SlowStorage.php" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:54 -msgid "Responsible/FastStorage.php" -msgstr "Responsible/FastStorage.php" - #: ../../Behavioral/ChainOfResponsibilities/README.rst:61 msgid "Test" msgstr "Тест" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:63 -msgid "Tests/ChainTest.php" -msgstr "Tests/ChainTest.php" diff --git a/locale/ru/LC_MESSAGES/Behavioral/Command/README.po b/locale/ru/LC_MESSAGES/Behavioral/Command/README.po index e32ecdd..478e7d1 100644 --- a/locale/ru/LC_MESSAGES/Behavioral/Command/README.po +++ b/locale/ru/LC_MESSAGES/Behavioral/Command/README.po @@ -91,26 +91,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы также можете найти этот код на `GitHub`_" -#: ../../Behavioral/Command/README.rst:43 -msgid "CommandInterface.php" -msgstr "CommandInterface.php" - -#: ../../Behavioral/Command/README.rst:49 -msgid "HelloCommand.php" -msgstr "HelloCommand.php" - -#: ../../Behavioral/Command/README.rst:55 -msgid "Receiver.php" -msgstr "Receiver.php" - -#: ../../Behavioral/Command/README.rst:61 -msgid "Invoker.php" -msgstr "Invoker.php" - #: ../../Behavioral/Command/README.rst:68 msgid "Test" msgstr "Тест" - -#: ../../Behavioral/Command/README.rst:70 -msgid "Tests/CommandTest.php" -msgstr "Tests/CommandTest.php" diff --git a/locale/ru/LC_MESSAGES/Behavioral/Iterator/README.po b/locale/ru/LC_MESSAGES/Behavioral/Iterator/README.po index 2c86150..7881917 100644 --- a/locale/ru/LC_MESSAGES/Behavioral/Iterator/README.po +++ b/locale/ru/LC_MESSAGES/Behavioral/Iterator/README.po @@ -66,26 +66,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Также вы можете найти этот код на `GitHub`_" -#: ../../Behavioral/Iterator/README.rst:36 -msgid "Book.php" -msgstr "Book.php" - -#: ../../Behavioral/Iterator/README.rst:42 -msgid "BookList.php" -msgstr "BookList.php" - -#: ../../Behavioral/Iterator/README.rst:48 -msgid "BookListIterator.php" -msgstr "BookListIterator.php" - -#: ../../Behavioral/Iterator/README.rst:54 -msgid "BookListReverseIterator.php" -msgstr "BookListReverseIterator.php" - #: ../../Behavioral/Iterator/README.rst:61 msgid "Test" msgstr "Тест" - -#: ../../Behavioral/Iterator/README.rst:63 -msgid "Tests/IteratorTest.php" -msgstr "Tests/IteratorTest.php" diff --git a/locale/ru/LC_MESSAGES/Behavioral/Mediator/README.po b/locale/ru/LC_MESSAGES/Behavioral/Mediator/README.po index f6d53a2..3ecc630 100644 --- a/locale/ru/LC_MESSAGES/Behavioral/Mediator/README.po +++ b/locale/ru/LC_MESSAGES/Behavioral/Mediator/README.po @@ -54,34 +54,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Behavioral/Mediator/README.rst:27 -msgid "MediatorInterface.php" -msgstr "MediatorInterface.php" - -#: ../../Behavioral/Mediator/README.rst:33 -msgid "Mediator.php" -msgstr "Mediator.php" - -#: ../../Behavioral/Mediator/README.rst:39 -msgid "Colleague.php" -msgstr "Colleague.php" - -#: ../../Behavioral/Mediator/README.rst:45 -msgid "Subsystem/Client.php" -msgstr "Subsystem/Client.php" - -#: ../../Behavioral/Mediator/README.rst:51 -msgid "Subsystem/Database.php" -msgstr "Subsystem/Database.php" - -#: ../../Behavioral/Mediator/README.rst:57 -msgid "Subsystem/Server.php" -msgstr "Subsystem/Server.php" - #: ../../Behavioral/Mediator/README.rst:64 msgid "Test" msgstr "Тест" - -#: ../../Behavioral/Mediator/README.rst:66 -msgid "Tests/MediatorTest.php" -msgstr "Tests/MediatorTest.php" diff --git a/locale/ru/LC_MESSAGES/Behavioral/Memento/README.po b/locale/ru/LC_MESSAGES/Behavioral/Memento/README.po index 0fd6dab..04f1506 100644 --- a/locale/ru/LC_MESSAGES/Behavioral/Memento/README.po +++ b/locale/ru/LC_MESSAGES/Behavioral/Memento/README.po @@ -132,22 +132,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Behavioral/Memento/README.rst:57 -msgid "Memento.php" -msgstr "Memento.php" - -#: ../../Behavioral/Memento/README.rst:63 -msgid "Originator.php" -msgstr "Originator.php" - -#: ../../Behavioral/Memento/README.rst:69 -msgid "Caretaker.php" -msgstr "Caretaker.php" - #: ../../Behavioral/Memento/README.rst:76 msgid "Test" msgstr "Тест" - -#: ../../Behavioral/Memento/README.rst:78 -msgid "Tests/MementoTest.php" -msgstr "Tests/MementoTest.php" diff --git a/locale/ru/LC_MESSAGES/Behavioral/NullObject/README.po b/locale/ru/LC_MESSAGES/Behavioral/NullObject/README.po index 8b5a9ab..69e2bf0 100644 --- a/locale/ru/LC_MESSAGES/Behavioral/NullObject/README.po +++ b/locale/ru/LC_MESSAGES/Behavioral/NullObject/README.po @@ -87,26 +87,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Behavioral/NullObject/README.rst:41 -msgid "Service.php" -msgstr "Service.php" - -#: ../../Behavioral/NullObject/README.rst:47 -msgid "LoggerInterface.php" -msgstr "LoggerInterface.php" - -#: ../../Behavioral/NullObject/README.rst:53 -msgid "PrintLogger.php" -msgstr "PrintLogger.php" - -#: ../../Behavioral/NullObject/README.rst:59 -msgid "NullLogger.php" -msgstr "NullLogger.php" - #: ../../Behavioral/NullObject/README.rst:66 msgid "Test" msgstr "Тест" - -#: ../../Behavioral/NullObject/README.rst:68 -msgid "Tests/LoggerTest.php" -msgstr "Tests/LoggerTest.php" diff --git a/locale/ru/LC_MESSAGES/Behavioral/Observer/README.po b/locale/ru/LC_MESSAGES/Behavioral/Observer/README.po index dc9403a..0eeae07 100644 --- a/locale/ru/LC_MESSAGES/Behavioral/Observer/README.po +++ b/locale/ru/LC_MESSAGES/Behavioral/Observer/README.po @@ -67,18 +67,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Behavioral/Observer/README.rst:36 -msgid "User.php" -msgstr "User.php" - -#: ../../Behavioral/Observer/README.rst:42 -msgid "UserObserver.php" -msgstr "UserObserver.php" - #: ../../Behavioral/Observer/README.rst:49 msgid "Test" msgstr "Тест" - -#: ../../Behavioral/Observer/README.rst:51 -msgid "Tests/ObserverTest.php" -msgstr "Tests/ObserverTest.php" diff --git a/locale/ru/LC_MESSAGES/Behavioral/Specification/README.po b/locale/ru/LC_MESSAGES/Behavioral/Specification/README.po index 6ad7d8f..dfca6ec 100644 --- a/locale/ru/LC_MESSAGES/Behavioral/Specification/README.po +++ b/locale/ru/LC_MESSAGES/Behavioral/Specification/README.po @@ -51,38 +51,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Behavioral/Specification/README.rst:29 -msgid "Item.php" -msgstr "Item.php" - -#: ../../Behavioral/Specification/README.rst:35 -msgid "SpecificationInterface.php" -msgstr "SpecificationInterface.php" - -#: ../../Behavioral/Specification/README.rst:41 -msgid "AbstractSpecification.php" -msgstr "AbstractSpecification.php" - -#: ../../Behavioral/Specification/README.rst:47 -msgid "Either.php" -msgstr "Either.php" - -#: ../../Behavioral/Specification/README.rst:53 -msgid "PriceSpecification.php" -msgstr "PriceSpecification.php" - -#: ../../Behavioral/Specification/README.rst:59 -msgid "Plus.php" -msgstr "Plus.php" - -#: ../../Behavioral/Specification/README.rst:65 -msgid "Not.php" -msgstr "Not.php" - #: ../../Behavioral/Specification/README.rst:72 msgid "Test" msgstr "Тест" - -#: ../../Behavioral/Specification/README.rst:74 -msgid "Tests/SpecificationTest.php" -msgstr "Tests/SpecificationTest.php" diff --git a/locale/ru/LC_MESSAGES/Behavioral/State/README.po b/locale/ru/LC_MESSAGES/Behavioral/State/README.po index 1aaffdb..c42f8a3 100644 --- a/locale/ru/LC_MESSAGES/Behavioral/State/README.po +++ b/locale/ru/LC_MESSAGES/Behavioral/State/README.po @@ -42,26 +42,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Behavioral/State/README.rst:23 -msgid "OrderController.php" -msgstr "OrderController.php" - -#: ../../Behavioral/State/README.rst:29 -msgid "OrderFactory.php" -msgstr "OrderFactory.php" - -#: ../../Behavioral/State/README.rst:35 -msgid "OrderInterface.php" -msgstr "OrderInterface.php" - -#: ../../Behavioral/State/README.rst:41 -msgid "ShippingOrder.php" -msgstr "ShippingOrder.php" - -#: ../../Behavioral/State/README.rst:47 -msgid "CreateOrder.php" -msgstr "CreateOrder.php" - #: ../../Behavioral/State/README.rst:54 msgid "Test" msgstr "Тест" diff --git a/locale/ru/LC_MESSAGES/Behavioral/Strategy/README.po b/locale/ru/LC_MESSAGES/Behavioral/Strategy/README.po index 8b237b2..4628fb5 100644 --- a/locale/ru/LC_MESSAGES/Behavioral/Strategy/README.po +++ b/locale/ru/LC_MESSAGES/Behavioral/Strategy/README.po @@ -73,26 +73,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Behavioral/Strategy/README.rst:37 -msgid "ObjectCollection.php" -msgstr "ObjectCollection.php" - -#: ../../Behavioral/Strategy/README.rst:43 -msgid "ComparatorInterface.php" -msgstr "ComparatorInterface.php" - -#: ../../Behavioral/Strategy/README.rst:49 -msgid "DateComparator.php" -msgstr "DateComparator.php" - -#: ../../Behavioral/Strategy/README.rst:55 -msgid "IdComparator.php" -msgstr "IdComparator.php" - #: ../../Behavioral/Strategy/README.rst:62 msgid "Test" msgstr "Тест" - -#: ../../Behavioral/Strategy/README.rst:64 -msgid "Tests/StrategyTest.php" -msgstr "Tests/StrategyTest.php" diff --git a/locale/ru/LC_MESSAGES/Behavioral/TemplateMethod/README.po b/locale/ru/LC_MESSAGES/Behavioral/TemplateMethod/README.po index a68192c..8079132 100644 --- a/locale/ru/LC_MESSAGES/Behavioral/TemplateMethod/README.po +++ b/locale/ru/LC_MESSAGES/Behavioral/TemplateMethod/README.po @@ -75,22 +75,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Behavioral/TemplateMethod/README.rst:36 -msgid "Journey.php" -msgstr "Journey.php" - -#: ../../Behavioral/TemplateMethod/README.rst:42 -msgid "BeachJourney.php" -msgstr "BeachJourney.php" - -#: ../../Behavioral/TemplateMethod/README.rst:48 -msgid "CityJourney.php" -msgstr "CityJourney.php" - #: ../../Behavioral/TemplateMethod/README.rst:55 msgid "Test" msgstr "Тест" - -#: ../../Behavioral/TemplateMethod/README.rst:57 -msgid "Tests/JourneyTest.php" -msgstr "Tests/JourneyTest.php" diff --git a/locale/ru/LC_MESSAGES/Behavioral/Visitor/README.po b/locale/ru/LC_MESSAGES/Behavioral/Visitor/README.po index 2c7b7f9..d829919 100644 --- a/locale/ru/LC_MESSAGES/Behavioral/Visitor/README.po +++ b/locale/ru/LC_MESSAGES/Behavioral/Visitor/README.po @@ -54,30 +54,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Behavioral/Visitor/README.rst:28 -msgid "RoleVisitorInterface.php" -msgstr "RoleVisitorInterface.php" - -#: ../../Behavioral/Visitor/README.rst:34 -msgid "RolePrintVisitor.php" -msgstr "RolePrintVisitor.php" - -#: ../../Behavioral/Visitor/README.rst:40 -msgid "Role.php" -msgstr "Role.php" - -#: ../../Behavioral/Visitor/README.rst:46 -msgid "User.php" -msgstr "User.php" - -#: ../../Behavioral/Visitor/README.rst:52 -msgid "Group.php" -msgstr "Group.php" - #: ../../Behavioral/Visitor/README.rst:59 msgid "Test" msgstr "Тест" - -#: ../../Behavioral/Visitor/README.rst:61 -msgid "Tests/VisitorTest.php" -msgstr "Tests/VisitorTest.php" diff --git a/locale/ru/LC_MESSAGES/Creational/AbstractFactory/README.po b/locale/ru/LC_MESSAGES/Creational/AbstractFactory/README.po index 72eb188..1323776 100644 --- a/locale/ru/LC_MESSAGES/Creational/AbstractFactory/README.po +++ b/locale/ru/LC_MESSAGES/Creational/AbstractFactory/README.po @@ -46,50 +46,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Creational/AbstractFactory/README.rst:24 -msgid "AbstractFactory.php" -msgstr "AbstractFactory.php" - -#: ../../Creational/AbstractFactory/README.rst:30 -msgid "JsonFactory.php" -msgstr "JsonFactory.php" - -#: ../../Creational/AbstractFactory/README.rst:36 -msgid "HtmlFactory.php" -msgstr "HtmlFactory.php" - -#: ../../Creational/AbstractFactory/README.rst:42 -msgid "MediaInterface.php" -msgstr "MediaInterface.php" - -#: ../../Creational/AbstractFactory/README.rst:48 -msgid "Picture.php" -msgstr "Picture.php" - -#: ../../Creational/AbstractFactory/README.rst:54 -msgid "Text.php" -msgstr "Text.php" - -#: ../../Creational/AbstractFactory/README.rst:60 -msgid "Json/Picture.php" -msgstr "Json/Picture.php" - -#: ../../Creational/AbstractFactory/README.rst:66 -msgid "Json/Text.php" -msgstr "Json/Text.php" - -#: ../../Creational/AbstractFactory/README.rst:72 -msgid "Html/Picture.php" -msgstr "Html/Picture.php" - -#: ../../Creational/AbstractFactory/README.rst:78 -msgid "Html/Text.php" -msgstr "Html/Text.php" - #: ../../Creational/AbstractFactory/README.rst:85 msgid "Test" msgstr "Тест" - -#: ../../Creational/AbstractFactory/README.rst:87 -msgid "Tests/AbstractFactoryTest.php" -msgstr "Tests/AbstractFactoryTest.php" diff --git a/locale/ru/LC_MESSAGES/Creational/Builder/README.po b/locale/ru/LC_MESSAGES/Creational/Builder/README.po index a195aee..d84b5f7 100644 --- a/locale/ru/LC_MESSAGES/Creational/Builder/README.po +++ b/locale/ru/LC_MESSAGES/Creational/Builder/README.po @@ -69,50 +69,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Creational/Builder/README.rst:35 -msgid "Director.php" -msgstr "Director.php" - -#: ../../Creational/Builder/README.rst:41 -msgid "BuilderInterface.php" -msgstr "BuilderInterface.php" - -#: ../../Creational/Builder/README.rst:47 -msgid "BikeBuilder.php" -msgstr "BikeBuilder.php" - -#: ../../Creational/Builder/README.rst:53 -msgid "CarBuilder.php" -msgstr "CarBuilder.php" - -#: ../../Creational/Builder/README.rst:59 -msgid "Parts/Vehicle.php" -msgstr "Parts/Vehicle.php" - -#: ../../Creational/Builder/README.rst:65 -msgid "Parts/Bike.php" -msgstr "Parts/Bike.php" - -#: ../../Creational/Builder/README.rst:71 -msgid "Parts/Car.php" -msgstr "Parts/Car.php" - -#: ../../Creational/Builder/README.rst:77 -msgid "Parts/Engine.php" -msgstr "Parts/Engine.php" - -#: ../../Creational/Builder/README.rst:83 -msgid "Parts/Wheel.php" -msgstr "Parts/Wheel.php" - -#: ../../Creational/Builder/README.rst:89 -msgid "Parts/Door.php" -msgstr "Parts/Door.php" - #: ../../Creational/Builder/README.rst:96 msgid "Test" msgstr "Тест" - -#: ../../Creational/Builder/README.rst:98 -msgid "Tests/DirectorTest.php" -msgstr "Tests/DirectorTest.php" diff --git a/locale/ru/LC_MESSAGES/Creational/FactoryMethod/README.po b/locale/ru/LC_MESSAGES/Creational/FactoryMethod/README.po index 81ae5b7..26f030d 100644 --- a/locale/ru/LC_MESSAGES/Creational/FactoryMethod/README.po +++ b/locale/ru/LC_MESSAGES/Creational/FactoryMethod/README.po @@ -64,38 +64,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Creational/FactoryMethod/README.rst:31 -msgid "FactoryMethod.php" -msgstr "FactoryMethod.php" - -#: ../../Creational/FactoryMethod/README.rst:37 -msgid "ItalianFactory.php" -msgstr "ItalianFactory.php" - -#: ../../Creational/FactoryMethod/README.rst:43 -msgid "GermanFactory.php" -msgstr "GermanFactory.php" - -#: ../../Creational/FactoryMethod/README.rst:49 -msgid "VehicleInterface.php" -msgstr "VehicleInterface.php" - -#: ../../Creational/FactoryMethod/README.rst:55 -msgid "Porsche.php" -msgstr "Porsche.php" - -#: ../../Creational/FactoryMethod/README.rst:61 -msgid "Bicycle.php" -msgstr "Bicycle.php" - -#: ../../Creational/FactoryMethod/README.rst:67 -msgid "Ferrari.php" -msgstr "Ferrari.php" - #: ../../Creational/FactoryMethod/README.rst:74 msgid "Test" msgstr "Тест" - -#: ../../Creational/FactoryMethod/README.rst:76 -msgid "Tests/FactoryMethodTest.php" -msgstr "Tests/FactoryMethodTest.php" diff --git a/locale/ru/LC_MESSAGES/Creational/Multiton/README.po b/locale/ru/LC_MESSAGES/Creational/Multiton/README.po index 2b918e8..faf0327 100644 --- a/locale/ru/LC_MESSAGES/Creational/Multiton/README.po +++ b/locale/ru/LC_MESSAGES/Creational/Multiton/README.po @@ -63,10 +63,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Creational/Multiton/README.rst:31 -msgid "Multiton.php" -msgstr "Multiton.php" - #: ../../Creational/Multiton/README.rst:38 msgid "Test" msgstr "Тест" diff --git a/locale/ru/LC_MESSAGES/Creational/Pool/README.po b/locale/ru/LC_MESSAGES/Creational/Pool/README.po index 18c38bb..d0265a4 100644 --- a/locale/ru/LC_MESSAGES/Creational/Pool/README.po +++ b/locale/ru/LC_MESSAGES/Creational/Pool/README.po @@ -73,26 +73,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Creational/Pool/README.rst:36 -msgid "Pool.php" -msgstr "Pool.php" - -#: ../../Creational/Pool/README.rst:42 -msgid "Processor.php" -msgstr "Processor.php" - -#: ../../Creational/Pool/README.rst:48 -msgid "Worker.php" -msgstr "Worker.php" - #: ../../Creational/Pool/README.rst:55 msgid "Test" msgstr "Тест" - -#: ../../Creational/Pool/README.rst:57 -msgid "Tests/PoolTest.php" -msgstr "Tests/PoolTest.php" - -#: ../../Creational/Pool/README.rst:63 -msgid "Tests/TestWorker.php" -msgstr "Tests/TestWorker.php" diff --git a/locale/ru/LC_MESSAGES/Creational/Prototype/README.po b/locale/ru/LC_MESSAGES/Creational/Prototype/README.po index 6413834..13c3e72 100644 --- a/locale/ru/LC_MESSAGES/Creational/Prototype/README.po +++ b/locale/ru/LC_MESSAGES/Creational/Prototype/README.po @@ -53,22 +53,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Creational/Prototype/README.rst:28 -msgid "index.php" -msgstr "index.php" - -#: ../../Creational/Prototype/README.rst:34 -msgid "BookPrototype.php" -msgstr "BookPrototype.php" - -#: ../../Creational/Prototype/README.rst:40 -msgid "BarBookPrototype.php" -msgstr "BarBookPrototype.php" - -#: ../../Creational/Prototype/README.rst:46 -msgid "FooBookPrototype.php" -msgstr "FooBookPrototype.php" - #: ../../Creational/Prototype/README.rst:53 msgid "Test" msgstr "Тест" diff --git a/locale/ru/LC_MESSAGES/Creational/SimpleFactory/README.po b/locale/ru/LC_MESSAGES/Creational/SimpleFactory/README.po index fbdd8d4..86fe916 100644 --- a/locale/ru/LC_MESSAGES/Creational/SimpleFactory/README.po +++ b/locale/ru/LC_MESSAGES/Creational/SimpleFactory/README.po @@ -55,26 +55,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Creational/SimpleFactory/README.rst:27 -msgid "SimpleFactory.php" -msgstr "SimpleFactory.php" - -#: ../../Creational/SimpleFactory/README.rst:33 -msgid "VehicleInterface.php" -msgstr "VehicleInterface.php" - -#: ../../Creational/SimpleFactory/README.rst:39 -msgid "Bicycle.php" -msgstr "Bicycle.php" - -#: ../../Creational/SimpleFactory/README.rst:45 -msgid "Scooter.php" -msgstr "Scooter.php" - #: ../../Creational/SimpleFactory/README.rst:52 msgid "Test" msgstr "Тест" - -#: ../../Creational/SimpleFactory/README.rst:54 -msgid "Tests/SimpleFactoryTest.php" -msgstr "Tests/SimpleFactoryTest.php" diff --git a/locale/ru/LC_MESSAGES/Creational/Singleton/README.po b/locale/ru/LC_MESSAGES/Creational/Singleton/README.po index 561c773..22c893c 100644 --- a/locale/ru/LC_MESSAGES/Creational/Singleton/README.po +++ b/locale/ru/LC_MESSAGES/Creational/Singleton/README.po @@ -74,14 +74,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Creational/Singleton/README.rst:34 -msgid "Singleton.php" -msgstr "Singleton.php" - #: ../../Creational/Singleton/README.rst:41 msgid "Test" msgstr "Тест" - -#: ../../Creational/Singleton/README.rst:43 -msgid "Tests/SingletonTest.php" -msgstr "Tests/SingletonTest.php" diff --git a/locale/ru/LC_MESSAGES/Creational/StaticFactory/README.po b/locale/ru/LC_MESSAGES/Creational/StaticFactory/README.po index 700c560..ae5dc75 100644 --- a/locale/ru/LC_MESSAGES/Creational/StaticFactory/README.po +++ b/locale/ru/LC_MESSAGES/Creational/StaticFactory/README.po @@ -57,26 +57,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Creational/StaticFactory/README.rst:31 -msgid "StaticFactory.php" -msgstr "StaticFactory.php" - -#: ../../Creational/StaticFactory/README.rst:37 -msgid "FormatterInterface.php" -msgstr "FormatterInterface.php" - -#: ../../Creational/StaticFactory/README.rst:43 -msgid "FormatString.php" -msgstr "FormatString.php" - -#: ../../Creational/StaticFactory/README.rst:49 -msgid "FormatNumber.php" -msgstr "FormatNumber.php" - #: ../../Creational/StaticFactory/README.rst:56 msgid "Test" msgstr "Тест" - -#: ../../Creational/StaticFactory/README.rst:58 -msgid "Tests/StaticFactoryTest.php" -msgstr "Tests/StaticFactoryTest.php" diff --git a/locale/ru/LC_MESSAGES/More/Delegation/README.po b/locale/ru/LC_MESSAGES/More/Delegation/README.po index aac9b0c..4ebbd33 100644 --- a/locale/ru/LC_MESSAGES/More/Delegation/README.po +++ b/locale/ru/LC_MESSAGES/More/Delegation/README.po @@ -67,22 +67,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../More/Delegation/README.rst:26 -msgid "Usage.php" -msgstr "Usage.php" - -#: ../../More/Delegation/README.rst:32 -msgid "TeamLead.php" -msgstr "TeamLead.php" - -#: ../../More/Delegation/README.rst:38 -msgid "JuniorDeveloper.php" -msgstr "JuniorDeveloper.php" - #: ../../More/Delegation/README.rst:45 msgid "Test" msgstr "Тест" - -#: ../../More/Delegation/README.rst:47 -msgid "Tests/DelegationTest.php" -msgstr "Tests/DelegationTest.php" diff --git a/locale/ru/LC_MESSAGES/More/EAV/README.po b/locale/ru/LC_MESSAGES/More/EAV/README.po index 430c993..3bef2bb 100644 --- a/locale/ru/LC_MESSAGES/More/EAV/README.po +++ b/locale/ru/LC_MESSAGES/More/EAV/README.po @@ -71,15 +71,3 @@ msgstr "Вы можете найти этот код на `GitHub`_" msgid "Test" msgstr "Тест" -#: ../../More/EAV/README.rst:104 -msgid "Tests/EntityTest.php" -msgstr "Tests/EntityTest.php" - -#: ../../More/EAV/README.rst:110 -msgid "Tests/AttributeTest.php" -msgstr "Tests/AttributeTest.php" - -#: ../../More/EAV/README.rst:116 -msgid "Tests/ValueTest.php" -msgstr "Tests/ValueTest.php" - diff --git a/locale/ru/LC_MESSAGES/More/Repository/README.po b/locale/ru/LC_MESSAGES/More/Repository/README.po index 29c5d4e..3f493b0 100644 --- a/locale/ru/LC_MESSAGES/More/Repository/README.po +++ b/locale/ru/LC_MESSAGES/More/Repository/README.po @@ -64,22 +64,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../More/Repository/README.rst:34 -msgid "Post.php" -msgstr "Post.php" - -#: ../../More/Repository/README.rst:40 -msgid "PostRepository.php" -msgstr "PostRepository.php" - -#: ../../More/Repository/README.rst:46 -msgid "Persistence.php" -msgstr "Persistence.php" - -#: ../../More/Repository/README.rst:52 -msgid "InMemoryPersistence.php" -msgstr "InMemoryPersistence.php" - #: ../../More/Repository/README.rst:59 msgid "Test" msgstr "Тест" diff --git a/locale/ru/LC_MESSAGES/More/ServiceLocator/README.po b/locale/ru/LC_MESSAGES/More/ServiceLocator/README.po index 0eaa1e0..df56a85 100644 --- a/locale/ru/LC_MESSAGES/More/ServiceLocator/README.po +++ b/locale/ru/LC_MESSAGES/More/ServiceLocator/README.po @@ -74,34 +74,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../More/ServiceLocator/README.rst:38 -msgid "ServiceLocatorInterface.php" -msgstr "ServiceLocatorInterface.php" - -#: ../../More/ServiceLocator/README.rst:44 -msgid "ServiceLocator.php" -msgstr "ServiceLocator.php" - -#: ../../More/ServiceLocator/README.rst:50 -msgid "LogServiceInterface.php" -msgstr "LogServiceInterface.php" - -#: ../../More/ServiceLocator/README.rst:56 -msgid "LogService.php" -msgstr "LogService.php" - -#: ../../More/ServiceLocator/README.rst:62 -msgid "DatabaseServiceInterface.php" -msgstr "DatabaseServiceInterface.php" - -#: ../../More/ServiceLocator/README.rst:68 -msgid "DatabaseService.php" -msgstr "DatabaseService.php" - #: ../../More/ServiceLocator/README.rst:75 msgid "Test" msgstr "Тест" - -#: ../../More/ServiceLocator/README.rst:77 -msgid "Tests/ServiceLocatorTest.php" -msgstr "Tests/ServiceLocatorTest.php" diff --git a/locale/ru/LC_MESSAGES/Structural/Adapter/README.po b/locale/ru/LC_MESSAGES/Structural/Adapter/README.po index cc079cd..e9ac14b 100644 --- a/locale/ru/LC_MESSAGES/Structural/Adapter/README.po +++ b/locale/ru/LC_MESSAGES/Structural/Adapter/README.po @@ -63,30 +63,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Structural/Adapter/README.rst:31 -msgid "PaperBookInterface.php" -msgstr "PaperBookInterface.php" - -#: ../../Structural/Adapter/README.rst:37 -msgid "Book.php" -msgstr "Book.php" - -#: ../../Structural/Adapter/README.rst:43 -msgid "EBookAdapter.php" -msgstr "EBookAdapter.php" - -#: ../../Structural/Adapter/README.rst:49 -msgid "EBookInterface.php" -msgstr "EBookInterface.php" - -#: ../../Structural/Adapter/README.rst:55 -msgid "Kindle.php" -msgstr "Kindle.php" - #: ../../Structural/Adapter/README.rst:62 msgid "Test" msgstr "Тест" - -#: ../../Structural/Adapter/README.rst:64 -msgid "Tests/AdapterTest.php" -msgstr "Tests/AdapterTest.php" diff --git a/locale/ru/LC_MESSAGES/Structural/Bridge/README.po b/locale/ru/LC_MESSAGES/Structural/Bridge/README.po index 9f91bbf..be8ef95 100644 --- a/locale/ru/LC_MESSAGES/Structural/Bridge/README.po +++ b/locale/ru/LC_MESSAGES/Structural/Bridge/README.po @@ -50,34 +50,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Structural/Bridge/README.rst:28 -msgid "Workshop.php" -msgstr "Workshop.php" - -#: ../../Structural/Bridge/README.rst:34 -msgid "Assemble.php" -msgstr "Assemble.php" - -#: ../../Structural/Bridge/README.rst:40 -msgid "Produce.php" -msgstr "Produce.php" - -#: ../../Structural/Bridge/README.rst:46 -msgid "Vehicle.php" -msgstr "Vehicle.php" - -#: ../../Structural/Bridge/README.rst:52 -msgid "Motorcycle.php" -msgstr "Motorcycle.php" - -#: ../../Structural/Bridge/README.rst:58 -msgid "Car.php" -msgstr "Car.php" - #: ../../Structural/Bridge/README.rst:65 msgid "Test" msgstr "Тест" - -#: ../../Structural/Bridge/README.rst:67 -msgid "Tests/BridgeTest.php" -msgstr "Tests/BridgeTest.php" diff --git a/locale/ru/LC_MESSAGES/Structural/Composite/README.po b/locale/ru/LC_MESSAGES/Structural/Composite/README.po index 5b79927..04974b1 100644 --- a/locale/ru/LC_MESSAGES/Structural/Composite/README.po +++ b/locale/ru/LC_MESSAGES/Structural/Composite/README.po @@ -62,26 +62,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Structural/Composite/README.rst:31 -msgid "FormElement.php" -msgstr "FormElement.php" - -#: ../../Structural/Composite/README.rst:37 -msgid "Form.php" -msgstr "Form.php" - -#: ../../Structural/Composite/README.rst:43 -msgid "InputElement.php" -msgstr "InputElement.php" - -#: ../../Structural/Composite/README.rst:49 -msgid "TextElement.php" -msgstr "TextElement.php" - #: ../../Structural/Composite/README.rst:56 msgid "Test" msgstr "Тест" - -#: ../../Structural/Composite/README.rst:58 -msgid "Tests/CompositeTest.php" -msgstr "Tests/CompositeTest.php" diff --git a/locale/ru/LC_MESSAGES/Structural/DataMapper/README.po b/locale/ru/LC_MESSAGES/Structural/DataMapper/README.po index 6376e95..da8615b 100644 --- a/locale/ru/LC_MESSAGES/Structural/DataMapper/README.po +++ b/locale/ru/LC_MESSAGES/Structural/DataMapper/README.po @@ -77,18 +77,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Structural/DataMapper/README.rst:38 -msgid "User.php" -msgstr "User.php" - -#: ../../Structural/DataMapper/README.rst:44 -msgid "UserMapper.php" -msgstr "UserMapper.php" - #: ../../Structural/DataMapper/README.rst:51 msgid "Test" msgstr "Тест" - -#: ../../Structural/DataMapper/README.rst:53 -msgid "Tests/DataMapperTest.php" -msgstr "Tests/DataMapperTest.php" diff --git a/locale/ru/LC_MESSAGES/Structural/Decorator/README.po b/locale/ru/LC_MESSAGES/Structural/Decorator/README.po index fe5d631..728d2f6 100644 --- a/locale/ru/LC_MESSAGES/Structural/Decorator/README.po +++ b/locale/ru/LC_MESSAGES/Structural/Decorator/README.po @@ -53,30 +53,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Structural/Decorator/README.rst:28 -msgid "RendererInterface.php" -msgstr "RendererInterface.php" - -#: ../../Structural/Decorator/README.rst:34 -msgid "Webservice.php" -msgstr "Webservice.php" - -#: ../../Structural/Decorator/README.rst:40 -msgid "Decorator.php" -msgstr "Decorator.php" - -#: ../../Structural/Decorator/README.rst:46 -msgid "RenderInXml.php" -msgstr "RenderInXml.php" - -#: ../../Structural/Decorator/README.rst:52 -msgid "RenderInJson.php" -msgstr "RenderInJson.php" - #: ../../Structural/Decorator/README.rst:59 msgid "Test" msgstr "Тест" - -#: ../../Structural/Decorator/README.rst:61 -msgid "Tests/DecoratorTest.php" -msgstr "Tests/DecoratorTest.php" diff --git a/locale/ru/LC_MESSAGES/Structural/DependencyInjection/README.po b/locale/ru/LC_MESSAGES/Structural/DependencyInjection/README.po index b448699..fd7697f 100644 --- a/locale/ru/LC_MESSAGES/Structural/DependencyInjection/README.po +++ b/locale/ru/LC_MESSAGES/Structural/DependencyInjection/README.po @@ -101,30 +101,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Structural/DependencyInjection/README.rst:48 -msgid "AbstractConfig.php" -msgstr "AbstractConfig.php" - -#: ../../Structural/DependencyInjection/README.rst:54 -msgid "Parameters.php" -msgstr "Parameters.php" - -#: ../../Structural/DependencyInjection/README.rst:60 -msgid "ArrayConfig.php" -msgstr "ArrayConfig.php" - -#: ../../Structural/DependencyInjection/README.rst:66 -msgid "Connection.php" -msgstr "Connection.php" - #: ../../Structural/DependencyInjection/README.rst:73 msgid "Test" msgstr "Тест" - -#: ../../Structural/DependencyInjection/README.rst:75 -msgid "Tests/DependencyInjectionTest.php" -msgstr "Tests/DependencyInjectionTest.php" - -#: ../../Structural/DependencyInjection/README.rst:81 -msgid "Tests/config.php" -msgstr "Tests/config.php" diff --git a/locale/ru/LC_MESSAGES/Structural/Facade/README.po b/locale/ru/LC_MESSAGES/Structural/Facade/README.po index 0b279d6..d9cbdfb 100644 --- a/locale/ru/LC_MESSAGES/Structural/Facade/README.po +++ b/locale/ru/LC_MESSAGES/Structural/Facade/README.po @@ -85,22 +85,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Structural/Facade/README.rst:38 -msgid "Facade.php" -msgstr "Facade.php" - -#: ../../Structural/Facade/README.rst:44 -msgid "OsInterface.php" -msgstr "OsInterface.php" - -#: ../../Structural/Facade/README.rst:50 -msgid "BiosInterface.php" -msgstr "BiosInterface.php" - #: ../../Structural/Facade/README.rst:57 msgid "Test" msgstr "Тест" - -#: ../../Structural/Facade/README.rst:59 -msgid "Tests/FacadeTest.php" -msgstr "Tests/FacadeTest.php" diff --git a/locale/ru/LC_MESSAGES/Structural/FluentInterface/README.po b/locale/ru/LC_MESSAGES/Structural/FluentInterface/README.po index 32f55f9..fbeb565 100644 --- a/locale/ru/LC_MESSAGES/Structural/FluentInterface/README.po +++ b/locale/ru/LC_MESSAGES/Structural/FluentInterface/README.po @@ -59,14 +59,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Structural/FluentInterface/README.rst:30 -msgid "Sql.php" -msgstr "Sql.php" - #: ../../Structural/FluentInterface/README.rst:37 msgid "Test" msgstr "Тест" - -#: ../../Structural/FluentInterface/README.rst:39 -msgid "Tests/FluentInterfaceTest.php" -msgstr "Tests/FluentInterfaceTest.php" diff --git a/locale/ru/LC_MESSAGES/Structural/Flyweight/README.po b/locale/ru/LC_MESSAGES/Structural/Flyweight/README.po index 9631fd1..06777bf 100644 --- a/locale/ru/LC_MESSAGES/Structural/Flyweight/README.po +++ b/locale/ru/LC_MESSAGES/Structural/Flyweight/README.po @@ -52,23 +52,7 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Structural/Flyweight/README.rst:23 -msgid "FlyweightInterface.php" -msgstr "FlyweightInterface.php" - -#: ../../Structural/Flyweight/README.rst:29 -msgid "CharacterFlyweight.php" -msgstr "CharacterFlyweight.php" - -#: ../../Structural/Flyweight/README.rst:35 -msgid "FlyweightFactory.php" -msgstr "FlyweightFactory.php" - #: ../../Structural/Flyweight/README.rst:42 msgid "Test" msgstr "Тест" -#: ../../Structural/Flyweight/README.rst:44 -msgid "Tests/FlyweightTest.php" -msgstr "Tests/FlyweightTest.php" - diff --git a/locale/ru/LC_MESSAGES/Structural/Proxy/README.po b/locale/ru/LC_MESSAGES/Structural/Proxy/README.po index 573bf5d..c9956c0 100644 --- a/locale/ru/LC_MESSAGES/Structural/Proxy/README.po +++ b/locale/ru/LC_MESSAGES/Structural/Proxy/README.po @@ -53,14 +53,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Structural/Proxy/README.rst:28 -msgid "Record.php" -msgstr "Record.php" - -#: ../../Structural/Proxy/README.rst:34 -msgid "RecordProxy.php" -msgstr "RecordProxy.php" - #: ../../Structural/Proxy/README.rst:41 msgid "Test" msgstr "Тест" diff --git a/locale/ru/LC_MESSAGES/Structural/Registry/README.po b/locale/ru/LC_MESSAGES/Structural/Registry/README.po index e716af4..c9fb222 100644 --- a/locale/ru/LC_MESSAGES/Structural/Registry/README.po +++ b/locale/ru/LC_MESSAGES/Structural/Registry/README.po @@ -61,14 +61,6 @@ msgstr "Код" msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../Structural/Registry/README.rst:31 -msgid "Registry.php" -msgstr "Registry.php" - #: ../../Structural/Registry/README.rst:38 msgid "Test" msgstr "Тест" - -#: ../../Structural/Registry/README.rst:40 -msgid "Tests/RegistryTest.php" -msgstr "Tests/RegistryTest.php" diff --git a/locale/zh_CN/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po b/locale/zh_CN/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po index 19f8d8d..74da4e5 100644 --- a/locale/zh_CN/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po +++ b/locale/zh_CN/LC_MESSAGES/Behavioral/ChainOfResponsibilities/README.po @@ -65,26 +65,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/ChainOfResponsibilities/README.rst:36 -msgid "Request.php" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:42 -msgid "Handler.php" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:48 -msgid "Responsible/SlowStorage.php" -msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:54 -msgid "Responsible/FastStorage.php" -msgstr "" - #: ../../Behavioral/ChainOfResponsibilities/README.rst:61 msgid "Test" msgstr "" - -#: ../../Behavioral/ChainOfResponsibilities/README.rst:63 -msgid "Tests/ChainTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Behavioral/Command/README.po b/locale/zh_CN/LC_MESSAGES/Behavioral/Command/README.po index 158d346..e289808 100644 --- a/locale/zh_CN/LC_MESSAGES/Behavioral/Command/README.po +++ b/locale/zh_CN/LC_MESSAGES/Behavioral/Command/README.po @@ -74,26 +74,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Command/README.rst:43 -msgid "CommandInterface.php" -msgstr "" - -#: ../../Behavioral/Command/README.rst:49 -msgid "HelloCommand.php" -msgstr "" - -#: ../../Behavioral/Command/README.rst:55 -msgid "Receiver.php" -msgstr "" - -#: ../../Behavioral/Command/README.rst:61 -msgid "Invoker.php" -msgstr "" - #: ../../Behavioral/Command/README.rst:68 msgid "Test" msgstr "" - -#: ../../Behavioral/Command/README.rst:70 -msgid "Tests/CommandTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Behavioral/Iterator/README.po b/locale/zh_CN/LC_MESSAGES/Behavioral/Iterator/README.po index 25ccf3a..043f4f3 100644 --- a/locale/zh_CN/LC_MESSAGES/Behavioral/Iterator/README.po +++ b/locale/zh_CN/LC_MESSAGES/Behavioral/Iterator/README.po @@ -56,26 +56,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Iterator/README.rst:36 -msgid "Book.php" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:42 -msgid "BookList.php" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:48 -msgid "BookListIterator.php" -msgstr "" - -#: ../../Behavioral/Iterator/README.rst:54 -msgid "BookListReverseIterator.php" -msgstr "" - #: ../../Behavioral/Iterator/README.rst:61 msgid "Test" msgstr "" - -#: ../../Behavioral/Iterator/README.rst:63 -msgid "Tests/IteratorTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Behavioral/Mediator/README.po b/locale/zh_CN/LC_MESSAGES/Behavioral/Mediator/README.po index e9a44dd..58fdb1e 100644 --- a/locale/zh_CN/LC_MESSAGES/Behavioral/Mediator/README.po +++ b/locale/zh_CN/LC_MESSAGES/Behavioral/Mediator/README.po @@ -45,34 +45,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Mediator/README.rst:27 -msgid "MediatorInterface.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:33 -msgid "Mediator.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:39 -msgid "Colleague.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:45 -msgid "Subsystem/Client.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:51 -msgid "Subsystem/Database.php" -msgstr "" - -#: ../../Behavioral/Mediator/README.rst:57 -msgid "Subsystem/Server.php" -msgstr "" - #: ../../Behavioral/Mediator/README.rst:64 msgid "Test" msgstr "" - -#: ../../Behavioral/Mediator/README.rst:66 -msgid "Tests/MediatorTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Behavioral/Memento/README.po b/locale/zh_CN/LC_MESSAGES/Behavioral/Memento/README.po index 2d4b2e1..361a5f9 100644 --- a/locale/zh_CN/LC_MESSAGES/Behavioral/Memento/README.po +++ b/locale/zh_CN/LC_MESSAGES/Behavioral/Memento/README.po @@ -102,23 +102,7 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Memento/README.rst:57 -msgid "Memento.php" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:63 -msgid "Originator.php" -msgstr "" - -#: ../../Behavioral/Memento/README.rst:69 -msgid "Caretaker.php" -msgstr "" - #: ../../Behavioral/Memento/README.rst:76 msgid "Test" msgstr "" -#: ../../Behavioral/Memento/README.rst:78 -msgid "Tests/MementoTest.php" -msgstr "" - diff --git a/locale/zh_CN/LC_MESSAGES/Behavioral/NullObject/README.po b/locale/zh_CN/LC_MESSAGES/Behavioral/NullObject/README.po index a397fc5..4bdb431 100644 --- a/locale/zh_CN/LC_MESSAGES/Behavioral/NullObject/README.po +++ b/locale/zh_CN/LC_MESSAGES/Behavioral/NullObject/README.po @@ -78,26 +78,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/NullObject/README.rst:41 -msgid "Service.php" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:47 -msgid "LoggerInterface.php" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:53 -msgid "PrintLogger.php" -msgstr "" - -#: ../../Behavioral/NullObject/README.rst:59 -msgid "NullLogger.php" -msgstr "" - #: ../../Behavioral/NullObject/README.rst:66 msgid "Test" msgstr "" - -#: ../../Behavioral/NullObject/README.rst:68 -msgid "Tests/LoggerTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Behavioral/Observer/README.po b/locale/zh_CN/LC_MESSAGES/Behavioral/Observer/README.po index 8a43616..a1b786a 100644 --- a/locale/zh_CN/LC_MESSAGES/Behavioral/Observer/README.po +++ b/locale/zh_CN/LC_MESSAGES/Behavioral/Observer/README.po @@ -58,18 +58,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Observer/README.rst:36 -msgid "User.php" -msgstr "" - -#: ../../Behavioral/Observer/README.rst:42 -msgid "UserObserver.php" -msgstr "" - #: ../../Behavioral/Observer/README.rst:49 msgid "Test" msgstr "" - -#: ../../Behavioral/Observer/README.rst:51 -msgid "Tests/ObserverTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Behavioral/Specification/README.po b/locale/zh_CN/LC_MESSAGES/Behavioral/Specification/README.po index 7b1982b..64e14a8 100644 --- a/locale/zh_CN/LC_MESSAGES/Behavioral/Specification/README.po +++ b/locale/zh_CN/LC_MESSAGES/Behavioral/Specification/README.po @@ -47,38 +47,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Specification/README.rst:29 -msgid "Item.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:35 -msgid "SpecificationInterface.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:41 -msgid "AbstractSpecification.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:47 -msgid "Either.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:53 -msgid "PriceSpecification.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:59 -msgid "Plus.php" -msgstr "" - -#: ../../Behavioral/Specification/README.rst:65 -msgid "Not.php" -msgstr "" - #: ../../Behavioral/Specification/README.rst:72 msgid "Test" msgstr "" - -#: ../../Behavioral/Specification/README.rst:74 -msgid "Tests/SpecificationTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Behavioral/State/README.po b/locale/zh_CN/LC_MESSAGES/Behavioral/State/README.po index 2ced881..8dfd381 100644 --- a/locale/zh_CN/LC_MESSAGES/Behavioral/State/README.po +++ b/locale/zh_CN/LC_MESSAGES/Behavioral/State/README.po @@ -38,26 +38,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/State/README.rst:23 -msgid "OrderController.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:29 -msgid "OrderFactory.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:35 -msgid "OrderInterface.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:41 -msgid "ShippingOrder.php" -msgstr "" - -#: ../../Behavioral/State/README.rst:47 -msgid "CreateOrder.php" -msgstr "" - #: ../../Behavioral/State/README.rst:54 msgid "Test" msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Behavioral/Strategy/README.po b/locale/zh_CN/LC_MESSAGES/Behavioral/Strategy/README.po index c3b9fea..0b60661 100644 --- a/locale/zh_CN/LC_MESSAGES/Behavioral/Strategy/README.po +++ b/locale/zh_CN/LC_MESSAGES/Behavioral/Strategy/README.po @@ -67,26 +67,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Strategy/README.rst:37 -msgid "ObjectCollection.php" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:43 -msgid "ComparatorInterface.php" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:49 -msgid "DateComparator.php" -msgstr "" - -#: ../../Behavioral/Strategy/README.rst:55 -msgid "IdComparator.php" -msgstr "" - #: ../../Behavioral/Strategy/README.rst:62 msgid "Test" msgstr "" - -#: ../../Behavioral/Strategy/README.rst:64 -msgid "Tests/StrategyTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Behavioral/TemplateMethod/README.po b/locale/zh_CN/LC_MESSAGES/Behavioral/TemplateMethod/README.po index 331d234..66e4e9b 100644 --- a/locale/zh_CN/LC_MESSAGES/Behavioral/TemplateMethod/README.po +++ b/locale/zh_CN/LC_MESSAGES/Behavioral/TemplateMethod/README.po @@ -62,22 +62,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/TemplateMethod/README.rst:36 -msgid "Journey.php" -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:42 -msgid "BeachJourney.php" -msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:48 -msgid "CityJourney.php" -msgstr "" - #: ../../Behavioral/TemplateMethod/README.rst:55 msgid "Test" msgstr "" - -#: ../../Behavioral/TemplateMethod/README.rst:57 -msgid "Tests/JourneyTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Behavioral/Visitor/README.po b/locale/zh_CN/LC_MESSAGES/Behavioral/Visitor/README.po index 08784a3..62f65e1 100644 --- a/locale/zh_CN/LC_MESSAGES/Behavioral/Visitor/README.po +++ b/locale/zh_CN/LC_MESSAGES/Behavioral/Visitor/README.po @@ -46,30 +46,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Behavioral/Visitor/README.rst:28 -msgid "RoleVisitorInterface.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:34 -msgid "RolePrintVisitor.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:40 -msgid "Role.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:46 -msgid "User.php" -msgstr "" - -#: ../../Behavioral/Visitor/README.rst:52 -msgid "Group.php" -msgstr "" - #: ../../Behavioral/Visitor/README.rst:59 msgid "Test" msgstr "" - -#: ../../Behavioral/Visitor/README.rst:61 -msgid "Tests/VisitorTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Creational/AbstractFactory/README.po b/locale/zh_CN/LC_MESSAGES/Creational/AbstractFactory/README.po index d05610a..1675674 100644 --- a/locale/zh_CN/LC_MESSAGES/Creational/AbstractFactory/README.po +++ b/locale/zh_CN/LC_MESSAGES/Creational/AbstractFactory/README.po @@ -44,50 +44,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "在 `GitHub`_ 上查看代码" -#: ../../Creational/AbstractFactory/README.rst:24 -msgid "AbstractFactory.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:30 -msgid "JsonFactory.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:36 -msgid "HtmlFactory.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:42 -msgid "MediaInterface.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:48 -msgid "Picture.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:54 -msgid "Text.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:60 -msgid "Json/Picture.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:66 -msgid "Json/Text.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:72 -msgid "Html/Picture.php" -msgstr "" - -#: ../../Creational/AbstractFactory/README.rst:78 -msgid "Html/Text.php" -msgstr "" - #: ../../Creational/AbstractFactory/README.rst:85 msgid "Test" msgstr "测试" - -#: ../../Creational/AbstractFactory/README.rst:87 -msgid "Tests/AbstractFactoryTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Creational/Builder/README.po b/locale/zh_CN/LC_MESSAGES/Creational/Builder/README.po index a86599a..593240b 100644 --- a/locale/zh_CN/LC_MESSAGES/Creational/Builder/README.po +++ b/locale/zh_CN/LC_MESSAGES/Creational/Builder/README.po @@ -66,50 +66,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Creational/Builder/README.rst:35 -msgid "Director.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:41 -msgid "BuilderInterface.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:47 -msgid "BikeBuilder.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:53 -msgid "CarBuilder.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:59 -msgid "Parts/Vehicle.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:65 -msgid "Parts/Bike.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:71 -msgid "Parts/Car.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:77 -msgid "Parts/Engine.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:83 -msgid "Parts/Wheel.php" -msgstr "" - -#: ../../Creational/Builder/README.rst:89 -msgid "Parts/Door.php" -msgstr "" - #: ../../Creational/Builder/README.rst:96 msgid "Test" msgstr "测试" - -#: ../../Creational/Builder/README.rst:98 -msgid "Tests/DirectorTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Creational/FactoryMethod/README.po b/locale/zh_CN/LC_MESSAGES/Creational/FactoryMethod/README.po index 5984bf2..9612881 100644 --- a/locale/zh_CN/LC_MESSAGES/Creational/FactoryMethod/README.po +++ b/locale/zh_CN/LC_MESSAGES/Creational/FactoryMethod/README.po @@ -57,38 +57,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Creational/FactoryMethod/README.rst:31 -msgid "FactoryMethod.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:37 -msgid "ItalianFactory.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:43 -msgid "GermanFactory.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:49 -msgid "VehicleInterface.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:55 -msgid "Porsche.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:61 -msgid "Bicycle.php" -msgstr "" - -#: ../../Creational/FactoryMethod/README.rst:67 -msgid "Ferrari.php" -msgstr "" - #: ../../Creational/FactoryMethod/README.rst:74 msgid "Test" msgstr "测试" - -#: ../../Creational/FactoryMethod/README.rst:76 -msgid "Tests/FactoryMethodTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Creational/Multiton/README.po b/locale/zh_CN/LC_MESSAGES/Creational/Multiton/README.po index 62cec8c..724421d 100644 --- a/locale/zh_CN/LC_MESSAGES/Creational/Multiton/README.po +++ b/locale/zh_CN/LC_MESSAGES/Creational/Multiton/README.po @@ -55,10 +55,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Creational/Multiton/README.rst:31 -msgid "Multiton.php" -msgstr "" - #: ../../Creational/Multiton/README.rst:38 msgid "Test" msgstr "测试" diff --git a/locale/zh_CN/LC_MESSAGES/Creational/Pool/README.po b/locale/zh_CN/LC_MESSAGES/Creational/Pool/README.po index 6e80455..4ed59c4 100644 --- a/locale/zh_CN/LC_MESSAGES/Creational/Pool/README.po +++ b/locale/zh_CN/LC_MESSAGES/Creational/Pool/README.po @@ -66,26 +66,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Creational/Pool/README.rst:36 -msgid "Pool.php" -msgstr "" - -#: ../../Creational/Pool/README.rst:42 -msgid "Processor.php" -msgstr "" - -#: ../../Creational/Pool/README.rst:48 -msgid "Worker.php" -msgstr "" - #: ../../Creational/Pool/README.rst:55 msgid "Test" msgstr "测试" - -#: ../../Creational/Pool/README.rst:57 -msgid "Tests/PoolTest.php" -msgstr "" - -#: ../../Creational/Pool/README.rst:63 -msgid "Tests/TestWorker.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Creational/Prototype/README.po b/locale/zh_CN/LC_MESSAGES/Creational/Prototype/README.po index 851a9a6..3048109 100644 --- a/locale/zh_CN/LC_MESSAGES/Creational/Prototype/README.po +++ b/locale/zh_CN/LC_MESSAGES/Creational/Prototype/README.po @@ -49,22 +49,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Creational/Prototype/README.rst:28 -msgid "index.php" -msgstr "" - -#: ../../Creational/Prototype/README.rst:34 -msgid "BookPrototype.php" -msgstr "" - -#: ../../Creational/Prototype/README.rst:40 -msgid "BarBookPrototype.php" -msgstr "" - -#: ../../Creational/Prototype/README.rst:46 -msgid "FooBookPrototype.php" -msgstr "" - #: ../../Creational/Prototype/README.rst:53 msgid "Test" msgstr "测试" diff --git a/locale/zh_CN/LC_MESSAGES/Creational/SimpleFactory/README.po b/locale/zh_CN/LC_MESSAGES/Creational/SimpleFactory/README.po index fe7222d..2a11dfe 100644 --- a/locale/zh_CN/LC_MESSAGES/Creational/SimpleFactory/README.po +++ b/locale/zh_CN/LC_MESSAGES/Creational/SimpleFactory/README.po @@ -51,26 +51,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Creational/SimpleFactory/README.rst:27 -msgid "SimpleFactory.php" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:33 -msgid "VehicleInterface.php" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:39 -msgid "Bicycle.php" -msgstr "" - -#: ../../Creational/SimpleFactory/README.rst:45 -msgid "Scooter.php" -msgstr "" - #: ../../Creational/SimpleFactory/README.rst:52 msgid "Test" msgstr "测试" - -#: ../../Creational/SimpleFactory/README.rst:54 -msgid "Tests/SimpleFactoryTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Creational/Singleton/README.po b/locale/zh_CN/LC_MESSAGES/Creational/Singleton/README.po index ab2832f..33d3042 100644 --- a/locale/zh_CN/LC_MESSAGES/Creational/Singleton/README.po +++ b/locale/zh_CN/LC_MESSAGES/Creational/Singleton/README.po @@ -63,14 +63,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Creational/Singleton/README.rst:34 -msgid "Singleton.php" -msgstr "" - #: ../../Creational/Singleton/README.rst:41 msgid "Test" msgstr "测试" - -#: ../../Creational/Singleton/README.rst:43 -msgid "Tests/SingletonTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Creational/StaticFactory/README.po b/locale/zh_CN/LC_MESSAGES/Creational/StaticFactory/README.po index 4e3c664..95ddd28 100644 --- a/locale/zh_CN/LC_MESSAGES/Creational/StaticFactory/README.po +++ b/locale/zh_CN/LC_MESSAGES/Creational/StaticFactory/README.po @@ -54,26 +54,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Creational/StaticFactory/README.rst:31 -msgid "StaticFactory.php" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:37 -msgid "FormatterInterface.php" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:43 -msgid "FormatString.php" -msgstr "" - -#: ../../Creational/StaticFactory/README.rst:49 -msgid "FormatNumber.php" -msgstr "" - #: ../../Creational/StaticFactory/README.rst:56 msgid "Test" msgstr "测试" - -#: ../../Creational/StaticFactory/README.rst:58 -msgid "Tests/StaticFactoryTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/More/Delegation/README.po b/locale/zh_CN/LC_MESSAGES/More/Delegation/README.po index 907d828..4332b4f 100644 --- a/locale/zh_CN/LC_MESSAGES/More/Delegation/README.po +++ b/locale/zh_CN/LC_MESSAGES/More/Delegation/README.po @@ -58,23 +58,7 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../More/Delegation/README.rst:26 -msgid "Usage.php" -msgstr "" - -#: ../../More/Delegation/README.rst:32 -msgid "TeamLead.php" -msgstr "" - -#: ../../More/Delegation/README.rst:38 -msgid "JuniorDeveloper.php" -msgstr "" - #: ../../More/Delegation/README.rst:45 msgid "Test" msgstr "" -#: ../../More/Delegation/README.rst:47 -msgid "Tests/DelegationTest.php" -msgstr "" - diff --git a/locale/zh_CN/LC_MESSAGES/More/EAV/README.po b/locale/zh_CN/LC_MESSAGES/More/EAV/README.po index d0113c0..8e72b00 100644 --- a/locale/zh_CN/LC_MESSAGES/More/EAV/README.po +++ b/locale/zh_CN/LC_MESSAGES/More/EAV/README.po @@ -64,15 +64,3 @@ msgstr "" msgid "Test" msgstr "" -#: ../../More/EAV/README.rst:104 -msgid "Tests/EntityTest.php" -msgstr "" - -#: ../../More/EAV/README.rst:110 -msgid "Tests/AttributeTest.php" -msgstr "" - -#: ../../More/EAV/README.rst:116 -msgid "Tests/ValueTest.php" -msgstr "" - diff --git a/locale/zh_CN/LC_MESSAGES/More/Repository/README.po b/locale/zh_CN/LC_MESSAGES/More/Repository/README.po index 319ace4..b6e39ab 100644 --- a/locale/zh_CN/LC_MESSAGES/More/Repository/README.po +++ b/locale/zh_CN/LC_MESSAGES/More/Repository/README.po @@ -55,22 +55,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../More/Repository/README.rst:34 -msgid "Post.php" -msgstr "" - -#: ../../More/Repository/README.rst:40 -msgid "PostRepository.php" -msgstr "" - -#: ../../More/Repository/README.rst:46 -msgid "Persistence.php" -msgstr "" - -#: ../../More/Repository/README.rst:52 -msgid "InMemoryPersistence.php" -msgstr "" - #: ../../More/Repository/README.rst:59 msgid "Test" msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/More/ServiceLocator/README.po b/locale/zh_CN/LC_MESSAGES/More/ServiceLocator/README.po index 8efac15..a41751d 100644 --- a/locale/zh_CN/LC_MESSAGES/More/ServiceLocator/README.po +++ b/locale/zh_CN/LC_MESSAGES/More/ServiceLocator/README.po @@ -61,34 +61,6 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../More/ServiceLocator/README.rst:38 -msgid "ServiceLocatorInterface.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:44 -msgid "ServiceLocator.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:50 -msgid "LogServiceInterface.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:56 -msgid "LogService.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:62 -msgid "DatabaseServiceInterface.php" -msgstr "" - -#: ../../More/ServiceLocator/README.rst:68 -msgid "DatabaseService.php" -msgstr "" - #: ../../More/ServiceLocator/README.rst:75 msgid "Test" msgstr "" - -#: ../../More/ServiceLocator/README.rst:77 -msgid "Tests/ServiceLocatorTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Structural/Adapter/README.po b/locale/zh_CN/LC_MESSAGES/Structural/Adapter/README.po index 1f3bf23..dd6f51e 100644 --- a/locale/zh_CN/LC_MESSAGES/Structural/Adapter/README.po +++ b/locale/zh_CN/LC_MESSAGES/Structural/Adapter/README.po @@ -57,30 +57,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Structural/Adapter/README.rst:31 -msgid "PaperBookInterface.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:37 -msgid "Book.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:43 -msgid "EBookAdapter.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:49 -msgid "EBookInterface.php" -msgstr "" - -#: ../../Structural/Adapter/README.rst:55 -msgid "Kindle.php" -msgstr "" - #: ../../Structural/Adapter/README.rst:62 msgid "Test" msgstr "测试" - -#: ../../Structural/Adapter/README.rst:64 -msgid "Tests/AdapterTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Structural/Bridge/README.po b/locale/zh_CN/LC_MESSAGES/Structural/Bridge/README.po index c7b4ff4..bea1335 100644 --- a/locale/zh_CN/LC_MESSAGES/Structural/Bridge/README.po +++ b/locale/zh_CN/LC_MESSAGES/Structural/Bridge/README.po @@ -46,34 +46,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Structural/Bridge/README.rst:28 -msgid "Workshop.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:34 -msgid "Assemble.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:40 -msgid "Produce.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:46 -msgid "Vehicle.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:52 -msgid "Motorcycle.php" -msgstr "" - -#: ../../Structural/Bridge/README.rst:58 -msgid "Car.php" -msgstr "" - #: ../../Structural/Bridge/README.rst:65 msgid "Test" msgstr "测试" - -#: ../../Structural/Bridge/README.rst:67 -msgid "Tests/BridgeTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Structural/Composite/README.po b/locale/zh_CN/LC_MESSAGES/Structural/Composite/README.po index 836f23c..cbc2626 100644 --- a/locale/zh_CN/LC_MESSAGES/Structural/Composite/README.po +++ b/locale/zh_CN/LC_MESSAGES/Structural/Composite/README.po @@ -57,26 +57,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Structural/Composite/README.rst:31 -msgid "FormElement.php" -msgstr "" - -#: ../../Structural/Composite/README.rst:37 -msgid "Form.php" -msgstr "" - -#: ../../Structural/Composite/README.rst:43 -msgid "InputElement.php" -msgstr "" - -#: ../../Structural/Composite/README.rst:49 -msgid "TextElement.php" -msgstr "" - #: ../../Structural/Composite/README.rst:56 msgid "Test" msgstr "测试" - -#: ../../Structural/Composite/README.rst:58 -msgid "Tests/CompositeTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Structural/DataMapper/README.po b/locale/zh_CN/LC_MESSAGES/Structural/DataMapper/README.po index 3f564a8..c86b763 100644 --- a/locale/zh_CN/LC_MESSAGES/Structural/DataMapper/README.po +++ b/locale/zh_CN/LC_MESSAGES/Structural/DataMapper/README.po @@ -68,18 +68,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Structural/DataMapper/README.rst:38 -msgid "User.php" -msgstr "" - -#: ../../Structural/DataMapper/README.rst:44 -msgid "UserMapper.php" -msgstr "" - #: ../../Structural/DataMapper/README.rst:51 msgid "Test" msgstr "测试" - -#: ../../Structural/DataMapper/README.rst:53 -msgid "Tests/DataMapperTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Structural/Decorator/README.po b/locale/zh_CN/LC_MESSAGES/Structural/Decorator/README.po index a55d5d5..c0ede92 100644 --- a/locale/zh_CN/LC_MESSAGES/Structural/Decorator/README.po +++ b/locale/zh_CN/LC_MESSAGES/Structural/Decorator/README.po @@ -50,30 +50,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Structural/Decorator/README.rst:28 -msgid "RendererInterface.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:34 -msgid "Webservice.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:40 -msgid "Decorator.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:46 -msgid "RenderInXml.php" -msgstr "" - -#: ../../Structural/Decorator/README.rst:52 -msgid "RenderInJson.php" -msgstr "" - #: ../../Structural/Decorator/README.rst:59 msgid "Test" msgstr "测试" - -#: ../../Structural/Decorator/README.rst:61 -msgid "Tests/DecoratorTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Structural/DependencyInjection/README.po b/locale/zh_CN/LC_MESSAGES/Structural/DependencyInjection/README.po index c015732..b5093c5 100644 --- a/locale/zh_CN/LC_MESSAGES/Structural/DependencyInjection/README.po +++ b/locale/zh_CN/LC_MESSAGES/Structural/DependencyInjection/README.po @@ -88,30 +88,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Structural/DependencyInjection/README.rst:48 -msgid "AbstractConfig.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:54 -msgid "Parameters.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:60 -msgid "ArrayConfig.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:66 -msgid "Connection.php" -msgstr "" - #: ../../Structural/DependencyInjection/README.rst:73 msgid "Test" msgstr "测试" - -#: ../../Structural/DependencyInjection/README.rst:75 -msgid "Tests/DependencyInjectionTest.php" -msgstr "" - -#: ../../Structural/DependencyInjection/README.rst:81 -msgid "Tests/config.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Structural/Facade/README.po b/locale/zh_CN/LC_MESSAGES/Structural/Facade/README.po index 46cb2a3..848260b 100644 --- a/locale/zh_CN/LC_MESSAGES/Structural/Facade/README.po +++ b/locale/zh_CN/LC_MESSAGES/Structural/Facade/README.po @@ -73,22 +73,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Structural/Facade/README.rst:38 -msgid "Facade.php" -msgstr "" - -#: ../../Structural/Facade/README.rst:44 -msgid "OsInterface.php" -msgstr "" - -#: ../../Structural/Facade/README.rst:50 -msgid "BiosInterface.php" -msgstr "" - #: ../../Structural/Facade/README.rst:57 msgid "Test" msgstr "测试" - -#: ../../Structural/Facade/README.rst:59 -msgid "Tests/FacadeTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Structural/FluentInterface/README.po b/locale/zh_CN/LC_MESSAGES/Structural/FluentInterface/README.po index d5b7cfa..a7ad352 100644 --- a/locale/zh_CN/LC_MESSAGES/Structural/FluentInterface/README.po +++ b/locale/zh_CN/LC_MESSAGES/Structural/FluentInterface/README.po @@ -54,14 +54,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Structural/FluentInterface/README.rst:30 -msgid "Sql.php" -msgstr "" - #: ../../Structural/FluentInterface/README.rst:37 msgid "Test" msgstr "测试" - -#: ../../Structural/FluentInterface/README.rst:39 -msgid "Tests/FluentInterfaceTest.php" -msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/Structural/Flyweight/README.po b/locale/zh_CN/LC_MESSAGES/Structural/Flyweight/README.po index cfa8492..2514886 100644 --- a/locale/zh_CN/LC_MESSAGES/Structural/Flyweight/README.po +++ b/locale/zh_CN/LC_MESSAGES/Structural/Flyweight/README.po @@ -47,23 +47,7 @@ msgstr "" msgid "You can also find this code on `GitHub`_" msgstr "" -#: ../../Structural/Flyweight/README.rst:23 -msgid "FlyweightInterface.php" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:29 -msgid "CharacterFlyweight.php" -msgstr "" - -#: ../../Structural/Flyweight/README.rst:35 -msgid "FlyweightFactory.php" -msgstr "" - #: ../../Structural/Flyweight/README.rst:42 msgid "Test" msgstr "" -#: ../../Structural/Flyweight/README.rst:44 -msgid "Tests/FlyweightTest.php" -msgstr "" - diff --git a/locale/zh_CN/LC_MESSAGES/Structural/Proxy/README.po b/locale/zh_CN/LC_MESSAGES/Structural/Proxy/README.po index b20b852..f8003e7 100644 --- a/locale/zh_CN/LC_MESSAGES/Structural/Proxy/README.po +++ b/locale/zh_CN/LC_MESSAGES/Structural/Proxy/README.po @@ -48,14 +48,6 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Structural/Proxy/README.rst:28 -msgid "Record.php" -msgstr "" - -#: ../../Structural/Proxy/README.rst:34 -msgid "RecordProxy.php" -msgstr "" - #: ../../Structural/Proxy/README.rst:41 msgid "Test" msgstr "测试" diff --git a/locale/zh_CN/LC_MESSAGES/Structural/Registry/README.po b/locale/zh_CN/LC_MESSAGES/Structural/Registry/README.po index 243c463..c896313 100644 --- a/locale/zh_CN/LC_MESSAGES/Structural/Registry/README.po +++ b/locale/zh_CN/LC_MESSAGES/Structural/Registry/README.po @@ -52,18 +52,10 @@ msgstr "代码" msgid "You can also find this code on `GitHub`_" msgstr "你可以在 `GitHub`_ 上找到这些代码" -#: ../../Structural/Registry/README.rst:31 -msgid "Registry.php" -msgstr "" - #: ../../Structural/Registry/README.rst:38 msgid "Test" msgstr "测试" -#: ../../Structural/Registry/README.rst:40 -msgid "Tests/RegistryTest.php" -msgstr "" - #: ../../Structural/Registry/README.rst:14 msgid "" "Zend Framework 1: ``Zend_Registry`` holds the application's logger " From a494c0725582475b09139704dd6bafd6cc384aba Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Thu, 14 Jun 2018 21:14:53 +0200 Subject: [PATCH 16/45] removed delegation as it is not a pattern but merely a concept in OOP --- More/Delegation/JuniorDeveloper.php | 19 -- More/Delegation/README.rst | 52 ----- More/Delegation/TeamLead.php | 38 ---- More/Delegation/Tests/DelegationTest.php | 25 --- More/Delegation/uml/Delegation.uml | 21 -- More/Delegation/uml/uml.png | Bin 5924 -> 0 bytes More/Delegation/uml/uml.svg | 196 ------------------ More/README.md | 1 - More/README.rst | 1 - README.md | 2 +- .../ca/LC_MESSAGES/More/Delegation/README.po | 64 ------ .../de/LC_MESSAGES/More/Delegation/README.po | 64 ------ .../es/LC_MESSAGES/More/Delegation/README.po | 64 ------ .../LC_MESSAGES/More/Delegation/README.po | 72 ------- .../pl/LC_MESSAGES/More/Delegation/README.po | 72 ------- .../LC_MESSAGES/More/Delegation/README.po | 69 ------ .../ru/LC_MESSAGES/More/Delegation/README.po | 72 ------- .../tr/LC_MESSAGES/More/Delegation/README.po | 63 ------ .../LC_MESSAGES/More/Delegation/README.po | 64 ------ 19 files changed, 1 insertion(+), 958 deletions(-) delete mode 100644 More/Delegation/JuniorDeveloper.php delete mode 100644 More/Delegation/README.rst delete mode 100644 More/Delegation/TeamLead.php delete mode 100644 More/Delegation/Tests/DelegationTest.php delete mode 100644 More/Delegation/uml/Delegation.uml delete mode 100644 More/Delegation/uml/uml.png delete mode 100644 More/Delegation/uml/uml.svg delete mode 100644 locale/ca/LC_MESSAGES/More/Delegation/README.po delete mode 100644 locale/de/LC_MESSAGES/More/Delegation/README.po delete mode 100644 locale/es/LC_MESSAGES/More/Delegation/README.po delete mode 100644 locale/es_MX/LC_MESSAGES/More/Delegation/README.po delete mode 100644 locale/pl/LC_MESSAGES/More/Delegation/README.po delete mode 100644 locale/pt_BR/LC_MESSAGES/More/Delegation/README.po delete mode 100644 locale/ru/LC_MESSAGES/More/Delegation/README.po delete mode 100644 locale/tr/LC_MESSAGES/More/Delegation/README.po delete mode 100644 locale/zh_CN/LC_MESSAGES/More/Delegation/README.po diff --git a/More/Delegation/JuniorDeveloper.php b/More/Delegation/JuniorDeveloper.php deleted file mode 100644 index c8da3ee..0000000 --- a/More/Delegation/JuniorDeveloper.php +++ /dev/null @@ -1,19 +0,0 @@ -writeReallyBadCode(); - } -} diff --git a/More/Delegation/README.rst b/More/Delegation/README.rst deleted file mode 100644 index 65cfa72..0000000 --- a/More/Delegation/README.rst +++ /dev/null @@ -1,52 +0,0 @@ -`Delegation`__ -============== - -Purpose -------- - -Demonstrate the Delegator pattern, where an object, instead of performing one -of its stated tasks, delegates that task to an associated helper object. In -this case TeamLead professes to writeCode and Usage uses this, while TeamLead -delegates writeCode to JuniorDeveloper's writeBadCode function. This inverts -the responsibility so that Usage is unknowingly executing writeBadCode. - -Examples --------- - -Please review JuniorDeveloper.php, TeamLead.php, and then Usage.php to see it all tied together. - -UML Diagram ------------ - -.. image:: uml/uml.png - :alt: Alt Delegation UML Diagram - :align: center - -Code ----- - -You can also find this code on `GitHub`_ - -TeamLead.php - -.. literalinclude:: TeamLead.php - :language: php - :linenos: - -JuniorDeveloper.php - -.. literalinclude:: JuniorDeveloper.php - :language: php - :linenos: - -Test ----- - -Tests/DelegationTest.php - -.. literalinclude:: Tests/DelegationTest.php - :language: php - :linenos: - -.. _`GitHub`: https://github.com/domnikl/DesignPatternsPHP/tree/master/More/Delegation -.. __: http://en.wikipedia.org/wiki/Delegation_pattern diff --git a/More/Delegation/TeamLead.php b/More/Delegation/TeamLead.php deleted file mode 100644 index 8a515e6..0000000 --- a/More/Delegation/TeamLead.php +++ /dev/null @@ -1,38 +0,0 @@ -junior = $junior; - } - - public function writeCode(): string - { - return $this->junior->writeBadCode(); - } - - public function writeBadCode(): string - { - //note that we are passing $this from teamLead context - return $this->junior->writeReallyBadCode($this); - } - - /** - * Junior can call this method - */ - public function writeReallyBadCode(): string - { - return 'Even team lead can write bad code...'; - } -} diff --git a/More/Delegation/Tests/DelegationTest.php b/More/Delegation/Tests/DelegationTest.php deleted file mode 100644 index 0dd8083..0000000 --- a/More/Delegation/Tests/DelegationTest.php +++ /dev/null @@ -1,25 +0,0 @@ -assertEquals($junior->writeBadCode(), $teamLead->writeCode()); - } - - public function testTeamLeadCanWriteBadCode() - { - $junior = new Delegation\JuniorDeveloper(); - $teamLead = new Delegation\TeamLead($junior); - - $this->assertEquals($junior->writeReallyBadCode($teamLead), $teamLead->writeBadCode()); - } -} diff --git a/More/Delegation/uml/Delegation.uml b/More/Delegation/uml/Delegation.uml deleted file mode 100644 index ffb8e68..0000000 --- a/More/Delegation/uml/Delegation.uml +++ /dev/null @@ -1,21 +0,0 @@ - - - PHP - \DesignPatterns\More\Delegation\JuniorDeveloper - - \DesignPatterns\More\Delegation\JuniorDeveloper - \DesignPatterns\More\Delegation\TeamLead - - - - - - - Fields - Constants - Constructors - Methods - - private - - diff --git a/More/Delegation/uml/uml.png b/More/Delegation/uml/uml.png deleted file mode 100644 index f673da2f47cfa3b71c36b999a529cdc47c25e29a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5924 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 F{{S - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - writeBadCode() - - - - - - - - - - - - - JuniorDeveloper - - - JuniorDeveloper - - - - - - - - - - - - - - - - - - - slave - - - - - - - - - - - - - __construct(junior) - - - - - - - - - - - - - writeCode() - - - - - - - - - - - - - TeamLead - - - TeamLead - - - diff --git a/More/README.md b/More/README.md index cba33e7..be4341b 100644 --- a/More/README.md +++ b/More/README.md @@ -1,6 +1,5 @@ # More -* [Delegation](Delegation) [:notebook:](http://en.wikipedia.org/wiki/Delegation_pattern) * [ServiceLocator](ServiceLocator) [:notebook:](http://en.wikipedia.org/wiki/Service_locator_pattern) * [Repository](Repository) * [EAV](EAV) [:notebook:](https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model) diff --git a/More/README.rst b/More/README.rst index a2de938..c224c02 100644 --- a/More/README.rst +++ b/More/README.rst @@ -4,7 +4,6 @@ More .. toctree:: :titlesonly: - Delegation/README ServiceLocator/README Repository/README EAV/README diff --git a/README.md b/README.md index 872e9de..6fd823c 100755 --- a/README.md +++ b/README.md @@ -88,7 +88,7 @@ The patterns can be structured in roughly three different categories. Please cli * [Visitor](Behavioral/Visitor) [:notebook:](http://en.wikipedia.org/wiki/Visitor_pattern) ### [More](More) -* [Delegation](More/Delegation) [:notebook:](http://en.wikipedia.org/wiki/Delegation_pattern) + * [ServiceLocator](More/ServiceLocator) [:notebook:](http://en.wikipedia.org/wiki/Service_locator_pattern) (is considered an anti-pattern! :no_entry:) * [Repository](More/Repository) * [EAV](More/EAV) [:notebook:](https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model) diff --git a/locale/ca/LC_MESSAGES/More/Delegation/README.po b/locale/ca/LC_MESSAGES/More/Delegation/README.po deleted file mode 100644 index 4332b4f..0000000 --- a/locale/ca/LC_MESSAGES/More/Delegation/README.po +++ /dev/null @@ -1,64 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2015, Dominik Liebler and contributors -# This file is distributed under the same license as the DesignPatternsPHP -# package. -# FIRST AUTHOR , 2016. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP 1.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-03 23:59+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" - -#: ../../More/Delegation/README.rst:2 -msgid "`Delegation`__" -msgstr "" - -#: ../../More/Delegation/README.rst:5 -msgid "Purpose" -msgstr "" - -#: ../../More/Delegation/README.rst:7 -msgid "" -"Demonstrate the Delegator pattern, where an object, instead of performing" -" one of its stated tasks, delegates that task to an associated helper " -"object. In this case TeamLead professes to writeCode and Usage uses this," -" while TeamLead delegates writeCode to JuniorDeveloper's writeBadCode " -"function. This inverts the responsibility so that Usage is unknowingly " -"executing writeBadCode." -msgstr "" - -#: ../../More/Delegation/README.rst:10 -msgid "Examples" -msgstr "" - -#: ../../More/Delegation/README.rst:12 -msgid "" -"Please review JuniorDeveloper.php, TeamLead.php, and then Usage.php to " -"see it all tied together." -msgstr "" - -#: ../../More/Delegation/README.rst:15 -msgid "UML Diagram" -msgstr "" - -#: ../../More/Delegation/README.rst:22 -msgid "Code" -msgstr "" - -#: ../../More/Delegation/README.rst:24 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../More/Delegation/README.rst:45 -msgid "Test" -msgstr "" - diff --git a/locale/de/LC_MESSAGES/More/Delegation/README.po b/locale/de/LC_MESSAGES/More/Delegation/README.po deleted file mode 100644 index 4332b4f..0000000 --- a/locale/de/LC_MESSAGES/More/Delegation/README.po +++ /dev/null @@ -1,64 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2015, Dominik Liebler and contributors -# This file is distributed under the same license as the DesignPatternsPHP -# package. -# FIRST AUTHOR , 2016. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP 1.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-03 23:59+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" - -#: ../../More/Delegation/README.rst:2 -msgid "`Delegation`__" -msgstr "" - -#: ../../More/Delegation/README.rst:5 -msgid "Purpose" -msgstr "" - -#: ../../More/Delegation/README.rst:7 -msgid "" -"Demonstrate the Delegator pattern, where an object, instead of performing" -" one of its stated tasks, delegates that task to an associated helper " -"object. In this case TeamLead professes to writeCode and Usage uses this," -" while TeamLead delegates writeCode to JuniorDeveloper's writeBadCode " -"function. This inverts the responsibility so that Usage is unknowingly " -"executing writeBadCode." -msgstr "" - -#: ../../More/Delegation/README.rst:10 -msgid "Examples" -msgstr "" - -#: ../../More/Delegation/README.rst:12 -msgid "" -"Please review JuniorDeveloper.php, TeamLead.php, and then Usage.php to " -"see it all tied together." -msgstr "" - -#: ../../More/Delegation/README.rst:15 -msgid "UML Diagram" -msgstr "" - -#: ../../More/Delegation/README.rst:22 -msgid "Code" -msgstr "" - -#: ../../More/Delegation/README.rst:24 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../More/Delegation/README.rst:45 -msgid "Test" -msgstr "" - diff --git a/locale/es/LC_MESSAGES/More/Delegation/README.po b/locale/es/LC_MESSAGES/More/Delegation/README.po deleted file mode 100644 index b725b28..0000000 --- a/locale/es/LC_MESSAGES/More/Delegation/README.po +++ /dev/null @@ -1,64 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2015, Dominik Liebler and contributors -# This file is distributed under the same license as the DesignPatternsPHP -# package. -# FIRST AUTHOR , 2016. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP 1.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-03 23:59+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" - -#: ../../More/Delegation/README.rst:2 -msgid "`Delegation`__" -msgstr "" - -#: ../../More/Delegation/README.rst:5 -msgid "Purpose" -msgstr "" - -#: ../../More/Delegation/README.rst:7 -msgid "" -"Demonstrate the Delegator pattern, where an object, instead of performing" -" one of its stated tasks, delegates that task to an associated helper " -"object. In this case TeamLead professes to writeCode and Usage uses this," -" while TeamLead delegates writeCode to JuniorDeveloper's writeBadCode " -"function. This inverts the responsibility so that Usage is unknowingly " -"executing writeBadCode." -msgstr "" - -#: ../../More/Delegation/README.rst:10 -msgid "Examples" -msgstr "" - -#: ../../More/Delegation/README.rst:12 -msgid "" -"Please review JuniorDeveloper.php, TeamLead.php, and then Usage.php to " -"see it all tied together." -msgstr "" - -#: ../../More/Delegation/README.rst:15 -msgid "UML Diagram" -msgstr "" - -#: ../../More/Delegation/README.rst:22 -msgid "Code" -msgstr "" - -#: ../../More/Delegation/README.rst:24 -msgid "You can also find this code on `GitHub`_" -msgstr "Puedes encontrar el código en `GitHub`_" - -#: ../../More/Delegation/README.rst:45 -msgid "Test" -msgstr "" - diff --git a/locale/es_MX/LC_MESSAGES/More/Delegation/README.po b/locale/es_MX/LC_MESSAGES/More/Delegation/README.po deleted file mode 100644 index 0485555..0000000 --- a/locale/es_MX/LC_MESSAGES/More/Delegation/README.po +++ /dev/null @@ -1,72 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP " -"d4972f03fc93de3ef10bb31220de49931487d5e0\n" -"POT-Creation-Date: 2016-09-23 12:56-0500\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"X-Generator: Poedit 1.8.9\n" -"Last-Translator: Axel Pardemann \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Language: es_MX\n" - -#: ../../More/Delegation/README.rst:1 -msgid "Delegation" -msgstr "Delegación" - -#: ../../More/Delegation/README.rst:4 -msgid "Purpose" -msgstr "Propósito" - -#: ../../More/Delegation/README.rst:7 -msgid "" -"Demonstrate the Delegator pattern, where an object, instead of performing " -"one of its stated tasks, delegates that task to an associated helper object. " -"In this case TeamLead professes to writeCode and Usage uses this, while " -"TeamLead delegates writeCode to JuniorDeveloper's writeBadCode function. " -"This inverts the responsibility so that Usage is unknowingly executing " -"writeBadCode." -msgstr "" -"Demostrar el patrón Delegador, en el cual un objeto, en vez de desempeñar " -"una de sus tareas asignadas, delega esta tarea a un objeto de ayuda " -"asociado. En este caso *TeamLead* (líder de equipo) establece *writeCode* " -"(escribe código) y *Usage* (uso) utiliza esta función, mientras que " -"*TeamLead* delega *writeCode* a JuniorDeveloper (desarrolaldor junior) a " -"través de la funcióin *writeBadCode* (escribe mal código). Esto invierte la " -"responsabilidad de tal manera que *Usage* está ejecutando *writeBadCode* sin " -"saberlo." - -#: ../../More/Delegation/README.rst:13 -msgid "Examples" -msgstr "Ejemplos" - -#: ../../More/Delegation/README.rst:16 -msgid "" -"Please review JuniorDeveloper.php, TeamLead.php, and then Usage.php to see " -"it all tied together." -msgstr "" -"Por favor revisa JuniorDeveloper.php, TeamLead.php y luego Usage.php para " -"ver como se integran en conjunto." - -#: ../../More/Delegation/README.rst:18 -msgid "UML Diagram" -msgstr "Diagrama UML" - -#: ../../More/Delegation/README.rst:22 -msgid "Alt Delegation UML Diagram" -msgstr "Alt Diagrama UML Delegacion" - -#: ../../More/Delegation/README.rst:25 -msgid "Code" -msgstr "Código" - -#: ../../More/Delegation/README.rst:28 -msgid "You can also find this code on `GitHub`_" -msgstr "Puedes encontrar este código también en `GitHub`_" - -#: ../../More/Delegation/README.rst:42 -msgid "Test" -msgstr "Pruebas" diff --git a/locale/pl/LC_MESSAGES/More/Delegation/README.po b/locale/pl/LC_MESSAGES/More/Delegation/README.po deleted file mode 100644 index 0686f5f..0000000 --- a/locale/pl/LC_MESSAGES/More/Delegation/README.po +++ /dev/null @@ -1,72 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2015, Dominik Liebler and contributors -# This file is distributed under the same license as the DesignPatternsPHP -# package. -# FIRST AUTHOR , 2016. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP 1.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-03 23:59+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Nikita Strelkov \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" - -#: ../../More/Delegation/README.rst:2 -msgid "`Delegation`__" -msgstr "Delegacja (`Delegation`__)" - -#: ../../More/Delegation/README.rst:5 -msgid "Purpose" -msgstr "Przeznaczenie" - -#: ../../More/Delegation/README.rst:7 -msgid "" -"Demonstrate the Delegator pattern, where an object, instead of performing" -" one of its stated tasks, delegates that task to an associated helper " -"object. In this case TeamLead professes to writeCode and Usage uses this," -" while TeamLead delegates writeCode to JuniorDeveloper's writeBadCode " -"function. This inverts the responsibility so that Usage is unknowingly " -"executing writeBadCode." -msgstr "" -"Ideą wzorca projektowego Delegacji jest przekazanie zadania, które obiekt delegujący " -"powinien wykonać (ze względu na zdefiniowaną w nim metodę) do innego, powiązanego " -"obiektu, który to zadanie wykonuje. W tym przykładzie klasa ``TeamLead`` posiada metodę " -"``writeCode()``, która jest wykorzystywana w klasie ``DelegationTest``. Jednak realizacja tej metody " -"tak na prawdę odbywa się poprzez metodę ``writeBadCode()`` w klasie ``JuniorDeveloper`` - obiekt klasy " -"``TeamLead`` wykonanie tej metody deleguje na obiekt klasy ``JuniorDeveloper``. W ten sposób test nieświadomie " -"uruchamia metodę ``writeBadCode()``." - -#: ../../More/Delegation/README.rst:10 -msgid "Examples" -msgstr "Przykłady" - -#: ../../More/Delegation/README.rst:12 -msgid "" -"Please review JuniorDeveloper.php, TeamLead.php, and then Usage.php to " -"see it all tied together." -msgstr "" -"Sprawdź zawartość klasy ``JuniorDeveloper``, ``TeamLead`` oraz ``DelegationTest``, " -"aby zapoznać się z ideą działania tego wzorca." - -#: ../../More/Delegation/README.rst:15 -msgid "UML Diagram" -msgstr "Diagram UML" - -#: ../../More/Delegation/README.rst:22 -msgid "Code" -msgstr "Kod" - -#: ../../More/Delegation/README.rst:24 -msgid "You can also find this code on `GitHub`_" -msgstr "Ten kod znajdziesz również na `GitHub`_." - -#: ../../More/Delegation/README.rst:45 -msgid "Test" -msgstr "Testy" diff --git a/locale/pt_BR/LC_MESSAGES/More/Delegation/README.po b/locale/pt_BR/LC_MESSAGES/More/Delegation/README.po deleted file mode 100644 index 7580c26..0000000 --- a/locale/pt_BR/LC_MESSAGES/More/Delegation/README.po +++ /dev/null @@ -1,69 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2015, Dominik Liebler and contributors -# This file is distributed under the same license as the DesignPatternsPHP -# package. -# FIRST AUTHOR , 2016. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP 1.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-03 23:59+0200\n" -"PO-Revision-Date: 2017-08-21 23:09-0300\n" -"Last-Translator: Leonam Pereira Dias \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" - -#: ../../More/Delegation/README.rst:2 -msgid "`Delegation`__" -msgstr "`Delegação`__" - -#: ../../More/Delegation/README.rst:5 -msgid "Purpose" -msgstr "Objetivo" - -#: ../../More/Delegation/README.rst:7 -msgid "" -"Demonstrate the Delegator pattern, where an object, instead of performing" -" one of its stated tasks, delegates that task to an associated helper " -"object. In this case TeamLead professes to writeCode and Usage uses this," -" while TeamLead delegates writeCode to JuniorDeveloper's writeBadCode " -"function. This inverts the responsibility so that Usage is unknowingly " -"executing writeBadCode." -msgstr "Demonstrar o padrão Delegação (Delegator) onde, um objeto, ao invés de executar" -" uma de suas tarefas definidas, delega essa tarefa a um objeto associado. " -" Neste caso TeamLead declara writeCode e Usage o usa," -" enquanto TeamLead delega writeCode ao método writeBadCode de JuniorDeveloper. " -" Esta implementação inverte a responsabilidade de modo que Usage não tem conhecimento da " -" execução do método writeBadCode." - -#: ../../More/Delegation/README.rst:10 -msgid "Examples" -msgstr "Exemplos" - -#: ../../More/Delegation/README.rst:12 -msgid "" -"Please review JuniorDeveloper.php, TeamLead.php, and then Usage.php to " -"see it all tied together." -msgstr "Por favor, veja JuniorDeveloper.php, TeamLead.php e depois Usage.php para " -"ver tudo de maneira conjunta" - -#: ../../More/Delegation/README.rst:15 -msgid "UML Diagram" -msgstr "Diagrama UML" - -#: ../../More/Delegation/README.rst:22 -msgid "Code" -msgstr "Código" - -#: ../../More/Delegation/README.rst:24 -msgid "You can also find this code on `GitHub`_" -msgstr "Você também pode encontrar esse código no `Github`_" - -#: ../../More/Delegation/README.rst:45 -msgid "Test" -msgstr "" diff --git a/locale/ru/LC_MESSAGES/More/Delegation/README.po b/locale/ru/LC_MESSAGES/More/Delegation/README.po deleted file mode 100644 index 4ebbd33..0000000 --- a/locale/ru/LC_MESSAGES/More/Delegation/README.po +++ /dev/null @@ -1,72 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2015, Dominik Liebler and contributors -# This file is distributed under the same license as the DesignPatternsPHP -# package. -# FIRST AUTHOR , 2016. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP 1.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-03 23:59+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Nikita Strelkov \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" - -#: ../../More/Delegation/README.rst:2 -msgid "`Delegation`__" -msgstr "`Делегирование `_ (`Delegation`__)" - -#: ../../More/Delegation/README.rst:5 -msgid "Purpose" -msgstr "Назначение" - -#: ../../More/Delegation/README.rst:7 -msgid "" -"Demonstrate the Delegator pattern, where an object, instead of performing" -" one of its stated tasks, delegates that task to an associated helper " -"object. In this case TeamLead professes to writeCode and Usage uses this," -" while TeamLead delegates writeCode to JuniorDeveloper's writeBadCode " -"function. This inverts the responsibility so that Usage is unknowingly " -"executing writeBadCode." -msgstr "" -"В этом примере демонстрируется шаблон 'Делегирование', в котором объект, " -"вместо того чтобы выполнять одну из своих поставленных задач, поручает её " -"связанному вспомогательному объекту. В рассматриваемом ниже примере объект " -"TeamLead должен выполнять задачу writeCode, а объект Usage использовать " -"его, но при этом TeamLead перепоручает выполнение задачи writeCode функции " -"writeBadCode объекта JuniorDeveloper. Это инвертирует ответственность так, " -"что объект Usage не зная того выполняет writeBadCode." - -#: ../../More/Delegation/README.rst:10 -msgid "Examples" -msgstr "Примеры" - -#: ../../More/Delegation/README.rst:12 -msgid "" -"Please review JuniorDeveloper.php, TeamLead.php, and then Usage.php to " -"see it all tied together." -msgstr "" -"Просмотрите, пожалуйста, сначала JuniorDeveloper.php, TeamLead.php " -"и затем Usage.php, чтобы увидеть, как они связаны." - -#: ../../More/Delegation/README.rst:15 -msgid "UML Diagram" -msgstr "UML Диаграмма" - -#: ../../More/Delegation/README.rst:22 -msgid "Code" -msgstr "Код" - -#: ../../More/Delegation/README.rst:24 -msgid "You can also find this code on `GitHub`_" -msgstr "Вы можете найти этот код на `GitHub`_" - -#: ../../More/Delegation/README.rst:45 -msgid "Test" -msgstr "Тест" diff --git a/locale/tr/LC_MESSAGES/More/Delegation/README.po b/locale/tr/LC_MESSAGES/More/Delegation/README.po deleted file mode 100644 index c4a3b76..0000000 --- a/locale/tr/LC_MESSAGES/More/Delegation/README.po +++ /dev/null @@ -1,63 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP 1.0\n" -"POT-Creation-Date: 2017-12-16 05:32+0300\n" -"PO-Revision-Date: 2017-12-16 05:32+0300\n" -"Last-Translator: Faruk Zeren\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: tr\n" -"Language-Team: Mütercimler\n" - -#: ../../More/Delegation/README.rst:1 -msgid "Delegation" -msgstr "Delegation (Görevlendirme)" - -#: ../../More/Delegation/README.rst:4 -msgid "Purpose" -msgstr "" - -#: ../../More/Delegation/README.rst:7 -msgid "" -"Demonstrate the Delegator pattern, where an object, instead of performing one " -"of its stated tasks, delegates that task to an associated helper object. In " -"this case TeamLead professes to writeCode and Usage uses this, while TeamLead " -"delegates writeCode to JuniorDeveloper's writeBadCode function. This inverts " -"the responsibility so that Usage is unknowingly executing writeBadCode." -msgstr "" -"Örnekte gösterilen kodda, bir nesne kendisine belirlenen (defined) görevlerden bir tanesini " -"kendisi yapmaz ve görevi ilişkili bir yardımcı nesneye atar. Bu durumda ``TeamLead``, " -"``writeCode`` yöntemi ile görevi kabul eder ve ``Usage`` de bunu kullanır. Ancak " -"``TeamLead`` uyanıklık yapar :) ve görevi ``JuniorDeveloper`` içerisinden ``writeBadCode`` " -"yöntemine atar. Aslında bu, sorumluluğu tersine çevirir ve böylece ``Usage`` farkında olmadan " -"``writeBadCode`` yöntemini çalıştırmış olur." - -#: ../../More/Delegation/README.rst:13 -msgid "Examples" -msgstr "Örnekler" - -#: ../../More/Delegation/README.rst:16 -msgid "Please review JuniorDeveloper.php, TeamLead.php, and then Usage.php to see it all tied together." -msgstr "Tüm bağlantıları bir arada görebilmek için, önce JuniorDeveloper.php ve TeamLead.php dosyalarını, sonra da Usage (Test) kısmını lütfen dikkatlice inceleyiniz." - -#: ../../More/Delegation/README.rst:18 -msgid "UML Diagram" -msgstr "UML Diyagramı" - -#: ../../More/Delegation/README.rst:22 -msgid "Alt Delegation UML Diagram" -msgstr "Alt Delegation UML Diyagramı" - -#: ../../More/Delegation/README.rst:25 -msgid "Code" -msgstr "Kod" - -#: ../../More/Delegation/README.rst:28 -msgid "You can also find this code on `GitHub`_" -msgstr "Bu kodu `Github`_ üzerinde de bulabilirsiniz." - -#: ../../More/Delegation/README.rst:42 -msgid "Test" -msgstr "Test" \ No newline at end of file diff --git a/locale/zh_CN/LC_MESSAGES/More/Delegation/README.po b/locale/zh_CN/LC_MESSAGES/More/Delegation/README.po deleted file mode 100644 index 4332b4f..0000000 --- a/locale/zh_CN/LC_MESSAGES/More/Delegation/README.po +++ /dev/null @@ -1,64 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2015, Dominik Liebler and contributors -# This file is distributed under the same license as the DesignPatternsPHP -# package. -# FIRST AUTHOR , 2016. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: DesignPatternsPHP 1.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-03 23:59+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" - -#: ../../More/Delegation/README.rst:2 -msgid "`Delegation`__" -msgstr "" - -#: ../../More/Delegation/README.rst:5 -msgid "Purpose" -msgstr "" - -#: ../../More/Delegation/README.rst:7 -msgid "" -"Demonstrate the Delegator pattern, where an object, instead of performing" -" one of its stated tasks, delegates that task to an associated helper " -"object. In this case TeamLead professes to writeCode and Usage uses this," -" while TeamLead delegates writeCode to JuniorDeveloper's writeBadCode " -"function. This inverts the responsibility so that Usage is unknowingly " -"executing writeBadCode." -msgstr "" - -#: ../../More/Delegation/README.rst:10 -msgid "Examples" -msgstr "" - -#: ../../More/Delegation/README.rst:12 -msgid "" -"Please review JuniorDeveloper.php, TeamLead.php, and then Usage.php to " -"see it all tied together." -msgstr "" - -#: ../../More/Delegation/README.rst:15 -msgid "UML Diagram" -msgstr "" - -#: ../../More/Delegation/README.rst:22 -msgid "Code" -msgstr "" - -#: ../../More/Delegation/README.rst:24 -msgid "You can also find this code on `GitHub`_" -msgstr "" - -#: ../../More/Delegation/README.rst:45 -msgid "Test" -msgstr "" - From ea85485b85a4fba39ca788f6bec74342f2a78087 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Thu, 14 Jun 2018 22:17:14 +0200 Subject: [PATCH 17/45] Refactored example of Proxy pattern --- Structural/Proxy/BankAccount.php | 10 + Structural/Proxy/BankAccountProxy.php | 24 ++ Structural/Proxy/HeavyBankAccount.php | 25 ++ Structural/Proxy/README.rst | 14 +- Structural/Proxy/Record.php | 40 --- Structural/Proxy/RecordProxy.php | 49 ---- Structural/Proxy/Tests/ProxyTest.php | 21 +- Structural/Proxy/uml/Proxy.uml | 71 +++-- Structural/Proxy/uml/uml.png | Bin 7509 -> 36001 bytes Structural/Proxy/uml/uml.svg | 356 ++++++-------------------- 10 files changed, 197 insertions(+), 413 deletions(-) create mode 100644 Structural/Proxy/BankAccount.php create mode 100644 Structural/Proxy/BankAccountProxy.php create mode 100644 Structural/Proxy/HeavyBankAccount.php delete mode 100644 Structural/Proxy/Record.php delete mode 100644 Structural/Proxy/RecordProxy.php diff --git a/Structural/Proxy/BankAccount.php b/Structural/Proxy/BankAccount.php new file mode 100644 index 0000000..84fab34 --- /dev/null +++ b/Structural/Proxy/BankAccount.php @@ -0,0 +1,10 @@ +balance === null) { + $this->balance = parent::getBalance(); + } + + return $this->balance; + } +} diff --git a/Structural/Proxy/HeavyBankAccount.php b/Structural/Proxy/HeavyBankAccount.php new file mode 100644 index 0000000..7fd8c17 --- /dev/null +++ b/Structural/Proxy/HeavyBankAccount.php @@ -0,0 +1,25 @@ +transactions[] = $amount; + } + + public function getBalance(): int + { + // this is the heavy part, imagine all the transactions even from + // years and decades ago must be fetched from a database or web service + // and the balance must be calculated from it + + return array_sum($this->transactions); + } +} diff --git a/Structural/Proxy/README.rst b/Structural/Proxy/README.rst index 554a0fc..4b3e410 100644 --- a/Structural/Proxy/README.rst +++ b/Structural/Proxy/README.rst @@ -25,15 +25,21 @@ Code You can also find this code on `GitHub`_ -Record.php +BankAccount.php -.. literalinclude:: Record.php +.. literalinclude:: BankAccount.php :language: php :linenos: -RecordProxy.php +HeavyBankAccount.php -.. literalinclude:: RecordProxy.php +.. literalinclude:: HeavyBankAccount.php + :language: php + :linenos: + +BankAccountProxy.php + +.. literalinclude:: BankAccountProxy.php :language: php :linenos: diff --git a/Structural/Proxy/Record.php b/Structural/Proxy/Record.php deleted file mode 100644 index ea018b2..0000000 --- a/Structural/Proxy/Record.php +++ /dev/null @@ -1,40 +0,0 @@ -data = $data; - } - - /** - * @param string $name - * @param string $value - */ - public function __set(string $name, string $value) - { - $this->data[$name] = $value; - } - - public function __get(string $name): string - { - if (!isset($this->data[$name])) { - throw new \OutOfRangeException('Invalid name given'); - } - - return $this->data[$name]; - } -} diff --git a/Structural/Proxy/RecordProxy.php b/Structural/Proxy/RecordProxy.php deleted file mode 100644 index 4d29ee8..0000000 --- a/Structural/Proxy/RecordProxy.php +++ /dev/null @@ -1,49 +0,0 @@ - 0) { - $this->isInitialized = true; - $this->isDirty = true; - } - } - - /** - * @param string $name - * @param string $value - */ - public function __set(string $name, string $value) - { - $this->isDirty = true; - - parent::__set($name, $value); - } - - public function isDirty(): bool - { - return $this->isDirty; - } -} diff --git a/Structural/Proxy/Tests/ProxyTest.php b/Structural/Proxy/Tests/ProxyTest.php index f2cf2f4..4e7a4a3 100644 --- a/Structural/Proxy/Tests/ProxyTest.php +++ b/Structural/Proxy/Tests/ProxyTest.php @@ -2,24 +2,23 @@ namespace DesignPatterns\Structural\Proxy\Tests; -use DesignPatterns\Structural\Proxy\RecordProxy; +use DesignPatterns\Structural\Proxy\BankAccountProxy; use PHPUnit\Framework\TestCase; class ProxyTest extends TestCase { - public function testWillSetDirtyFlagInProxy() + public function testProxyWillOnlyExecuteExpensiveGetBalanceOnce() { - $recordProxy = new RecordProxy([]); - $recordProxy->username = 'baz'; + $bankAccount = new BankAccountProxy(); + $bankAccount->deposit(30); - $this->assertTrue($recordProxy->isDirty()); - } + // this time balance is being calculated + $this->assertEquals(0, $bankAccount->getBalance()); - public function testProxyIsInstanceOfRecord() - { - $recordProxy = new RecordProxy([]); - $recordProxy->username = 'baz'; + // inheritance allows for BankAccountProxy to behave to an outsider exactly like ServerBankAccount + $bankAccount->deposit(50); - $this->assertInstanceOf(RecordProxy::class, $recordProxy); + // this time the previously calculated balance is returned again without re-calculating it + $this->assertEquals(0, $bankAccount->getBalance()); } } diff --git a/Structural/Proxy/uml/Proxy.uml b/Structural/Proxy/uml/Proxy.uml index 9b407e1..a66d877 100644 --- a/Structural/Proxy/uml/Proxy.uml +++ b/Structural/Proxy/uml/Proxy.uml @@ -1,28 +1,43 @@ - - - PHP - \DesignPatterns\Structural\Proxy\Record - - \DesignPatterns\Structural\Proxy\Record - \DesignPatterns\Structural\Proxy\RecordProxy - - - - - - - - - - - \DesignPatterns\Structural\Proxy\Record - - - Fields - Constants - Constructors - Methods - - private - - + + + PHP + \DesignPatterns\Structural\Proxy\BankAccount + + \DesignPatterns\Structural\Proxy\BankAccountProxy + \DesignPatterns\Structural\Proxy\HeavyBankAccount + \DesignPatterns\Structural\Proxy\BankAccount + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Structural/Proxy/uml/uml.png b/Structural/Proxy/uml/uml.png index 82f548a364897abf7530463465f00f83d9a66d59..ef75cd6344bd3ef2d7dd7bfc3635d9453a877363 100644 GIT binary patch literal 36001 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%0AU2B76^mw9i-#gehf=Tw znbJpI);{nX>MaYGiOM2=ZCF)aS@}{X3AcX@gy+e5Xq3L^I<)d)a>NS@763JwWd z8sz)B+SwdE+iz|@?E zCAEx@WVkH3zd)cr2<%h=ec(b94?Qd_3lU^l=HPFx}5rV`xWxgPsm;PpA~K@m7nru4-jgR7K-=`U61s&O?)^B z88nolIoTCCxh9lAv*pwT*Lx^sMwCVkNBl&SIhWLb(_?Vnt?24gL$U8fZ6W_CAn*dk z?S5)Ike!cb@Jh%Vl51EPkovS-tsv>0dK2lON|Ex6b_&*^P&Vr~ye3)dPs6cqi`2!3 z!-=^lPvWJJEvO;~grWgAMaoo;p(@uC7xCoSUUx6~VOg`8c8xcS9etBVVK&BHa-0Iy zOf|7th6A550Anu$fszw1P38W`RoeMzxxLV)j1nR(X}%F?oMb^VFPj<@1O1MOU8Pt3 zk=@Ng=eZV_m4zB4`G?5PrXPJ=rmVfncErddj;iB`0kL5TO7$v*(9qYNS=7=wd9maf zm+L4;XYFMlmV$4U>UuyBFP7my4QUV=_)KiEM4d zXM4-~_QhAIe7ZAJ{6CHj_Ox#iby4o*_)Xhur@NCdrx@l4GoR4T5^Y`njI*1&)rP*2 zG{ao;*JBInJ)OB;pOCe(e%Rc6qtiGJ7r=-|a~$n5tBEAqZD?lR0Q%3!GOS6(!^-A@OtHVJtpAiCUo!|3H zBKaoq)|IF_=LQPRyI&&s~8l-BbMOSrN)nj#J_-%Y)y+-wdyS|Y& zEmu;-9{Jfhy8>%96VtPL%V3=<4t<6l#b+NNBYW1{P*wiuBA;;+nwo(*4nYNm4(Idh z-MpVCn-pN~mr=--cIES61y5#stpdQbs9)=1Hhy0$9soE%Z(>$h!Z?jDq$cGOdy1)_ zJ&P)+V{pX(*x%K(?t!sfc)_Vyc6mB?JfoXNfx$RitHQ7`so2{g#A-j1gqX{c=siuX z%1$kn$K>)7xvqAIm@|>TV3c#;ii)i1) z102hPEIMna!Sy&1o9D#CZ4DlfGB3OJ@81>B$4$MeWMr>r+EB^9ZL>04yB1%5%{s94 zB;A-krEnm(QoE#?M!%m)EB3lGifKGXAQL5uKRi{*Ns(7A;kaOs{asBMdim30sCd|&g`r* z&u!WZlHxX9$8Jf+PK5)M_dMc*>jgle6!Doq5o?6UEE=?pe#^**sSOCBs9a({ zB(?VqcfH??Njm; z*2-xgOPA|`FovL8RSlBUM|nMhq8b>}jZR>#v&EsYTx zo#TA?;2mRZO#IYZ3xiDMKIhC)aD4YULr73ng#=9hhg+dm!S*#z$1F~~4!y!+Bny;T zS!1CFJ5ob5*N0_?-z5`B)>P4mGiM3L5nu$XR=;@Cd2ff|Kna)-XMdOwa4T8L*rT+Y z&zO+hyJZ86m)<)#VvsXIe)hShOmLJ3rcMp1_@S7`WHfwa^}qydlOHSjBT+rw23e~b zPh3gYn&7wz;Q&7<>)&PtmU}SuX#AdqqpLkbvU>34Hvbn4*^cG0vP(ZZyYYXqFA5ho z-0;itOeh$zt5S`lBIxmkPjiPUP(;^kl&FuVFINg#KfLovV`y?bIJ4i?nCiVw!V%+9&fn z9p+vki4%WN%ApQb)R%-HDS0g|(g#7sFAeU(Hiy(C2v01x3_>L`UxG3Dcj9{kDNVOl zt;$~FXz~W<>3StfCNuPBD)Y@r_ppo%5>BJOXpvMnaST&xuVDB{g7Jj z^l0#U9&c{pA0GCu|2UOM68{!qR+!5Ba7!6X{5mo1ejUi{5|N>kB=PB##}cj(bOy=5?LhDtNBSUxKCAx9sV8P0fcx zKEGKY1j!LgG99T`?K{gf3j8|hrh1ZGENkEV{sl;H;%bDn>oE^i=ObFY0@uk=hI0b- zuAp27TE4KowQ0D6!mvF?1LlI)TO#sI5Rhl=BT+t^f2iO>V->@fgu@GrQR>t!tcql< zCw@6>Vj?rcxS}DLu_-^v5}qPVzNCHpnv|X3eN`+u5^M*Ofa)Spn~uX4_4|Sd$c+4h zNZ=`})xu3|=}shjGs^Km4xmisf$HkJ?oHNdebWZGX+cZ6>SIE z=kL-Rn3cSAFV&ElVosgR$9ra1$b-!8F z?lB|53E{CXjlB>*oS{=p^s!pPZempBM14ttuL$=QV|1Vkhx^#hbdj{9xoO{`>DKEC zo6_6}yLuu-U;+VQAxwnW^=cbYU&kW-89skZ{Kj57CTMWpkpQJGnYds#lpP`Cw2>S7 zBI3ZfVpfRi>|vLLKyu(qxO&^=dkZ6$cx{cvxtZR*Ju(uKji8z?FWptO1Pf}5=$bfI zMy9RhqOno7Hr}-EvGeiYBKNz*!3~_S@o3^aW?Fr$r>rLRIFjhB6@0^CFE04W4fuHm zOT}k}$&K~GtayPM+f25m!UIbz{#kmkgV6!co>Ezsn5z>v6gO5rPw(k(XHk9OIX`qn zO}U@_WbLNSuQm2mO#}lpnYC;vFQSrly!PX{F)`@rM*(y69P1}+^$uMkNu0&eB~n@a zLidfTrWlwj!wZ08CQ70m3RZBT!kAnRS1Q*+c`U2|NHFgZ*Lk>rp)S6z6{X3XXy}&| zWkX>FhmpqUU$d^cUfvScGLR9%CwXgDtiWQPC1A#xpx_TW;tCE;Y1#=_GNdlV2_BLR zlXY2KA6FUF8zqA68ke>Aq*!)<=1qoGPGyOuxKB+glS-!|QIzz-VMyW(Nn>J2;UXV% zjuf?TP!k!5!?A@J)I^#}sgh$PzAbM>=q~zf-l1}A)SUD_t<0>t zZogV<0~y8_vT8ft^(EizJSOf!&j_i}*j)p&Fl}S+Rz@x+<|>ZdZ_UpPJ=jX!=rqdm zxj&~_@Y^qSl(D-gGFV6mvqvHpJzeH)$a6hc+U7Gs$cQrLd4w#2y=7paes26F=hIJ> z4{LbIv7}?(?^DODLT5}18~lH}-AahV+!~#)3)=>2W49@{*77H0tsT4Jj>2vd^Hkkj ztep2s-^(MfFRRtt@7^jK;Ilk;^U!34m6j{plz32;I5v7ldU0of&1InGJb<6)eh<|yUKC%&Mn8j zL^34wpCW}}C(trXvGh{7Lzy2^l0B{++?c@mD*4I?o%U6JLV^1bXLfuXZK#HDxv|6^ zkt(Z0Bg^b|$;D|qr#E?sAPWe5&A105L=yFt3mp4uiF`1c22^hAG zCGwJY9TfA>rQ&39s`Uh8gjK~h*a(V9z8APLKa)-3Y_zc#AW6j?YG~4PY$9}WH%RDi$tfK&!6nxY1vtN+c?;{F|zVM z-gJ9tbx*Ne)LKb2WPSdV312@;45x5D#dJ$_#0nRtaRPqd(Df-Ln8s-%Ca@+Gc3d2@ z>UtsiEvrtmQnw{lx;478)^RVSkLGrnxOx{jR*_$#@Ss@P%s)Y!*gDvWcMB|7zsjTC z$?NPr3Y?O*+sNcHvdaQ_c#|rQI_{f^UbkX$llksH0<^2|cDefcT|@)^IR+%yzum<1 zS2?PbqXYTZ5>Gq%h?DP9$cW$< zo21ugpNP=mg$$k00cDexsbFV*sx0v~DBbHlA>jBPjXGcxb3?i!5P?r)g#+RK%od?X z-IG*8Rze0)STmJ$kJ7XP`@H%94gLMiGwPX`T+CcdIAkP3Gx_wtUWEVn|Nn)F{Bz5{ zdo+=E{6#rZ{Lb*LAsqNcCEbs|9&@FbBr6%@34f36pB}f(g7E$tmC)ahKJ_!{?;7x8 z;A7ySUL$`$z7SpiMTgV_GGP9VmMhiw$fqwnB9n%xxXC#=9H6TBCZe|sln zaSHy0@S-VSr~sv_5EdkPA#DdN5hP%MKtI4}Ve942+jKwySZzSgWu$Pf6hO<86m}Xj zzz)AxTz>U1zBI4mZsP$1`CR~31bBn=yGZjYkf)lC_3w;>wg1~fTL%N=wtXWOT0soK z`Hc$%&Z*znzrPdqFe46V;a|D|vVPO?XE(S2B`^Y3{)M(bD#e;0{xNqz34naq`~ffi zNa$h%%sQm*{!IZ43kb+B7$<&DAdrAjM+__fdr*G$e|94b3>Zd0=x-MMMccpg2d|fdl>o z2?FeZ!ccqw)_!0?oc_6PsTcxsX#7>H_fkMB zq%>fj48~$ukEl>_8m+%tbP|U+xzFWvwhnX64vj+>UO)XE4HSoSL(?t&hKM&bK>1m>^-yoT6BOu3to ze|a~$;LLRijpeihpL+D~QFxk6jg-^cz4dVp5DMMc_)g@EN#?Y8(D!uVEMS7~erhF~ zcGbm``*dmGf`4zDowA+qnBJ*9XW=a-GXcOe4-?26%!Heo`&Zu%93Q&*L@3As#KYGW zVsFiPXA#GF=Ht%+SVc}dy0T5pFE*U4L{D;mLlG~;)m8$M(~!ZU4-Ss!zg%^JR;s{CR=donm+l4~&-wTFPYbClqn$XA32q@UXs%3NJ7r0V%X#KVG~?lbYTw z??Nn`+Hz#V{bIGkkb@t?gBX(e#IK#%tIme?;#_+hZMx=#pud9S`ZEx{ z7S2vuLOiZ>KHYkHnB$)gw_rCVXqH<&a2AP)`*B-W%#sLCBZKW4$E+r$e;R*km#7Qy zaon#{V++&SZK4??>XJrm+OORFBu*xkgH#_+3d1fM*MYc9wrE2JxM~S3+@ujichzD6 z*#&Wc2l*rzkU*UnC2~*VlR?>PyOwMPVmO-bUP#x zVSCvJA<9*sF`ggCA8K4liqRJMS{p<^+!eNKwd}lzsKMb4wkp@V#1_juFNIOA+$gaRBBvIgtF3B1J`(~WamJXzI#^Rs zJLLjv@)4g~bJ_i}$%kk*FWF#gg*A!3QXVpMlCX0AS)w%rNdd?73#N z;x!TN?!$aBE@#~P<#S2fQ4W2Bv9mWgD zn><`|Op9qX{u?;5C~LB(*=h3i=!WLUAVtZH1hRO_Wz3fX-xRGO-YxdxXT#S&dH%pf zuC|ZXi?|?vVh}z^)gBL|TWd%u2gHRafmhn=`Ma7Qaze&FS^lkg*22)9g-4*FTq$E3 zXVqiWRVElXGC45E@wK*Pjg+Nv)`3-1=j~Pmbs+Zqh{m;ZrI=>h69*~{>yz>$kc52` zE|rTZvX#T5Q*Xi9{*H(147+aQi(@^Ci#J1NdtqGfD40+3Qwgp#r?v>=g;JA0p%ISV z6pD?>#?DnrBiKFy|Ae6s+kz7m`ab=EIh^-WvwzU~Aavp5KvRjZDZcU1*O%DR{lwQ- zy>*UWcXW1*gwP=6W3YJh`W^BCXrB$|RP_$A8LRh#q*gQJjdLJF$FK_xN+Cx@?@xWA zny_6Qi9N~BxU>&y$24QaiEti$^v!g9Z|FKCgompAR%x=r%^e#Cv!leU{7weA#IhJM zLo_rNOn3(|U!!F;vS>VfpB^~lCP*G6Z8u}Li7&KS;4P`OIse{Tho||1;?M70v&5!42uGh8R@HZzcNz{)Zyf46h`y%chH@aTB z?^q#kjH$oX^P4!|%}`D6Og=05$w6?-FYp&W^UHLHs+`Gthkegup`@mRy=A(NfGB;< zG?nM!N1+#eLZTcR!r2|+!ck3KC!3@-r)OtXmnQ9|MkC9%SFTggIb+kzwI~{}s(NkL z_Snm6{aLd_otWd0#8xjCa@=rMN(%MS#LW}W?r@zq z=H}uzyszf%6kG@qM5Uh&@Aa3qw4`d*ynB-;`Gsr*ih+oH>Wip9;>CvqcF-2nR5XU7 zPGzE?o3GsphVZu?WxJ2iGpDlKM7`C07?0kE=C;;xFTGwy5a z^)+%Mm+fZnO2z>mQCkGx=cXE!$D{3;UopO{$n(37{kkBbK+Z#2Nh)7NSMptKdU&kB)FwsLGQy6K1 zPX28=oIUJ6ai;8#$K@09D)e<;in8`rti3=)=0ROSKg%8UiQB;`V`JeRlX`W2j(wRW zK~j?_Q+-+YPWC@wq{q+AtL*xjZC$n&pkUPi^&`L)-;dDMu=kL?ed>wcxtUqBtGqbT zqA_tVz@#3IiUq$S<*vF#fK~CZq=e93GuCX5*ULo`a?oO|{mJh2xC4XH@OQ8#>4MD+ z(J=aoe47_$qEm$&CgF6nkmQQ|zI;$CZ-S=sLp3}82>?iCjaxU`xva>x&vf_!7m(=i z${;lIJf1F&@}@Wf>(hHY9%rbL@}(w)&Kpu z$`btbuWVGZl->XhTNc)sv&^er%nSB35z5q~G>^jNwyDEi(Ov9p)E8_7tP- zI#eNp&VKF&BbNYTZ^gA`B~B)d3FP+Mn=uYZD1dH7JRYVl-}r@sd@67qD!l$vn7e~C zz}Up?eXX8#C;?U<0$Ys|dLM+)tn(xovmg^Lm>Dj^Q%`pM0Ke((q-8Y3^`UeB4p@6g zPnWy+_(vMl-n)N&XMzdBmYp?!6UF=pyequ?#K(T*db=v%bwcj>5-~~Ra~R-tEM?C9 zEMLwhnGyWuOvX;(#=!*s(O8w#BOZ<7i2bm^-svG zxqG;Kvh#c5?__sT7m^xpoj!%J>QZHbSFSx`E*QU3ZVjcSgdUqj5IP2&e^9TEp341wpypJN=~h%;OKKcH)e6Wk*}qr-uB6^c2t3^XZ2;tcwZQafo| z24^IF;qIM>m6pE+Dy0Q$_d+ zd*&>WQNN>&i54c;HSNk^R{VBPbChx4+_R;vu5UL8l-rqnfOU2a@BPDiWLGn_>r%mZ zhA}+%R7WJK6baL6#B3a$21}t~uGt7Q>TDx5*4eRgxxvM+_eq57fqTAkmwai9!B3vx zfOhD$>8D}NPXn)$N@UJOx6!xi<%%lR)P=ES;;W8TtwTK4?^2U}+)|UYJcoRG*u}})-hFj0m6)ZS#s=S%|}Fwafa&IQiQ zrhq{Jn(fh^KBT!*Cps9w28h@x+;nk&}h5UOC|f3jw}6G5(fqDezw2r)e^QzUJ-Tqg8#(l z?DSN10q3$tqbu}J$S+C=*s3KDzkT0h1^Jz=&e4y>W3p0?;L;n~a`GI4><%ofDl zO}2AHFwFAaA^lfuaGSA=P+x1E71?S0RJc#PboPB-D=xle1_OBN!s9I+{^HNK72mlT zg^!*x7knz3Ha`-xJV*(H>BN5_gYWbJNd0izxjGZ2)!IgYDc^n6UdYGH$?Y=LyJr=9 zobyxX9}8JPc6{IYvSQpZe6e55| zP7njC>~}DN&y1M4zl*H<@Q(gq_;PbIyLeAS?3HHN;U59^QBin)l-5yq8^VG|WQ$?} z(%k@Ky={xi*_@Tw`9R2Y#3%$gc1*533kxh-=}B?_{y0aOG)6R1Fi9({OR;N=5$Oe* zvS_-C6dki+u|!?jl7x5EgE@6rf-(SNv=sOzD;&vQLH;PIAm9nVAP4xW9Aj*SbOi~Exaz(&A)ZhtfjIFf$yrFy}r{sX`Kb`5Yz@xw#^<=_4{34*xF z5`qGFU_e$#hp9IYG~OL}HZ@I~e7%)mj?|!n<5!2F4+yX@g?!H9{Qdo6#la9n02ICH zkFat<9`qNWc^CxCGlZvnZOZb;h0lRu6`F;EBQAMt*hnE%WC_n8T@}g@epihGcL2hC zO&2oyJAl_dBK{Nb$e`*g4$Di4tyyCgjDNM~ck}sOtuk@VipRR__@>3#f&&xHYoujqoSUnlDGLKWyT9vOBub*aXNA>laH@&@!xR!d8-kBn}syXae5 z5s&?55u|cQyOPBG>)rV<5?=e=!Ttks7T;OCOz2sE zwBeK@BbuG9f3ziUYO-M9D7rj$bm`z#6aLWsOkpQc1Hd!)-M*9JZQWFGVH&HgYO0I< z!l1D>=+u)MajB<{nWUBwKVrTWHe6iDA!JlDy45NEzM^m@+goN})y=Gl)R=NcNiVv_ zL4n32lE97{&mq4vNptau-cYt;ki|fl+H=5j2jLCuJ2G4^5`+}q-dl@$2~zAn0bQ#E zGyH-7rT;POVr17AGd4J2nk9-jmy((JDEmipMI>v$>}W6X%8&`~=YOC8=!pyH-!y2@ zG3YnHQN^enA_htOvU5dn8?#c#=&0au;v@HWJdvJfSC*JhsZ@G8taL5Jw7wGJ*LZUr zo(0eM8uE)V4_I|~Tl@XP)*Lh*c-ak~ZyxZ;Q6jd3IeE_R=Dlp+D}M}i_{IMsWT0nv zosK?u{UFwCk-bovCo$SBUYU0gnpODO){W+*!?udhzDWJ4a`{(l0f`DWbmTE;@s|%( z1tmeEeI2V(+JXIMi65v-!^e8(&m@Kb?C7&%#7p%yBo~X0 zFVkD*Wb-xppU4!tF^%l-uz4huic3l>6h-QoVlu}M+&h`cnaoU@#l)2I`df}cSmjcs zJgQ0e29Ru*Qw|;0bH&->;_a%L@Tma^!gP?)fN}37C@>yFbTTV$$DX{O`~$?Hh8^Z^ zc9Mm@N%53|kO$T&3XPb77;#-`Zch(&wVdZ$K8;n?!(4 z;NK>@GXSQ=s+$vMjtQaVTUeftq%~ZdT^Su6A5)SVI2z387g{Q}i45;b2+kodcM)}W zDf|dBme~F z*-GzBgs_|H=C0_;_GrGums7`3QHiXux>PH(^l-0!x^%FNWoY_hK2$m_zfNI-vngf1 z&!8qY`_{7m9Wv(VR1OQnH>C)xLH{WnI$Gb@gAdPf*I{CJ<;bfwbdsT~N~kQp)4;{j z-QJwGrpD93A?ekE8JsX-*ftY@qW#?V7m5~?!_qp-fkk6)(!%&=e>Bp2Z#o$+LuR0D z=wF-_^tydd$?wHZx(hwC_ zB)|FJI+xjbLVjvYtOO2BM)li?lzlM?OX<}GW69KL^ToTpfGEjQ%s^l8`R)-u2!8_t z2ymd`k1HvH5YSxh1)Z=0`O1C2LCTxxY7$KVR_^wU(jG)oCvL88s` zVyQvX_d$WdSZ`p1NPbX3&*%+|ldyI9H6~+k$+yc}_x7;$vxYJe43hfxH4^6Ha@Hm~ zhHclkc()1%xyyO4AH=J9A0~1b^O=tu%No)%*x&nwo3ITqql}`d4hQuo725??8>S

V zqjwCS?{Vmu{O_yw0$<2&phO$c%9U=={0OMt4(GO1tI?sZnp=7y{eG7_H+9K2yixf1 z^Jacq^&i3K;e_s^^!VI;R8oh|AK2FK9F(f0CeQwutU%>ZvMpNmy2EALvUFa~ULd?a zlv+DLtwctgJggb55jxz^x1qP>_ls|9s$P~ih49FYcA6>bRlU1Xc+s~erVY0K9}QXF z=g2@5UagX|Gs=M1pj2AgO=v2JHi@qj`)w8u`mu1$S6T-)2wOkSpJ&65K3iiW-a)d{ zV!7gD+0fi}!vt@eN`6^b$o*U{Ho?i$;N^3)u<-}1>xLL)e6oaKxhNCbob(JqV}kxn zLi@X0`-h8{STLkeir(6#dyk$00~wFCcj|Efus~b_p}6bN+2X`>^K|aJ$JVGmDX+mc zu}{3xLPNIX`@hB4{B?`W3mw(P`|rD1|3#;P?Ye)B(fy7`{*KrIH^!06UjKPd4A@dY zpb8)gO!Y_*Hvp#T0pAsYeP!eKcSin50Iy-GQ~&?2Q(fN2tY|GZ5L$x?QtIz3Pg}AD z6#x8s22>0~Fs|K8n;rZw*TULf(gRwQe(*(K{gZ17?_SEwU;xAErTq+iPfYmdXEO#0 zr5hJl?9+(>imq9_ZH?6(A_&XI+k@QhZ!N4NYj_ujdBCYnMZeLR?$P^k?CT@fKc=0V zZIU!PICK8}QWzZg|KV2HuSEUQ!q71~2H5rmpr*wKT4E>9xK9W#k`U#Hqn~?JH=ZVW zKkk3_4x$t$n$`7+v&vD8Sw}^Z=Y)LEyRgGB!(4%3jo0LL4FhMCvqj4&UGdB`)mIFF znWQ;(AWeKj08rtj%lbK1d2*D<+`OZH=4jh@{PA_}MU6DL!Wo?x;78KE?+JX(1HriNqdnw#DSyfdIW+JL&iNA|F z+5)gXl`OhLk1~44rMZ)}hmFSiE4V3nL*k-#5`_k)9n5T%KK1c|`5VgXsi`tj>|!#n zDMO;)`J9m=ZzO(^5y4lph2HTd21~ylo#t*@ieJP>m`lq1iDK;YBkNS%sN!gQu!I@7U(^-L?5#g;@isEVUzT$F9JiZm$!Mvc&z(Vi?&-F^+V(XhPvZ* zZ;|IMDaOT&0f8aK<7ydI1FlbFCZKZ1`Uus&rysnR;w5#IR+r4j^|%*KKY1G|ve!p5 z&>@y|d`QZ08K~Mm5*6wcKsNq_v1X0l@J3ZXu_hZL*)zW<(R7F}7GrJZnDkuny!g5P ztFNst{Pp(A3SBlD-0}M8eQZ(q`l>Qyv1UbFFH5?UX>^t=8Hab*yxn3Vj#$%HM9LdW zYo<~J+5CU&jl;4>;4ZIjNS(;&a_&z<$7jvRunDZTqswVPL-V-ll%@)&92ukiwG=f- zefzm7*8n-N6pLw8Y|%jmIT-3DOM4i)8b$}M%qTKakAJK>5_EN)*%_5EfZrA#@$UOJ zQ+s1#6g!)2WFy|UaSoUQ8Inp8%^5G;K&{K0&!|BzYHeze&$U>fgHWZuR-aBfd}VfO zWhk_mn*@2^G=9(a($F-lL%eRh-`Gv2!=BvttO_RNOJjtmMR3L6hQGg#!!3TVR7$Yn zc_;HWh!uH0g3gxw{XCD-aqnf^=T9y$6zSK0ph&%k{(&Oh8&m&q8pmqv;9U9)jeAG< ze^vJuP;oWg+8`20kRX9T6Fj y~yBY22mp;O>&(!9%d%Zo%Dx1$TD~0Yc+}K=3f9 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 Wg>Q1lwrL2!pNxd!t8y`D!2bc=j(Fby literal 7509 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 LL!na6Ea<-gyD`Ae diff --git a/Structural/Proxy/uml/uml.svg b/Structural/Proxy/uml/uml.svg index 1ec1d46..a2c889f 100644 --- a/Structural/Proxy/uml/uml.svg +++ b/Structural/Proxy/uml/uml.svg @@ -1,281 +1,75 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - data - - - - - - - - - - - - - __construct(data) - - - - - - - - - - - - - __set(name, value) - - - - - - - - - - __get(name) - - - - - - - - - - - - - Record - - - Record - - - - - - - - - - - - - - - - - - - isDirty - - - - - - - - - - isInitialized - - - - - - - - - - - - - __construct(data) - - - - - - - - - - - - - __set(name, value) - - - - - - - - - - - - - RecordProxy - - - RecordProxy - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 93d4ebf90f10cb5f3372b9d3f8f9bce80616fa52 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Thu, 14 Jun 2018 22:49:28 +0200 Subject: [PATCH 18/45] refactored State pattern example --- Behavioral/State/ContextOrder.php | 26 ----------------- Behavioral/State/CreateOrder.php | 16 ----------- Behavioral/State/OrderContext.php | 34 ++++++++++++++++++++++ Behavioral/State/README.rst | 22 +++++++++------ Behavioral/State/ShippingOrder.php | 16 ----------- Behavioral/State/State.php | 10 +++++++ Behavioral/State/StateCreated.php | 16 +++++++++++ Behavioral/State/StateDone.php | 16 +++++++++++ Behavioral/State/StateOrder.php | 32 --------------------- Behavioral/State/StateShipped.php | 16 +++++++++++ Behavioral/State/Tests/StateTest.php | 42 ++++++++++++++++++---------- 11 files changed, 133 insertions(+), 113 deletions(-) delete mode 100644 Behavioral/State/ContextOrder.php delete mode 100644 Behavioral/State/CreateOrder.php create mode 100644 Behavioral/State/OrderContext.php delete mode 100644 Behavioral/State/ShippingOrder.php create mode 100644 Behavioral/State/State.php create mode 100644 Behavioral/State/StateCreated.php create mode 100644 Behavioral/State/StateDone.php delete mode 100644 Behavioral/State/StateOrder.php create mode 100644 Behavioral/State/StateShipped.php diff --git a/Behavioral/State/ContextOrder.php b/Behavioral/State/ContextOrder.php deleted file mode 100644 index b05537d..0000000 --- a/Behavioral/State/ContextOrder.php +++ /dev/null @@ -1,26 +0,0 @@ -done(); - } - - public function getStatus(): string - { - return static::$state->getStatus(); - } -} diff --git a/Behavioral/State/CreateOrder.php b/Behavioral/State/CreateOrder.php deleted file mode 100644 index 9c95b61..0000000 --- a/Behavioral/State/CreateOrder.php +++ /dev/null @@ -1,16 +0,0 @@ -setStatus('created'); - } - - protected function done() - { - static::$state = new ShippingOrder(); - } -} diff --git a/Behavioral/State/OrderContext.php b/Behavioral/State/OrderContext.php new file mode 100644 index 0000000..183ea98 --- /dev/null +++ b/Behavioral/State/OrderContext.php @@ -0,0 +1,34 @@ +state = new StateCreated(); + + return $order; + } + + public function setState(State $state) + { + $this->state = $state; + } + + public function proceedToNext() + { + $this->state->proceedToNext($this); + } + + public function toString() + { + return $this->state->toString(); + } +} diff --git a/Behavioral/State/README.rst b/Behavioral/State/README.rst index 85a6e76..dbbe5b0 100644 --- a/Behavioral/State/README.rst +++ b/Behavioral/State/README.rst @@ -20,27 +20,33 @@ Code You can also find this code on `GitHub`_ -ContextOrder.php +OrderContext.php -.. literalinclude:: ContextOrder.php +.. literalinclude:: OrderContext.php :language: php :linenos: -StateOrder.php +State.php -.. literalinclude:: StateOrder.php +.. literalinclude:: State.php :language: php :linenos: -ShippingOrder.php +StateCreated.php -.. literalinclude:: ShippingOrder.php +.. literalinclude:: StateCreated.php :language: php :linenos: -CreateOrder.php +StateShipped.php -.. literalinclude:: CreateOrder.php +.. literalinclude:: StateShipped.php + :language: php + :linenos: + +StateDone.php + +.. literalinclude:: StateDone.php :language: php :linenos: diff --git a/Behavioral/State/ShippingOrder.php b/Behavioral/State/ShippingOrder.php deleted file mode 100644 index 06032eb..0000000 --- a/Behavioral/State/ShippingOrder.php +++ /dev/null @@ -1,16 +0,0 @@ -setStatus('shipping'); - } - - protected function done() - { - $this->setStatus('completed'); - } -} diff --git a/Behavioral/State/State.php b/Behavioral/State/State.php new file mode 100644 index 0000000..a6d4218 --- /dev/null +++ b/Behavioral/State/State.php @@ -0,0 +1,10 @@ +setState(new StateShipped()); + } + + public function toString(): string + { + return 'created'; + } +} diff --git a/Behavioral/State/StateDone.php b/Behavioral/State/StateDone.php new file mode 100644 index 0000000..355aa7e --- /dev/null +++ b/Behavioral/State/StateDone.php @@ -0,0 +1,16 @@ +details['status'] = $status; - $this->details['updatedTime'] = time(); - } - - protected function getStatus(): string - { - return $this->details['status']; - } -} diff --git a/Behavioral/State/StateShipped.php b/Behavioral/State/StateShipped.php new file mode 100644 index 0000000..f891b00 --- /dev/null +++ b/Behavioral/State/StateShipped.php @@ -0,0 +1,16 @@ +setState(new StateDone()); + } + + public function toString(): string + { + return 'shipped'; + } +} diff --git a/Behavioral/State/Tests/StateTest.php b/Behavioral/State/Tests/StateTest.php index 834c02c..1bb36a7 100644 --- a/Behavioral/State/Tests/StateTest.php +++ b/Behavioral/State/Tests/StateTest.php @@ -2,30 +2,42 @@ namespace DesignPatterns\Behavioral\State\Tests; -use DesignPatterns\Behavioral\State\ContextOrder; -use DesignPatterns\Behavioral\State\CreateOrder; +use DesignPatterns\Behavioral\State\OrderContext; use PHPUnit\Framework\TestCase; class StateTest extends TestCase { - public function testCanShipCreatedOrder() + public function testIsCreatedWithStateCreated() { - $order = new CreateOrder(); - $contextOrder = new ContextOrder(); - $contextOrder->setState($order); - $contextOrder->done(); + $orderContext = OrderContext::create(); - $this->assertEquals('shipping', $contextOrder->getStatus()); + $this->assertEquals('created', $orderContext->toString()); } - public function testCanCompleteShippedOrder() + public function testCanProceedToStateShipped() { - $order = new CreateOrder(); - $contextOrder = new ContextOrder(); - $contextOrder->setState($order); - $contextOrder->done(); - $contextOrder->done(); + $contextOrder = OrderContext::create(); + $contextOrder->proceedToNext(); - $this->assertEquals('completed', $contextOrder->getStatus()); + $this->assertEquals('shipped', $contextOrder->toString()); + } + + public function testCanProceedToStateDone() + { + $contextOrder = OrderContext::create(); + $contextOrder->proceedToNext(); + $contextOrder->proceedToNext(); + + $this->assertEquals('done', $contextOrder->toString()); + } + + public function testStateDoneIsTheLastPossibleState() + { + $contextOrder = OrderContext::create(); + $contextOrder->proceedToNext(); + $contextOrder->proceedToNext(); + $contextOrder->proceedToNext(); + + $this->assertEquals('done', $contextOrder->toString()); } } From 0f4da347d4e67cb4a620a7fa47107eb2db373739 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Thu, 14 Jun 2018 22:56:13 +0200 Subject: [PATCH 19/45] fixed Proxy tests --- Structural/Proxy/Tests/ProxyTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Structural/Proxy/Tests/ProxyTest.php b/Structural/Proxy/Tests/ProxyTest.php index 4e7a4a3..1fe363c 100644 --- a/Structural/Proxy/Tests/ProxyTest.php +++ b/Structural/Proxy/Tests/ProxyTest.php @@ -13,12 +13,12 @@ class ProxyTest extends TestCase $bankAccount->deposit(30); // this time balance is being calculated - $this->assertEquals(0, $bankAccount->getBalance()); + $this->assertEquals(30, $bankAccount->getBalance()); // inheritance allows for BankAccountProxy to behave to an outsider exactly like ServerBankAccount $bankAccount->deposit(50); // this time the previously calculated balance is returned again without re-calculating it - $this->assertEquals(0, $bankAccount->getBalance()); + $this->assertEquals(30, $bankAccount->getBalance()); } } From f6d845e59e3bb8686a711adc38b7d7f50b9bf707 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Thu, 14 Jun 2018 23:02:18 +0200 Subject: [PATCH 20/45] badges are now the same for md and rst --- README.md | 1 + README.rst | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/README.md b/README.md index 6fd823c..51cead6 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # DesignPatternsPHP [![Build Status](https://travis-ci.org/domnikl/DesignPatternsPHP.svg?branch=master)](https://travis-ci.org/domnikl/DesignPatternsPHP) +[![Documentation Status](https://readthedocs.org/projects/designpatternsphp/badge/?version=latest)](https://readthedocs.org/projects/designpatternsphp/?badge=latest) [![Donate](https://img.shields.io/badge/donate-paypal-blue.svg?style=flat-square)](https://paypal.me/DominikLiebler) [Read the Docs of DesignPatternsPHP](http://designpatternsphp.readthedocs.org) diff --git a/README.rst b/README.rst index bfbaef5..027c790 100644 --- a/README.rst +++ b/README.rst @@ -4,6 +4,10 @@ DesignPatternsPHP ================= +.. image:: https://travis-ci.org/domnikl/DesignPatternsPHP.svg?branch=master + :target: https://travis-ci.org/domnikl/DesignPatternsPHP + :alt: Build Status + .. image:: https://readthedocs.org/projects/designpatternsphp/badge/?version=latest :target: https://readthedocs.org/projects/designpatternsphp/?badge=latest :alt: Documentation Status From bca6af02c05babeab3e7a0d272a944947b1328eb Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Fri, 15 Jun 2018 18:18:26 +0200 Subject: [PATCH 21/45] refactored Factory Method pattern --- Creational/FactoryMethod/Bicycle.php | 16 - Creational/FactoryMethod/CarFerrari.php | 16 - Creational/FactoryMethod/CarMercedes.php | 21 - Creational/FactoryMethod/FactoryMethod.php | 19 - Creational/FactoryMethod/FileLogger.php | 21 + .../FactoryMethod/FileLoggerFactory.php | 21 + Creational/FactoryMethod/GermanFactory.php | 22 - Creational/FactoryMethod/ItalianFactory.php | 18 - Creational/FactoryMethod/Logger.php | 8 + Creational/FactoryMethod/LoggerFactory.php | 8 + Creational/FactoryMethod/README.rst | 36 +- Creational/FactoryMethod/StdoutLogger.php | 11 + .../FactoryMethod/StdoutLoggerFactory.php | 11 + .../FactoryMethod/Tests/FactoryMethodTest.php | 51 +- Creational/FactoryMethod/VehicleInterface.php | 8 - .../FactoryMethod/uml/FactoryMethod.uml | 64 +- Creational/FactoryMethod/uml/uml.png | Bin 61777 -> 52910 bytes Creational/FactoryMethod/uml/uml.svg | 1024 +---------------- .../Creational/FactoryMethod/README.po | 2 +- .../Creational/FactoryMethod/README.po | 6 +- .../Creational/FactoryMethod/README.po | 2 +- .../Creational/FactoryMethod/README.po | 2 +- .../Creational/FactoryMethod/README.po | 2 +- .../Creational/FactoryMethod/README.po | 4 +- .../Creational/FactoryMethod/README.po | 2 +- .../Creational/FactoryMethod/README.po | 2 +- .../Creational/FactoryMethod/README.po | 2 +- 27 files changed, 201 insertions(+), 1198 deletions(-) delete mode 100644 Creational/FactoryMethod/Bicycle.php delete mode 100644 Creational/FactoryMethod/CarFerrari.php delete mode 100644 Creational/FactoryMethod/CarMercedes.php delete mode 100644 Creational/FactoryMethod/FactoryMethod.php create mode 100644 Creational/FactoryMethod/FileLogger.php create mode 100644 Creational/FactoryMethod/FileLoggerFactory.php delete mode 100644 Creational/FactoryMethod/GermanFactory.php delete mode 100644 Creational/FactoryMethod/ItalianFactory.php create mode 100644 Creational/FactoryMethod/Logger.php create mode 100644 Creational/FactoryMethod/LoggerFactory.php create mode 100644 Creational/FactoryMethod/StdoutLogger.php create mode 100644 Creational/FactoryMethod/StdoutLoggerFactory.php delete mode 100644 Creational/FactoryMethod/VehicleInterface.php diff --git a/Creational/FactoryMethod/Bicycle.php b/Creational/FactoryMethod/Bicycle.php deleted file mode 100644 index 95aacbf..0000000 --- a/Creational/FactoryMethod/Bicycle.php +++ /dev/null @@ -1,16 +0,0 @@ -color = $rgb; - } -} diff --git a/Creational/FactoryMethod/CarFerrari.php b/Creational/FactoryMethod/CarFerrari.php deleted file mode 100644 index dfb9eca..0000000 --- a/Creational/FactoryMethod/CarFerrari.php +++ /dev/null @@ -1,16 +0,0 @@ -color = $rgb; - } -} diff --git a/Creational/FactoryMethod/CarMercedes.php b/Creational/FactoryMethod/CarMercedes.php deleted file mode 100644 index bc6e337..0000000 --- a/Creational/FactoryMethod/CarMercedes.php +++ /dev/null @@ -1,21 +0,0 @@ -color = $rgb; - } - - public function addAMGTuning() - { - // do additional tuning here - } -} diff --git a/Creational/FactoryMethod/FactoryMethod.php b/Creational/FactoryMethod/FactoryMethod.php deleted file mode 100644 index d999f7b..0000000 --- a/Creational/FactoryMethod/FactoryMethod.php +++ /dev/null @@ -1,19 +0,0 @@ -createVehicle($type); - $obj->setColor('black'); - - return $obj; - } -} diff --git a/Creational/FactoryMethod/FileLogger.php b/Creational/FactoryMethod/FileLogger.php new file mode 100644 index 0000000..96aaa22 --- /dev/null +++ b/Creational/FactoryMethod/FileLogger.php @@ -0,0 +1,21 @@ +filePath = $filePath; + } + + public function log(string $message) + { + file_put_contents($this->filePath, $message . PHP_EOL, FILE_APPEND); + } +} diff --git a/Creational/FactoryMethod/FileLoggerFactory.php b/Creational/FactoryMethod/FileLoggerFactory.php new file mode 100644 index 0000000..6922c00 --- /dev/null +++ b/Creational/FactoryMethod/FileLoggerFactory.php @@ -0,0 +1,21 @@ +filePath = $filePath; + } + + public function createLogger(): Logger + { + return new FileLogger($this->filePath); + } +} diff --git a/Creational/FactoryMethod/GermanFactory.php b/Creational/FactoryMethod/GermanFactory.php deleted file mode 100644 index 7abb750..0000000 --- a/Creational/FactoryMethod/GermanFactory.php +++ /dev/null @@ -1,22 +0,0 @@ -addAMGTuning(); - - return $carMercedes; - default: - throw new \InvalidArgumentException("$type is not a valid vehicle"); - } - } -} diff --git a/Creational/FactoryMethod/ItalianFactory.php b/Creational/FactoryMethod/ItalianFactory.php deleted file mode 100644 index 58a54f4..0000000 --- a/Creational/FactoryMethod/ItalianFactory.php +++ /dev/null @@ -1,18 +0,0 @@ -create(FactoryMethod::CHEAP); + $loggerFactory = new StdoutLoggerFactory(); + $logger = $loggerFactory->createLogger(); - $this->assertInstanceOf(Bicycle::class, $result); + $this->assertInstanceOf(StdoutLogger::class, $logger); } - public function testCanCreateFastVehicleInGermany() + public function testCanCreateFileLogging() { - $factory = new GermanFactory(); - $result = $factory->create(FactoryMethod::FAST); + $loggerFactory = new FileLoggerFactory(sys_get_temp_dir()); + $logger = $loggerFactory->createLogger(); - $this->assertInstanceOf(CarMercedes::class, $result); - } - - public function testCanCreateCheapVehicleInItaly() - { - $factory = new ItalianFactory(); - $result = $factory->create(FactoryMethod::CHEAP); - - $this->assertInstanceOf(Bicycle::class, $result); - } - - public function testCanCreateFastVehicleInItaly() - { - $factory = new ItalianFactory(); - $result = $factory->create(FactoryMethod::FAST); - - $this->assertInstanceOf(CarFerrari::class, $result); - } - - /** - * @expectedException \InvalidArgumentException - * @expectedExceptionMessage spaceship is not a valid vehicle - */ - public function testUnknownType() - { - (new ItalianFactory())->create('spaceship'); + $this->assertInstanceOf(FileLogger::class, $logger); } } diff --git a/Creational/FactoryMethod/VehicleInterface.php b/Creational/FactoryMethod/VehicleInterface.php deleted file mode 100644 index 9f5fb15..0000000 --- a/Creational/FactoryMethod/VehicleInterface.php +++ /dev/null @@ -1,8 +0,0 @@ - PHP - \DesignPatterns\Creational\FactoryMethod\GermanFactory + \DesignPatterns\Creational\FactoryMethod\StdoutLoggerFactory - \DesignPatterns\Creational\FactoryMethod\FactoryMethod - \DesignPatterns\Creational\FactoryMethod\Bicycle - \DesignPatterns\Creational\FactoryMethod\CarFerrari - \DesignPatterns\Creational\FactoryMethod\ItalianFactory - \DesignPatterns\Creational\FactoryMethod\CarMercedes - \DesignPatterns\Creational\FactoryMethod\GermanFactory - \DesignPatterns\Creational\FactoryMethod\VehicleInterface + \DesignPatterns\Creational\FactoryMethod\LoggerFactory + \DesignPatterns\Creational\FactoryMethod\StdoutLoggerFactory + \DesignPatterns\Creational\FactoryMethod\FileLogger + \DesignPatterns\Creational\FactoryMethod\FileLoggerFactory + \DesignPatterns\Creational\FactoryMethod\StdoutLogger + \DesignPatterns\Creational\FactoryMethod\Logger - + - - - + + + - - - - - + + + + + - - - - - + - - - + + + - - - - - + + + + + - - + + + \DesignPatterns\Creational\FactoryMethod\FileLogger + \DesignPatterns\Creational\FactoryMethod\StdoutLogger + \DesignPatterns\Creational\FactoryMethod\Logger + Fields + Constants Constructors Methods diff --git a/Creational/FactoryMethod/uml/uml.png b/Creational/FactoryMethod/uml/uml.png index b705b228bc82b2168e8232745340f9732e7d9954..8f33b88e1a69a33299398548be7bfa87166b063e 100644 GIT binary patch literal 52910 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 K~1MShSP(tSd%jJ4uFLkn^1E!gp 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%0D$HBzsUPwO2o=?_PQv!HjIpXx&V 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 c53||h^9;A!WN~2LpNX{ev - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - createVehicle(type) - - - - - - - - - - - - - create(type) - - - - - - - - - - - - - FactoryMethod - - - FactoryMethod - - - - - - - - - - - - - - - - - - - - - - createVehicle(type) - - - - - - - - - - - - - - - - create(type) - - - - - - - - - - - - - FactoryMethod - - - FactoryMethod - - - - - - - - - - - - - - - - - - - - - - - - - color - - - - - - - - - - - - - - - - setColor(rgb) - - - - - - - - - - - - - Bicycle - - - Bicycle - - - - - - - - - - - - - - - - - - - - - - color - - - - - - - - - - - - - - - - - - - setColor(rgb) - - - - - - - - - - - - - Bicycle - - - Bicycle - - - - - - - - - - - - - - - - - - - - - - - - - color - - - - - - - - - - - - - - - - setColor(rgb) - - - - - - - - - - - - - CarFerrari - - - CarFerrari - - - - - - - - - - - - - - - - - - - - - - color - - - - - - - - - - - - - - - - - - - setColor(rgb) - - - - - - - - - - - - - CarFerrari - - - CarFerrari - - - - - - - - - - - - - - - - - - - - - - createVehicle(type) - - - - - - - - - - - - - ItalianFactory - - - ItalianFactory - - - - - - - - - - - - - - - - - - - - - - createVehicle(type) - - - - - - - - - - - - - ItalianFactory - - - ItalianFactory - - - - - - - - - - - - - - - - - - - - - - - - - color - - - - - - - - - - - - - - - - setColor(rgb) - - - - - - - - - - - - - addAMGTuning() - - - - - - - - - - - - - CarMercedes - - - CarMercedes - - - - - - - - - - - - - - - - - - - - - - color - - - - - - - - - - - - - - - - - - - setColor(rgb) - - - - - - - - - - - - - - - - addAMGTuning() - - - - - - - - - - - - - CarMercedes - - - CarMercedes - - - - - - - - - - - - - - - - - - - - - - createVehicle(type) - - - - - - - - - - - - - GermanFactory - - - GermanFactory - - - - - - - - - - - - - - - - - - - - - - createVehicle(type) - - - - - - - - - - - - - GermanFactory - - - GermanFactory - - - - - - - - - - - - - - - - - - - - - - setColor(rgb) - - - - - - - - - - - - - VehicleInterface - - - VehicleInterface - - - - - - - - - - - - - - - - - - - - - - setColor(rgb) - - - - - - - - - - - - - VehicleInterface - - - VehicleInterface - - - - - - - - - - - - - - - - - + + + PHP + \DesignPatterns\Creational\FactoryMethod\StdoutLoggerFactory + + \DesignPatterns\Creational\FactoryMethod\LoggerFactory + \DesignPatterns\Creational\FactoryMethod\StdoutLoggerFactory + \DesignPatterns\Creational\FactoryMethod\FileLogger + \DesignPatterns\Creational\FactoryMethod\FileLoggerFactory + \DesignPatterns\Creational\FactoryMethod\StdoutLogger + \DesignPatterns\Creational\FactoryMethod\Logger + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/locale/ca/LC_MESSAGES/Creational/FactoryMethod/README.po b/locale/ca/LC_MESSAGES/Creational/FactoryMethod/README.po index 75c9f89..d409bec 100644 --- a/locale/ca/LC_MESSAGES/Creational/FactoryMethod/README.po +++ b/locale/ca/LC_MESSAGES/Creational/FactoryMethod/README.po @@ -32,7 +32,7 @@ msgstr "" #: ../../Creational/FactoryMethod/README.rst:12 msgid "" "This pattern is a \"real\" Design Pattern because it achieves the " -"\"Dependency Inversion Principle\" a.k.a the \"D\" in S.O.L.I.D principles." +"Dependency Inversion principle a.k.a the \"D\" in SOLID principles." msgstr "" #: ../../Creational/FactoryMethod/README.rst:15 diff --git a/locale/de/LC_MESSAGES/Creational/FactoryMethod/README.po b/locale/de/LC_MESSAGES/Creational/FactoryMethod/README.po index 0ce8e40..080c906 100644 --- a/locale/de/LC_MESSAGES/Creational/FactoryMethod/README.po +++ b/locale/de/LC_MESSAGES/Creational/FactoryMethod/README.po @@ -39,10 +39,10 @@ msgstr "" #: ../../Creational/FactoryMethod/README.rst:12 msgid "" "This pattern is a \"real\" Design Pattern because it achieves the " -"\"Dependency Inversion Principle\" a.k.a the \"D\" in S.O.L.I.D principles." +"Dependency Inversion principle a.k.a the \"D\" in SOLID principles." msgstr "" -"Dieses Muster ist ein \"echtes\" Muster, da es das \"D\" in S.O.L.I.D. " -"implementiert, das \"Dependency Inversion Prinzip\"." +"Dieses Muster ist ein \"echtes\" Muster, da es das \"D\" in SOLID " +"implementiert, das Dependency Inversion Prinzip." #: ../../Creational/FactoryMethod/README.rst:15 msgid "" diff --git a/locale/es/LC_MESSAGES/Creational/FactoryMethod/README.po b/locale/es/LC_MESSAGES/Creational/FactoryMethod/README.po index 274f32f..9ff261a 100644 --- a/locale/es/LC_MESSAGES/Creational/FactoryMethod/README.po +++ b/locale/es/LC_MESSAGES/Creational/FactoryMethod/README.po @@ -36,7 +36,7 @@ msgstr "" #: ../../Creational/FactoryMethod/README.rst:12 msgid "" "This pattern is a \"real\" Design Pattern because it achieves the " -"\"Dependency Inversion Principle\" a.k.a the \"D\" in S.O.L.I.D principles." +"Dependency Inversion principle a.k.a the \"D\" in SOLID principles." msgstr "" #: ../../Creational/FactoryMethod/README.rst:15 diff --git a/locale/es_MX/LC_MESSAGES/Creational/FactoryMethod/README.po b/locale/es_MX/LC_MESSAGES/Creational/FactoryMethod/README.po index 161f644..8945664 100644 --- a/locale/es_MX/LC_MESSAGES/Creational/FactoryMethod/README.po +++ b/locale/es_MX/LC_MESSAGES/Creational/FactoryMethod/README.po @@ -38,7 +38,7 @@ msgstr "" #: ../../Creational/FactoryMethod/README.rst:12 msgid "" "This pattern is a \"real\" Design Pattern because it achieves the Dependency " -"Inversion Principle\" a.k.a the \"D\" in S.O.L.I.D principles." +"Dependency Inversion principle a.k.a the \"D\" in SOLID principles." msgstr "" "Este es un patrón \"real\" de diseño porque realiza el Principio de " "Inversión de Dependencia, también conocido como la \"D\" de los principios S." diff --git a/locale/pl/LC_MESSAGES/Creational/FactoryMethod/README.po b/locale/pl/LC_MESSAGES/Creational/FactoryMethod/README.po index 1752486..9e5980a 100644 --- a/locale/pl/LC_MESSAGES/Creational/FactoryMethod/README.po +++ b/locale/pl/LC_MESSAGES/Creational/FactoryMethod/README.po @@ -35,7 +35,7 @@ msgstr "" #: ../../Creational/FactoryMethod/README.rst:12 msgid "" "This pattern is a \"real\" Design Pattern because it achieves the " -"\"Dependency Inversion Principle\" a.k.a the \"D\" in S.O.L.I.D principles." +"Dependency Inversion principle a.k.a the \"D\" in SOLID principles." msgstr "" "Ten wzorzec implementuje jedną z podstawowych zasad programowania obiektowego `SOLID `_ - \"D\" - zasadę odwrócenia zależności (ang. `Dependency inversion principle`)." diff --git a/locale/pt_BR/LC_MESSAGES/Creational/FactoryMethod/README.po b/locale/pt_BR/LC_MESSAGES/Creational/FactoryMethod/README.po index 9797e55..5e18e72 100644 --- a/locale/pt_BR/LC_MESSAGES/Creational/FactoryMethod/README.po +++ b/locale/pt_BR/LC_MESSAGES/Creational/FactoryMethod/README.po @@ -35,10 +35,10 @@ msgstr "" #: ../../Creational/FactoryMethod/README.rst:12 msgid "" "This pattern is a \"real\" Design Pattern because it achieves the " -"\"Dependency Inversion Principle\" a.k.a the \"D\" in S.O.L.I.D principles." +"Dependency Inversion principle a.k.a the \"D\" in SOLID principles." msgstr "" "Este padrão é um padrão de projetos de software \"real\" já que " -"trata o \"Princípio da inversão de dependências\" o \"D\" nos princípios S.O.L.I.D" +"trata o \"Princípio da inversão de dependências\" o \"D\" nos princípios SOLID" #: ../../Creational/FactoryMethod/README.rst:15 msgid "" diff --git a/locale/ru/LC_MESSAGES/Creational/FactoryMethod/README.po b/locale/ru/LC_MESSAGES/Creational/FactoryMethod/README.po index 26f030d..4d41e36 100644 --- a/locale/ru/LC_MESSAGES/Creational/FactoryMethod/README.po +++ b/locale/ru/LC_MESSAGES/Creational/FactoryMethod/README.po @@ -37,7 +37,7 @@ msgstr "" #: ../../Creational/FactoryMethod/README.rst:12 msgid "" "This pattern is a \"real\" Design Pattern because it achieves the " -"\"Dependency Inversion Principle\" a.k.a the \"D\" in S.O.L.I.D principles." +"Dependency Inversion principle a.k.a the \"D\" in SOLID principles." msgstr "" "Этот паттерн является «настоящим» Шаблоном Проектирования, потому что он " "следует «Принципу инверсии зависимостей\" ака \"D\" в `S.O.L.I.D Date: Fri, 15 Jun 2018 18:47:18 +0200 Subject: [PATCH 22/45] refactored AbstractFactory --- .../AbstractFactory/AbstractFactory.php | 12 - Creational/AbstractFactory/CsvParser.php | 35 ++ Creational/AbstractFactory/HtmlFactory.php | 11 - Creational/AbstractFactory/HtmlText.php | 8 - Creational/AbstractFactory/JsonFactory.php | 11 - Creational/AbstractFactory/JsonParser.php | 11 + Creational/AbstractFactory/JsonText.php | 8 - Creational/AbstractFactory/Parser.php | 8 + Creational/AbstractFactory/ParserFactory.php | 16 + Creational/AbstractFactory/README.rst | 28 +- .../Tests/AbstractFactoryTest.php | 23 +- Creational/AbstractFactory/Text.php | 16 - .../AbstractFactory/uml/AbstractFactory.uml | 53 +- Creational/AbstractFactory/uml/uml.png | Bin 34026 -> 48724 bytes Creational/AbstractFactory/uml/uml.svg | 552 ++---------------- 15 files changed, 145 insertions(+), 647 deletions(-) delete mode 100644 Creational/AbstractFactory/AbstractFactory.php create mode 100644 Creational/AbstractFactory/CsvParser.php delete mode 100644 Creational/AbstractFactory/HtmlFactory.php delete mode 100644 Creational/AbstractFactory/HtmlText.php delete mode 100644 Creational/AbstractFactory/JsonFactory.php create mode 100644 Creational/AbstractFactory/JsonParser.php delete mode 100644 Creational/AbstractFactory/JsonText.php create mode 100644 Creational/AbstractFactory/Parser.php create mode 100644 Creational/AbstractFactory/ParserFactory.php delete mode 100644 Creational/AbstractFactory/Text.php diff --git a/Creational/AbstractFactory/AbstractFactory.php b/Creational/AbstractFactory/AbstractFactory.php deleted file mode 100644 index 85bd878..0000000 --- a/Creational/AbstractFactory/AbstractFactory.php +++ /dev/null @@ -1,12 +0,0 @@ -skipHeaderLine = $skipHeaderLine; + } + + public function parse(string $input): array + { + $headerWasParsed = false; + $parsedLines = []; + + foreach (explode(PHP_EOL, $input) as $line) { + if (!$headerWasParsed && $this->skipHeaderLine === self::OPTION_CONTAINS_HEADER) { + continue; + } + + $parsedLines[] = str_getcsv($line); + } + + return $parsedLines; + } +} diff --git a/Creational/AbstractFactory/HtmlFactory.php b/Creational/AbstractFactory/HtmlFactory.php deleted file mode 100644 index ba44216..0000000 --- a/Creational/AbstractFactory/HtmlFactory.php +++ /dev/null @@ -1,11 +0,0 @@ -createText('foobar'); + $factory = new ParserFactory(); + $parser = $factory->createCsvParser(CsvParser::OPTION_CONTAINS_HEADER); - $this->assertInstanceOf(HtmlText::class, $text); + $this->assertInstanceOf(CsvParser::class, $parser); } - public function testCanCreateJsonText() + public function testCanCreateJsonParser() { - $factory = new JsonFactory(); - $text = $factory->createText('foobar'); + $factory = new ParserFactory(); + $parser = $factory->createJsonParser(); - $this->assertInstanceOf(JsonText::class, $text); + $this->assertInstanceOf(JsonParser::class, $parser); } } diff --git a/Creational/AbstractFactory/Text.php b/Creational/AbstractFactory/Text.php deleted file mode 100644 index 3573801..0000000 --- a/Creational/AbstractFactory/Text.php +++ /dev/null @@ -1,16 +0,0 @@ -text = $text; - } -} diff --git a/Creational/AbstractFactory/uml/AbstractFactory.uml b/Creational/AbstractFactory/uml/AbstractFactory.uml index 224cc06..bcd4efb 100644 --- a/Creational/AbstractFactory/uml/AbstractFactory.uml +++ b/Creational/AbstractFactory/uml/AbstractFactory.uml @@ -1,50 +1,35 @@ PHP - \DesignPatterns\Creational\AbstractFactory\AbstractFactory + \DesignPatterns\Creational\AbstractFactory\CsvParser - \DesignPatterns\Creational\AbstractFactory\JsonFactory - \DesignPatterns\Creational\AbstractFactory\AbstractFactory - \DesignPatterns\Creational\AbstractFactory\HtmlFactory - \DesignPatterns\Creational\AbstractFactory\JsonText - \DesignPatterns\Creational\AbstractFactory\HtmlText - \DesignPatterns\Creational\AbstractFactory\Text + \DesignPatterns\Creational\AbstractFactory\Parser + \DesignPatterns\Creational\AbstractFactory\ParserFactory + \DesignPatterns\Creational\AbstractFactory\JsonParser + \DesignPatterns\Creational\AbstractFactory\CsvParser - - - - - + + + + + - - - - - - - + - - - - - - - - - + + + - - - \DesignPatterns\Creational\AbstractFactory\AbstractFactory - + + - Methods - Constants Fields + Constants + Constructors + Methods private diff --git a/Creational/AbstractFactory/uml/uml.png b/Creational/AbstractFactory/uml/uml.png index 68d3a8be446b031e27e514d6227027d208a9fc5b..fc1db5dd52e2986b2bebc2b6f7562438322bb91f 100644 GIT binary patch literal 48724 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

nX0=EE&_$zNpR1i|TE%$C9 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 dmug!d5r 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�Bok?Fd%(|1w#DM5TAneIo}Kc9*gR^$pu%IzFWA%3idSIj7JR-e`qvY zbo+#^qi@$kXMyHdm)o@TON4(|_x7tQ>he(kS)yb`mYF+ZH}*>9 zeCjA)Oe0`f9tyOo0mc{@Cfj2z*?WGmry7xdKUQrY3bQj@3wr$Mc^L|x44#W4Hmlm% z#^#2|U-#Fg3!JBnNl5U1R8ia_D}}RjZ0+dd(^hhLct~KN_mf9J5~uX%Qvfr0E(sz$ zYY*9t;fzvRf6>Pn-!Dy5BI}PFnZ#%EmJ17PmN)vKc`vm3QpAoB`?No!t_5nl8v)op z{V)9D6>iW?H4rsTuN^N}r`XYIN#sCmU!wlcWFwxye5+xPmh4_zQZxRzz5`|BspO(9 z^W#kSg5E5j8nxximdamp$8~2AyW>$=#;75uXk+8vOe%Kl!o_7$Crazg%PGx2Q^fE3 zyl58@I8k+$dM|k9TbFLqXX+~Uq1 zjnCJv9Z`O#za9n3#lIN~ilNBs(XvoCQq*xDNGzb2kd$Lt>dVYytbX+h21zM&gXQP< z5B#LKJ-*;ADzeuvsIyhh*m*cRDt)4Z`dsaAy}cVJP<`-5O{LbP%DrZ=FV#^IWaPJO z6;=`IL`N=hqGDBUd-~Gv-KQ1VqkU?kH$2M89bRs#S(0acFu70CBcn@HcCGwQCM7KJ zy7UZ&LZO(lshpC{cbw-_nV2ge3u&{xR>LZnstnm`xK>t=_Y!J`H&N}exU|BFu5y;Y zBf;tGTR6BvJH7@)N4pyAi0(+7GzXOjJn}B^J6b6>Nfpg2bK!SdY|CmpZJudQtbWbd zVNr%2T#$F#XN-uxlvWu017GcYY8?`)WruIoaGZ^uoi?8_$)$cl!{NKHrz&vCc}`K<)69Rl9$q)MyqsIM`ia3v&0pXYnJ+qsuDrVu8%@kA5rD^HMEww&twg2 za=qctyE7A1t6twKM@q;!+N+aqw~=JFrzFg`+S&K31KA&-wXLS8NqkEXtfFRyz23DXxTT zapvAGb+C`A+Z@}o*9_b7NNl%+WsNz;rFa+GHr8OC6IdKk~Q@?*RlDcN^u zYV>He-${3g0#XxB5JVk`3JkLaiEejSe~bn#cNy^t+*Kx&)!BHjm-ENgES( zlU4^Kz^wCnPyDEgb40CdpzjeLiPIeFF(c1XiJfUaz0MjGRtzzl=Tho^$pJ2V#B}Y# zd81NS(yEj8uh}OVdd{|Ca<}zUipsn+dMoZ1lG^LwF51zKvwC1;=5HNK5~x**-WU_e zkdKNx%I;rMxCRtN&|38-6z;gpnVV~1a97~k|BFJ zDirDxqkdn%1}@WIyn0Yu?DTcsD}=aBdYX_wX~Ppg`6hZxpk~+P=QuC$Oi1Z8VFRV4`rI#I2QG{KC zgUcV$>#Zq)=rRr7*S{E_zDw9u(0;_g=jgjoSZG*d@C<$ENgq@eY=9Cgfz%Z&G!j#p zRPIW+SS$H66|nKcXrFKj8-4>(UU6)H(mZGlQO-4eNO4)8&&r9t$98RnJ^;8A3#e(4 z9guCW#_HZUk-$jjgwN)QFsDhS!DLgXlf$52CW3K@=1LYaq$D>t1GbxxVHIMh;5wK8 zXzg0IvZu2RZqA4;d%>iUr~XN?S6r={iDsK+Ng1-l4zgF#Npxz>9Ss&b$(3-OI_(Dy z4-Z&oSYJMuUfq>6{*kUJ*IenYe2A#`+Ip3|>(IMZTb0LFD3I+H)trf!(SucEPxHd{ zKack>Z$HkcYbIsYX4`jAr>*O&IZ~@N$iXRf?Io1_Jzs$v6!}O~*GEz0j!!yAN6$vi zgie8UbRXXI_-;%G7qhMyhCB$ManWOIAY~&9b!}&EA8`r7cXf)=+n4*^{TtO`#e-0?!A!Zyw>5`ny=B@tz|bBDdtq#u27_Z z>6h_D;|PlBNj!EO8A<}Cme5Xcp$TTPBU$Nm%Fc$V-Gb5es?acKnS)fKH$rO*EC6K& zlOLbnSCE<*+_X;=S?A>xNNO*B%Dosu%4)dc+HP>6vQPAmkJjpWea9jVz%NCyECWLmBAxVw~sA7Pbd|(-;|SsRp-IuN1iY;ZbeiiQ@QV< zi(O~OL2be(tA|GKoragc>as!MExCKAxroG(D#D=0Bfdk$sLAlvcL!3OUL{WEAA8E! z3!2kzTDAJUXUxMIg`m^u5jXE1H$BPn$Sj01MLFCTx~_8opRsuV}pY7vf^R$A?`xBdyMGl z+IxmI8seqji}Mtxk9)tTM?ALb#r-WGTV~Czx!MVc=7!{G|7aR25p1wNt%)4RWnR^2KP z3#``mPO?a^>r~dPVmFZ0WOipE-~ZtC2ijR3i%QK8w(8!IC6P~LGP-rSEyS9{R#sN# zCSH&I*2p++j$EZ?Gth3G)8`vM;Pr<|MLe{Z4j=o+gl+Xq%c`EwZE5%gHJ;bpg_3^^ z>E9xJ4YK{DHm`MVJ_085xf+69mk7JnQgvPxu&>W+72U$M7X8;W(*7ll6{cu!(q9yT z9Mk6;hAA_C7t_C_p&%Zxi3jY3fgqfp#8?*r7ytVK4%X@q0L@&$+8#K#?`g5l2c5*f zdGqNPoFC749aguE{P}_F6gN|Ax{n~7Sxv-SD=}7PNti12mo%2gSO>5H7yqJsET{eD zF`EP`|NY)11o z=jhQcNA81|GnXPA%AS$)F2x%JP@wnyy_w+~-bc&BM>XP~*t|QY_hlVxN{kcbq`0yB zJ0ODj>vY4C9T2|^*-x_w@jEqV!S`M7DQ8ZZaO`;?gqBrq7zYbIL~}cTn`v z9tc7nxalrfMWr2brX(!pGTdQ^7i%&R^_lF?UvjZ_u;&6FJ+0UeD^hz56x0J6Vr+SC=ijj%Mh< zGJn4|aB|81`V~$`kRLA^xTz1!mZEyx`k!JZmWSH{7g{2Bn6JI})XH&13v{xCrp=s) ziKeb0)^M5=jYFj?i@NP2!yt>+i4zkBcPMpBJZ4H5vt#HET4uEm-A~?xtqfeNyz;Xu z5ef|xCZ-YeuwNc5iVLS5Ls%F|Xr!Yim07L|yf3`H%;pTO2AiK8$Z+*hLwk>~8jKFm zW6I)>u1ED9w5tkaLihD%mz&Wlj_b?ehYf1?zPYpc`7^xbRVnnG$W{5NG7)k3?(0W&+`+(3^bV`DWY9mK636ImlY>xH9&zRozg7r%OihWyF9cWqlBp}Qs&5}1*Nd~GBiynSf~l`nUL##*GS?}tYe7G{{X$D6 zH6-Yzw}0J2Vsq~hubvl|glTKh>ZSdl;ZQNxk&@8FklBtITS7mZBZ)81pBRyea*t=6 z`C--Nb%{%9(!c=-V*I4hVa^=S+TgX&Wl@}+fu)fM%iW~C?|2uwejEk!(^ThFxp}x4 zjrZ8N9ZL%7br_0Jb=KUm8QEMK6d9C`F+f~hZgSv2lo;)-LYK?quc+(7ZjLfh53;Q+d$O|m;$G5(-x}p~qJSns zn`?@!a@73Ttns?w_BoOGInV;dp+coj=6F;d8d8%mhape5xGRQaB*jdc#)^>!nn+SjeeC{g%hB< ze_0ORgco=7AE6DYE4O>y8QkF&4Yj+GE~M%O;ms;yqQXZy&K&x{4MCj(e}nn9og!oE ziKn-k#NOEe3#3fzemOy3f=(#yhTha)Bj|1HE0nB{U;VLayTfxqS?^S&$a}Bwu}LY& zhviIrzwe&)QT^*x*XRzKG5td@x1DHtFh|Ou;3r<48cCb^o!Y>W7?vvR?u6Ahyb;~z z$WwitWrZ%0k3@ ze#yb%xV2#%0_KT%TvIJ1#5i&6B?s70$oK-;M%u(RyAL!Qk9Xi}GXy5P1=WaZ)OBc+ zzs1vcm6IhCKXb)^EEwsEE2*7);=JRz+kZ*rwMQ5suyPomZmrbN9(!0mVa#O%w8l7B zwN;yjNyE@A#@%43vHR>EP5gw8bKX6(N)?;pwEC97-nr@-ut@@x*@v*Vfuz&vD#d#^ zl&>YuwWCc5eTTIwCk@qgxN5U&HyvSH$dI!8SBu^rpSRBDOr0=3T`!&dMRwLy->`o8 zWhq6CWxTXK8nL@NHLhj%@dU3qeafrJpjf2};^k(aiGX-nThq~8K)ONEN3zCrDC}2pA4P+-aK_t4-?XH?pn3^d>CwJNZkekecLs z;!Nclas;`S+`XOW+E({1=q{I=YtQ~(?ZJiY3Ni7CqX9)fN&jyic`In*h6f-0gCc($ z3Iyjy2N0gT_|PAO-Ph?rfMo#0g>msI#DDD?*Pk7C0R{_@%@FwY5Bmfg()?8i@MaQ0 zkJClurfPl%I)B?$J4O4eFp|Z4*gCrOu^ZO2v(y>FGCEz-Sh__NxRnqR??a^LF}KlU zavZGH^6B$hwXgVVQn8AQ*apcQ98_yB(;DGpdmjofYy9hX)!%+s{_Xewzvuh)g&V*p zGqB7J+JRLM{%Q_cwvYd(Xww?C2Oa#wB2D-3I7#^r*>nCg3`fAYItS-n_R0ik4E~`J z;qQQcr$3buiWTyw%K(k|KQ!_z9MG5a{uJ2)MFD?`$UfFC7kEmuyeJf9Jd{8EV)&(_ zM~+;y=v*X3xz4khnXHF#1!=#?2D(ZA;)7r*gaa3AD19h6XNAt_yjwUuq~|p=Sk<@M-|4C7SplCDto@I2ZI^+Bv5V2=Nbf?m0Xxb(~vDhgjAmKo%_*u+(vx z;(sypKdAp^=>N9i{|_C+Wvc%Er)PiI{qMp6diF;c=RN!PLQjul5MkM_K33E@m$Vq$ z9p>ne*OBtx+_H37`OY)rt6jc-9kk&^&~^Q_x@O+p0GC@7FO`Tv8-s*hbpP}OfVDn6 z;o$~q0At2c&pV-%ek;cIVj2~J3|%iCK#f`H?7b3p`?;7##MLhFlt~&!iOVGW@dkn#PZxeqXu*3HxC!Ec@$^=)~fv{zIi+-`F`T*oNJI&yIe5wZK6@&sAx09NS% z)=k9kB8Z6mzROjpA)qEmh7j6T&+Pq-Ablo~0I z^`&umdD_7X#`+i;9is}4l7prZlhuR9LgUlP5k%TVyi`Q{>f)xCI0_G(&fPOA~$>l+tAURUs}JCPbeapDuFt%c(ldUu^h5jiOv z4&kNo{bj@H6mS`6nf+o~t#U#`chlrFff{o-SyFYwM-uKzZEtSctq+aV#k1AJrknUw z#O~ve5B|ViOE)grtdHCJJUD$OS~$@_E4siXe^|!1G3bNoHznvKhG%V;q=Y83&A=0 z@_UVYc0YvpN;*8z=BEt%8FSbW{lY?QmL{&etZY&%xNgcPe(o_Q9T+xJVA#@$?eKDX zwUmGL_%p8c2u8H!Uhlrs80U-W6!G0s#^J<7lxX$#(pWHpMhNLVataME;9Fq~VI{K2 zWkz}|)Ll&L_*yBrbk)g8+c-pQEyg5BYW!KxOb2RnFAH(S+i$9m%%tZ|!Un=|6QOcY zm+#V_{8ZH|O1y&oq^B1t;kyS~b`zpLZ0JX8h-Z#Ca(cmwintJUmYy%ZaPAr#s5=c8 z53h7*+8%bNw)w8kLvK<~JMQD_cuS`lIf;wV;J8J~TF!x3jP6iu$?#jf(J+tVtP*m4 zqHxtk=UEIV&t7p|r^fQ)t@pZ45eN&{EUi}kLIJ1bhqyQ(Mfw2#Wv1pC@yPPShJ9qY z*9sD~f<6U;65Tf(1@~se$*MFviuRF_Mpvs2W-dF$kxN`KVpy@p%`uptZ2Nf^(rh=@ z6SpE5BP#pAHM>J93GX$ZC&qky_krKqVO(!BjXvQhOnmA?dO!uR=8L9Z4sqU%SInmF*~ZHtK*6Or&B?d+}@Cf{IfroR$W-Q`>aE z#1Pa!U((ku3dSw+YoEi-@%)}G%CsqZI@nQlc7x@>Bt=iw{)mhd&>dgvadR|eZ~L!A z?edsFj~2)82y9>3A%^quRqt`06+QzK6i2!9m|RnZs86j?U5leco05!AzGZxr=u}Ul zzEE}I7*UtbTRK9WB@_h~;YokfVBb^6 z{PeO8sN39phqmmd|Gl6B7s%TO4B$TEgtNGcepp5m@cA5mtt)p8%=2C>0Kx1mek%@F z``wBj;Wmc%%&8+93vy1$a9T_D^DQFln%*EuGhx@Lm-TKv&zIq{V%X(cVhX&wn;DJ#`2itS?wL)AzmauzBT zgc`Qz0`jIEjjqA_`j|%SY?ac3YJ+b{RA&rb22=e^OpIaGLG{C?Lm8Gj>?fcJ^Dv4l zga&(A^O|lnuEJDMYknqtaF}I@o|U)=|E~oEc<&ulZ|nWz^jxVlnENby`S){WeOp$x zvVO+9h^yIVdVg8&e*eB)F?JiT_{C*U61Ea+0OV7Asq@uiSC03zB$JdTv z3_<8@U}O_)kUvI-);i|P@zvJGNV&JY1uWzt(D0Y5eCYH z9(G|$b!4H^l!;2(XHfgex6y;Dt!eqAw4cfe>WzGf-bT;ATQ#Cw`NHj;5BZ@`Bf9;y z*~$+(8jMhs+)$ZSaV)bcy!Kvoa1L)_|2fP*9u61`Uw%X;EDwI5l<+IxyxyDwbsU+x zTF)bZ*ZhrTaeIEX#n1Q018)@`?zOFaE7$qSGSM|=8k?d^Rz}KUno*I=V1BQ)awe)G z9$>GCFaT+(xIvN5XgKlq&h8ZeXIFz6hmhG9PWFYhy;DiS;f*e(FeEJLjBnJk($KLE zvD9`Swv!hM-T$nz(0)k@__q!hE5v-K47Fs5dGJzH`lZ=j+?>@XU~iKnb5~OqhhjaF z!s_8SH-&9&+gd_C1K7@pUVXEYq04(F>3>$5JqRxBXRvimVMN8`>xACa+h9Va24O^A zhL6eoH}dzoeD~)eAH4~&ni9}y;6&Al<<069Pt~!elIQ!|n-b4DSHxKcjbE;s17BVW z?f?ysI_N&lo27a2XaYn@^K~U5ub+7PA+EJ`*^%PSU=ir?o12f9Z*n-K1R8Fc6Ld9D zCjiSkI);_KU6?4s@<=7M(}~l&Ug`vOQy9IQQ`D((OG2tTHc+)ke>v*c7E2c}>>m9x zPMx??5VO9f<22guGeu5|2$nQ*NZFFARh*;p-Y?twnsnL8szfl6kE>fhZqX29=8Q^A0t~%P}jSM5}_r_kq;N-{vYi zS4Y0C9B$$@4mgT_prVYT4Pgy+sF4$07p}0ZTnFjV?k9r7 zwP_gYEJSucfEyPl0EBs)<((96iV%+G6!Bg97e|pSCSHTxJ(#w>q3J|UBt-V`ht!b8 zYeb3u+AwL?M|WPH{8k&dtx1bA*e_;(wF{Z4r|xd&nZqAxGfrF9Q9&zuq!}uF=MgaS z*MicKIq~iDRW%i?m6H5(`%jc#iY8vz=OtgSkrZ#!2aJF1sU{_AjAb09ME_fWs@mu_pOj}0A#@ef&1+r)@p!s>!qyqxHQ z>OvMpWyZp>6akA!=As2~N!upTEs2aILoFJKu;;-(`)8yrBT>DFE~8S$yD*7t3ujy= zpxKLQ5tfOFWmf)R*Tw1GbkZDIo+1iWE; zF9G^)Mj-*?^^CZpa^}6W#tDV&C&h_<<6-PP+1vx{e!1NvcQ8bQmY(cu^Q_}mM^#|&-Q@V3w)V3s>I94B89FJSsIu3>ou9fOT zd#=^E-2Y;J%Mw^qu`(csc*S=PLJtAAE8#2g>H3NpdZJq%IJmT-82PH&S(!;j?U@$= zEsFU(qgE(AGV=kH=htk`eS6rRJuyM`!BbfH>QHL+OT@FzJ(}Ho6T@NZJlY3bb1^o? zW4eywu>JB@y^Xv5_ec)6=33iD%VL9SKQT_?-%C=z%1)DwIhjG0=?B%OIUw!zQk-Pf zQYOcS1oFCwOJV`p#DDh(ctRUG z3HyOE@nwjC$-A8xpP;eJWp2roS=@-3)Yi@})I`6?w4vAnKCd0cXJ6XLrmgBIQ<$Hx zK}iNP4lOnkF1HnL(^zs1FImr?6@$6Fw%y&`Rp2vgTC^50FlgJ$X`Yo|Ga1)El5HkC zL>Rg{%;_CXaS^2vJDCf8QZXs4o09*sCs;YU%n(tej0)`j)~0D^%imH|BGbO7EtO)E zU>}{K;poN5^QH7>TSrba$_6eQrf@QyuKqkT=FUxEhDiV?x2>a!bX+2Co0!SDPT7f5 zNz2V<@o}gRS_Nl_i4&&cXslvnL@sxweTki3+n>>>&C<18NP!?>D#S#crsW{TUfvJk zUe-jFYtLqV&neSh2l=YxppMDL3w07bnyp!Iyiex)Y;MiAc%m`~X=Dq_(+tiTgP{OR zlO+y2KHS`XGebnQ#5USnS-$J@!+}zCXQ7`&1Gn<&OI#{r;@nV$4|~ivT0I2ou}flx zR-!lmBdTL;;*S5eSwch1q5nx+9AIB1eV~=;EdkpGLbhkZQy4Rg=bqk5I5wAwgRo`} z+OlrhgvreO@SpVFsk?bKjo8c_^YcV{0VN78i*bo(p?Z9%)0rJ}-&84X`SvHE9l8K* zG;g8GUSyHO3FoQTV%Ywh@e01*VFfAj@whPde1rlik;SE0*c}OSU-RLL#bZR^;K?zKG(DGhK|zE&hexzc{sC(HXX%+R|O zIQD<;0}9BymPVcOE?ph=rMhn3-aHZb+6^;yl%+1EiHeH0r@weOdebJ%!*ieMw%fC3 z-}|0{doaAW93yK)yZd3;E(YLAO~_k^V|rU!Cl2m}Y7S^1EbHUb z)4dq$*D}F@mw_lOE7un&XT~pye-$q-wA+7V3!_l&H!ywR)vHmHAe~?gRiwt zSz=InZLKC>WiQOWNRTo{lVwQy3+mRD+@dz~qP!7{h2gG@R|6eS;xN~lV9!;ZoKlLO zyjosgj}-Vge=W`+F$bOFD&D>n_A$0E>4f3BteNwitB1Si3US)l62nw1Dkp<$SDv1n zh5X^p-mZL`GNYg?L@4&P{=Ejp_+le5*K$PHghwr2P6sqvoX5TV>-4xhB7 zB8rnOZ9gF7UJnKGbo(v6(0C!HW5Wc4Ez&Tj9OViaM86g)tl8lFNF_J`Vu7UWq19F7 z$?3hCty-p?$Ft$Oz3stmC_p$)tO`zlL`1y?1ksHO)YPj2Qz*il&Ng{z=y} zPZsJJ#H(au)96m^LnF5`_I){>r5u2v6WJ$wg*&>N(zw6);SXSu{*hh(K%OGZ(aHFM zV&V5@#fEkUPZo#%72Ft-6r9h5kD~qwKL?s8=^YbBg0q09O{dQ z*BsuV!aiqM2HkFO9gg@oj=?A#OB1=1S5?{6UfO)(b5$1%4=PSv-14&WyD#bxBgKri zbNp&^n=ejukvI(#@wRoQH9WPC^hW)!L+uLOoLTy)hCDVIGL3@wN^b6P6_VYbUJ;w@ ztyUG!GE0{m>C5xCV5}i$5fnJ5J2cJ{1I$OUyW|5#&d- zuxm8Wrg8bn!^|675VST+HkDro0y>u74pMbMp)|W%L#mrS+}L9#?TSme8^uj>`CFvI zFl~u1LnU?NfpZlSu3gW#8Kaul*J&KGHU;>y5yaQ7(Dygxe@3`JpyAzH8dc>bV@0w; zo&)KLO!cd0CCWE6%k$K|9Ruha{n$L9U{Os6ik~#d-DC(g zQFjEZiqgw%54Jv=->O%UhvgKhJM!ZOj*lvHhOD4;>yMPJ+; zc%Sma1oz^d=^T2&pk~7l3Jifv3G&rp`hvookF^EQ3ab6NsPhQj#l(vxS9{B8=Op|4 z@G>clyooBv>^wd9gMjZ~l-=FM(Yov{Y*AVKN^oUO*44K1E4F``lX+KQ&uevn(^sG| zD%>2Oj*9%s5$k4lJNXKAn$Fo)h)5LXVb=5=zlxG zmUdnvBco-LSvPMC1{2fB)4s%|v}HV;z1i9kW6(fE)0C=ryWfyiaG;PVZ`7kU6)!KF zaSpf(V9y_s+BQjYZZI8nGYqh!oa9V=iuRGQ@kD$Sp3`Wbx#jCrVMTAy zYC>-N&b&s`CT$j>&Chp1QN~r21!1%S0$7MCEdSVf-=HVslhGmM=GrcBTo(WmN(Ci~ z!4oU0RNs*g6&kPZlZqxHC#gJZ2l!bgXmU^H+i;8PkUPWX9_elmyZencIAZW}PEWpx zh`GbG0ln}bsF^zgL}`6Zh;ppOH8MI|PhNp1uKb&ZpF%*#NW{+Xww1~9U#aXm>9EMr zb}Y3#1%Wnz7(sa+Pa+$Ca7MS*hFkM%EhopX0u{4iAp_dvzT#y0WAiUMoX&bK^%z#i z(!n{i^T+LTzs1_Kdb!p36Zh;rr@fI&m+`4~eiBCsd#Lx+D0-x9czA@ooE;cioE`aS z|70r{8U(HAGlO4aO~Ud48EXAc4=5aM!hVV%zu!Xu3glm3M8fLse^UgUD*g8&;Dicz h>u + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - createText(content) + + - - + + - - - + + - - - - - JsonFactory - - - JsonFactory - - - - - - - - - - - - - - - - - - - - - - createText(content) - - - - - - - - - - - - - JsonFactory - - - JsonFactory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - createText(content) - - - - - - - - - - - - - AbstractFactory - - - AbstractFactory - - - - - - - - - - - - - - - - - - - - - - createText(content) - - - - - - - - - - - - - AbstractFactory - - - AbstractFactory - - - - - - - - - - - - - - - - - - - - - - createText(content) - - - - - - - - - - - - - HtmlFactory - - - HtmlFactory - - - - - - - - - - - - - - - - - - - - - - createText(content) - - - - - - - - - - - - - HtmlFactory - - - HtmlFactory - - - - - - - - - - - - - - - - JsonText - - - JsonText - - - - - - - - - - - - - JsonText - - - JsonText - - - - - - - - - - - - - - - - HtmlText - - - HtmlText - - - - - - - - - - - - - HtmlText - - - HtmlText - - - - - - - - - - - - - - - - - - - - - - - - - text - - - - - - - - - - - - - Text - - - Text - - - - - - - - - - - - - - - - - - - - - - text - - - - - - - - - - - - - Text - - - Text - - - - - - - - - - - - + + + + From 7fd7b41a8bd3a47564324544cc4c6d3947ddcce3 Mon Sep 17 00:00:00 2001 From: Igor Date: Sat, 16 Jun 2018 12:35:20 +0200 Subject: [PATCH 23/45] Fixed mistype in Repository readme There was `InMemoryPersistence.php` dublicate instead `Persistence.php` --- More/Repository/README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/More/Repository/README.rst b/More/Repository/README.rst index 202d74f..c7158e1 100644 --- a/More/Repository/README.rst +++ b/More/Repository/README.rst @@ -57,7 +57,7 @@ PostRepository.php Persistence.php -.. literalinclude:: InMemoryPersistence.php +.. literalinclude:: Persistence.php :language: php :linenos: From 4c0fbf4a7cdc8a4af41a09448eb4a1e55d306c1e Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Fri, 22 Jun 2018 10:06:50 +0200 Subject: [PATCH 24/45] refactored Decorator pattern --- Structural/Decorator/Booking.php | 10 ++++++ Structural/Decorator/BookingDecorator.php | 16 ++++++++++ Structural/Decorator/DoubleRoomBooking.php | 16 ++++++++++ Structural/Decorator/ExtraBed.php | 18 +++++++++++ Structural/Decorator/JsonRenderer.php | 11 ------- Structural/Decorator/README.rst | 20 ++++++------ Structural/Decorator/RenderableInterface.php | 8 ----- Structural/Decorator/RendererDecorator.php | 24 -------------- Structural/Decorator/Tests/DecoratorTest.php | 33 +++++++++++--------- Structural/Decorator/Webservice.php | 21 ------------- Structural/Decorator/WiFi.php | 18 +++++++++++ Structural/Decorator/XmlRenderer.php | 15 --------- 12 files changed, 107 insertions(+), 103 deletions(-) create mode 100644 Structural/Decorator/Booking.php create mode 100644 Structural/Decorator/BookingDecorator.php create mode 100644 Structural/Decorator/DoubleRoomBooking.php create mode 100644 Structural/Decorator/ExtraBed.php delete mode 100644 Structural/Decorator/JsonRenderer.php delete mode 100644 Structural/Decorator/RenderableInterface.php delete mode 100644 Structural/Decorator/RendererDecorator.php delete mode 100644 Structural/Decorator/Webservice.php create mode 100644 Structural/Decorator/WiFi.php delete mode 100644 Structural/Decorator/XmlRenderer.php diff --git a/Structural/Decorator/Booking.php b/Structural/Decorator/Booking.php new file mode 100644 index 0000000..1ce0146 --- /dev/null +++ b/Structural/Decorator/Booking.php @@ -0,0 +1,10 @@ +booking = $booking; + } +} diff --git a/Structural/Decorator/DoubleRoomBooking.php b/Structural/Decorator/DoubleRoomBooking.php new file mode 100644 index 0000000..9d745d7 --- /dev/null +++ b/Structural/Decorator/DoubleRoomBooking.php @@ -0,0 +1,16 @@ +booking->calculatePrice() + self::PRICE; + } + + public function getDescription(): string + { + return $this->booking->getDescription() . ' with extra bed'; + } +} diff --git a/Structural/Decorator/JsonRenderer.php b/Structural/Decorator/JsonRenderer.php deleted file mode 100644 index 9cc4066..0000000 --- a/Structural/Decorator/JsonRenderer.php +++ /dev/null @@ -1,11 +0,0 @@ -wrapped->renderData()); - } -} diff --git a/Structural/Decorator/README.rst b/Structural/Decorator/README.rst index 702fe12..aa16655 100644 --- a/Structural/Decorator/README.rst +++ b/Structural/Decorator/README.rst @@ -25,33 +25,33 @@ Code You can also find this code on `GitHub`_ -RenderableInterface.php +Booking.php -.. literalinclude:: RenderableInterface.php +.. literalinclude:: Booking.php :language: php :linenos: -Webservice.php +BookingDecorator.php -.. literalinclude:: Webservice.php +.. literalinclude:: BookingDecorator.php :language: php :linenos: -RendererDecorator.php +DoubleRoomBooking.php -.. literalinclude:: RendererDecorator.php +.. literalinclude:: DoubleRoomBooking.php :language: php :linenos: -XmlRenderer.php +ExtraBed.php -.. literalinclude:: XmlRenderer.php +.. literalinclude:: ExtraBed.php :language: php :linenos: -JsonRenderer.php +WiFi.php -.. literalinclude:: JsonRenderer.php +.. literalinclude:: WiFi.php :language: php :linenos: diff --git a/Structural/Decorator/RenderableInterface.php b/Structural/Decorator/RenderableInterface.php deleted file mode 100644 index 07e11d1..0000000 --- a/Structural/Decorator/RenderableInterface.php +++ /dev/null @@ -1,8 +0,0 @@ -wrapped = $renderer; - } -} diff --git a/Structural/Decorator/Tests/DecoratorTest.php b/Structural/Decorator/Tests/DecoratorTest.php index 100100d..d1c7638 100644 --- a/Structural/Decorator/Tests/DecoratorTest.php +++ b/Structural/Decorator/Tests/DecoratorTest.php @@ -2,32 +2,37 @@ namespace DesignPatterns\Structural\Decorator\Tests; -use DesignPatterns\Structural\Decorator; +use DesignPatterns\Structural\Decorator\DoubleRoomBooking; +use DesignPatterns\Structural\Decorator\ExtraBed; +use DesignPatterns\Structural\Decorator\WiFi; use PHPUnit\Framework\TestCase; class DecoratorTest extends TestCase { - /** - * @var Decorator\Webservice - */ - private $service; - - protected function setUp() + public function testCanCalculatePriceForBasicDoubleRoomBooking() { - $this->service = new Decorator\Webservice('foobar'); + $booking = new DoubleRoomBooking(); + + $this->assertEquals(40, $booking->calculatePrice()); + $this->assertEquals('double room', $booking->getDescription()); } - public function testJsonDecorator() + public function testCanCalculatePriceForDoubleRoomBookingWithWiFi() { - $service = new Decorator\JsonRenderer($this->service); + $booking = new DoubleRoomBooking(); + $booking = new WiFi($booking); - $this->assertEquals('"foobar"', $service->renderData()); + $this->assertEquals(42, $booking->calculatePrice()); + $this->assertEquals('double room with wifi', $booking->getDescription()); } - public function testXmlDecorator() + public function testCanCalculatePriceForDoubleRoomBookingWithWiFiAndExtraBed() { - $service = new Decorator\XmlRenderer($this->service); + $booking = new DoubleRoomBooking(); + $booking = new WiFi($booking); + $booking = new ExtraBed($booking); - $this->assertXmlStringEqualsXmlString('foobar', $service->renderData()); + $this->assertEquals(72, $booking->calculatePrice()); + $this->assertEquals('double room with wifi with extra bed', $booking->getDescription()); } } diff --git a/Structural/Decorator/Webservice.php b/Structural/Decorator/Webservice.php deleted file mode 100644 index 6715a22..0000000 --- a/Structural/Decorator/Webservice.php +++ /dev/null @@ -1,21 +0,0 @@ -data = $data; - } - - public function renderData(): string - { - return $this->data; - } -} diff --git a/Structural/Decorator/WiFi.php b/Structural/Decorator/WiFi.php new file mode 100644 index 0000000..4226002 --- /dev/null +++ b/Structural/Decorator/WiFi.php @@ -0,0 +1,18 @@ +booking->calculatePrice() + self::PRICE; + } + + public function getDescription(): string + { + return $this->booking->getDescription() . ' with wifi'; + } +} diff --git a/Structural/Decorator/XmlRenderer.php b/Structural/Decorator/XmlRenderer.php deleted file mode 100644 index 012da47..0000000 --- a/Structural/Decorator/XmlRenderer.php +++ /dev/null @@ -1,15 +0,0 @@ -wrapped->renderData(); - $doc->appendChild($doc->createElement('content', $data)); - - return $doc->saveXML(); - } -} From f0f5ee9bef39673badec61a9a78204063dab6562 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Fri, 22 Jun 2018 10:11:47 +0200 Subject: [PATCH 25/45] Refactored Decorator pattern --- Structural/Decorator/uml/Decorator.uml | 100 +++--- Structural/Decorator/uml/uml.png | Bin 11342 -> 45827 bytes Structural/Decorator/uml/uml.svg | 475 +++++-------------------- 3 files changed, 144 insertions(+), 431 deletions(-) diff --git a/Structural/Decorator/uml/Decorator.uml b/Structural/Decorator/uml/Decorator.uml index 0a80f98..a834305 100644 --- a/Structural/Decorator/uml/Decorator.uml +++ b/Structural/Decorator/uml/Decorator.uml @@ -1,51 +1,49 @@ - - - PHP - \DesignPatterns\Structural\Decorator\RenderInXml - - \DesignPatterns\Structural\Decorator\RenderInJson - \DesignPatterns\Structural\Decorator\RenderInXml - \DesignPatterns\Structural\Decorator\Webservice - \DesignPatterns\Structural\Decorator\Decorator - \DesignPatterns\Structural\Decorator\RendererInterface - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \DesignPatterns\Structural\Decorator\RenderInXml - - - Fields - Constants - Constructors - Methods - - private - - + + + PHP + \DesignPatterns\Structural\Decorator\Booking + + \DesignPatterns\Structural\Decorator\WiFi + \DesignPatterns\Structural\Decorator\DoubleRoomBooking + \DesignPatterns\Structural\Decorator\ExtraBed + \DesignPatterns\Structural\Decorator\Booking + \DesignPatterns\Structural\Decorator\BookingDecorator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Structural/Decorator/uml/uml.png b/Structural/Decorator/uml/uml.png index dc4fae373b40036fbe2a1ea3efb55ccc69ed8183..4ab80b226034c32fcc3c6b275a53cdb3737f8f85 100644 GIT binary patch literal 45827 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 literal 11342 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 TOz8x^6GnkbDN2@!8wLI!G=&$o diff --git a/Structural/Decorator/uml/uml.svg b/Structural/Decorator/uml/uml.svg index a488e8e..5e20bf9 100644 --- a/Structural/Decorator/uml/uml.svg +++ b/Structural/Decorator/uml/uml.svg @@ -1,380 +1,95 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - renderData() - - - - - - - - - - - - - RenderInJson - - - RenderInJson - - - - - - - - - - - - - - - - - - - renderData() - - - - - - - - - - - - - RenderInXml - - - RenderInXml - - - - - - - - - - - - - - - - - - - data - - - - - - - - - - - - - __construct(data) - - - - - - - - - - - - - renderData() - - - - - - - - - - - - - Webservice - - - Webservice - - - - - - - - - - - - - - - - - - - wrapped - - - - - - - - - - - - - __construct(wrappable) - - - - - - - - - - - - - Decorator - - - Decorator - - - - - - - - - - - - - - - - - - - renderData() - - - - - - - - - - - - - RendererInterface - - - RendererInterface - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 5c926aee1b847c850c20d9be67797464ddec14f4 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Sun, 8 Jul 2018 17:33:49 +0200 Subject: [PATCH 26/45] Restructured README.md --- README.md | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 51cead6..a1f2646 100755 --- a/README.md +++ b/README.md @@ -15,34 +15,33 @@ I think the problem with patterns is that often people do know them but don't kn You should look at and run the tests to see what happens in the example. To do this, you should install dependencies with `Composer` first: -### [optional] Using Docker - -You can optionally run tests using [Docker for Mac](https://www.docker.com/docker-mac) or [Windows](https://www.docker.com/docker-windows) or native one for [Linux](https://www.docker.com/docker-debian). -Just run: -``` -docker-compose up -``` - -### Install dependencies - ```bash $ composer install ``` Read more about how to install and use `Composer` on your local machine [here](https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx). -If you are using Docker, you just have to run: - -```bash -docker-compose run composer install -``` - -### Running test suite +To run the tests use `phpunit`: ```bash $ ./vendor/bin/phpunit ``` +## using Docker (optional) + +You can optionally run tests using [Docker for Mac](https://www.docker.com/docker-mac) or [Windows](https://www.docker.com/docker-windows) or native one for [Linux](https://www.docker.com/docker-debian). +Just run: + +``` +docker-compose up +``` + +To install the dependencies, use `docker-compose` like this: + +```bash +docker-compose run composer install +``` + ## Patterns The patterns can be structured in roughly three different categories. Please click on the [:notebook:](http://en.wikipedia.org/wiki/Software_design_pattern) for a full explanation of the pattern on Wikipedia. From e1107108b90d2d88e39a9567bb3dd9be48a9a6b0 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Sun, 8 Jul 2018 17:38:04 +0200 Subject: [PATCH 27/45] consistent docs (shell $ prompt) --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a1f2646..cf52c8c 100755 --- a/README.md +++ b/README.md @@ -32,14 +32,14 @@ $ ./vendor/bin/phpunit You can optionally run tests using [Docker for Mac](https://www.docker.com/docker-mac) or [Windows](https://www.docker.com/docker-windows) or native one for [Linux](https://www.docker.com/docker-debian). Just run: -``` -docker-compose up +```bash +$ docker-compose up ``` -To install the dependencies, use `docker-compose` like this: +To only install the dependencies, use `docker-compose` like this: ```bash -docker-compose run composer install +$ docker-compose run composer install ``` ## Patterns From a32533fb6176980a5f3d840a0709cbe18d94bc4e Mon Sep 17 00:00:00 2001 From: Roman Bylbas Date: Tue, 17 Jul 2018 23:32:41 +0300 Subject: [PATCH 28/45] Fixed ru translation for Creational patterns --- locale/ru/LC_MESSAGES/Creational/FactoryMethod/README.po | 6 +++--- locale/ru/LC_MESSAGES/Creational/Pool/README.po | 4 ++++ locale/ru/LC_MESSAGES/Creational/SimpleFactory/README.po | 8 ++++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/locale/ru/LC_MESSAGES/Creational/FactoryMethod/README.po b/locale/ru/LC_MESSAGES/Creational/FactoryMethod/README.po index 4d41e36..e2e8848 100644 --- a/locale/ru/LC_MESSAGES/Creational/FactoryMethod/README.po +++ b/locale/ru/LC_MESSAGES/Creational/FactoryMethod/README.po @@ -24,13 +24,13 @@ msgstr "Назначение" #: ../../Creational/FactoryMethod/README.rst:7 msgid "" "The good point over the SimpleFactory is you can subclass it to implement " -"different ways to create objects" +"different ways to create objects." msgstr "" "Выгодное отличие от SimpleFactory в том, что вы можете вынести реализацию " "создания объектов в подклассы." #: ../../Creational/FactoryMethod/README.rst:10 -msgid "For simple case, this abstract class could be just an interface" +msgid "For simple cases, this abstract class could be just an interface." msgstr "" "В простых случаях, этот абстрактный класс может быть только интерфейсом." @@ -40,7 +40,7 @@ msgid "" "Dependency Inversion principle a.k.a the \"D\" in SOLID principles." msgstr "" "Этот паттерн является «настоящим» Шаблоном Проектирования, потому что он " -"следует «Принципу инверсии зависимостей\" ака \"D\" в `S.O.L.I.D `_." #: ../../Creational/FactoryMethod/README.rst:15 diff --git a/locale/ru/LC_MESSAGES/Creational/Pool/README.po b/locale/ru/LC_MESSAGES/Creational/Pool/README.po index d0265a4..3f0800e 100644 --- a/locale/ru/LC_MESSAGES/Creational/Pool/README.po +++ b/locale/ru/LC_MESSAGES/Creational/Pool/README.po @@ -16,6 +16,10 @@ msgid "`Pool`__" msgstr "" "`Объектный пул `_ (`Pool`__)" +#: ../../Creational/Pool/README.rst:4 +msgid "Purpose" +msgstr "Назначение" + #: ../../Creational/Pool/README.rst:4 msgid "" "The **object pool pattern** is a software creational design pattern that " diff --git a/locale/ru/LC_MESSAGES/Creational/SimpleFactory/README.po b/locale/ru/LC_MESSAGES/Creational/SimpleFactory/README.po index 86fe916..0f5e707 100644 --- a/locale/ru/LC_MESSAGES/Creational/SimpleFactory/README.po +++ b/locale/ru/LC_MESSAGES/Creational/SimpleFactory/README.po @@ -25,10 +25,14 @@ msgstr "SimpleFactory в примере ниже, это паттерн «Про #: ../../Creational/SimpleFactory/README.rst:9 msgid "" -"It differs from the static factory because it is not static." +"It differs from the static factory because it is not static. " +"Therefore, you can have multiple factories, differently parameterized, " +"you can subclass it and you can mock it. It always should be preferred " +"over a static factory!" msgstr "" "Она отличается от Статической Фабрики тем, что собственно *не является " -"статической*. Потому как вы должны понимать: статическая => глобальная => зло!" +"статической*. Таким образом, вы можете иметь множество фабрик с разными параметрами. " +"Простая фабрика всегда должна быть предпочтительнее Статической фабрики!" #: ../../Creational/SimpleFactory/README.rst:10 msgid "" From bb3203362489be41176c234846f7574628712a56 Mon Sep 17 00:00:00 2001 From: Roman Bylbas Date: Wed, 18 Jul 2018 10:19:59 +0300 Subject: [PATCH 29/45] Fixed all ru locales --- .../LC_MESSAGES/Behavioral/Memento/README.po | 10 ++--- .../LC_MESSAGES/More/ServiceLocator/README.po | 45 ++++++++++++++----- .../Structural/DependencyInjection/README.po | 12 ++--- .../LC_MESSAGES/Structural/Facade/README.po | 8 ++-- .../LC_MESSAGES/Structural/Registry/README.po | 10 +++-- 5 files changed, 56 insertions(+), 29 deletions(-) diff --git a/locale/ru/LC_MESSAGES/Behavioral/Memento/README.po b/locale/ru/LC_MESSAGES/Behavioral/Memento/README.po index 04f1506..440d62f 100644 --- a/locale/ru/LC_MESSAGES/Behavioral/Memento/README.po +++ b/locale/ru/LC_MESSAGES/Behavioral/Memento/README.po @@ -11,7 +11,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-06-03 23:59+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Eugene Glotov \n" +"Last-Translator: Roman Bylbas \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" @@ -28,10 +28,10 @@ msgstr "Назначение" #: ../../Behavioral/Memento/README.rst:7 msgid "" -"It provides the ability to restore an object to it's previous state (undo" -" via rollback) or to gain access to state of the object, without " -"revealing it's implementation (i.e., the object is not required to have a" -" functional for return the current state)." +"It provides the ability to restore an object to it's previous state (undo " +"via rollback) or to gain access to state of the object, without revealing " +"it's implementation (i.e., the object is not required to have a function " +"to return the current state)." msgstr "" "Шаблон предоставляет возможность восстановить объект в его предыдущем состоянии " "(отменить действие посредством отката к предыдущему состоянию) или получить " diff --git a/locale/ru/LC_MESSAGES/More/ServiceLocator/README.po b/locale/ru/LC_MESSAGES/More/ServiceLocator/README.po index df56a85..89d29e8 100644 --- a/locale/ru/LC_MESSAGES/More/ServiceLocator/README.po +++ b/locale/ru/LC_MESSAGES/More/ServiceLocator/README.po @@ -5,7 +5,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-29 12:18+0200\n" "PO-Revision-Date: 2015-05-30 05:14+0300\n" -"Last-Translator: Eugene Glotov \n" +"Last-Translator: Roman Bylbas \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -15,11 +15,34 @@ msgstr "" msgid "`Service Locator`__" msgstr "Локатор Служб (`Service Locator`__)" -#: ../../More/ServiceLocator/README.rst:5 +#: ../../More/ServiceLocator/README.rst:4 +msgid "**THIS IS CONSIDERED TO BE AN ANTI-PATTERN!**" +msgstr "**Этот шаблон считается анти-паттерном!**" + +#: ../../More/ServiceLocator/README.rst:4 +msgid "" +"Service Locator is considered for some people an anti-pattern. " +"It violates the Dependency Inversion principle. Service Locator " +"hides class' dependencies instead of exposing them as you would " +"do using the Dependency Injection. In case of changes of those " +"dependencies you risk to break the functionality of classes which " +"are using them, making your system difficult to maintain." +msgstr "" +"Некоторые считаю Локатор Служб анти-паттерном. Он нарушает " +"принцип инверсии зависимостей (`Dependency Inversion principle " +"`_) " +"из набора принципов `SOLID `_. " +"Локатор Служб скрывает зависимости данного класса вместо их совместного " +"использования, как в случае шаблона Внедрение Зависимости (`Dependency " +"Injection `_). " +"В случае изменения данных зависимостей мы рискуем сломать функционал классов, " +"которые их используют. В последствии затрудняется поддержка вашей системы." + +#: ../../More/ServiceLocator/README.rst:9 msgid "Purpose" msgstr "Назначение" -#: ../../More/ServiceLocator/README.rst:7 +#: ../../More/ServiceLocator/README.rst:12 msgid "" "To implement a loosely coupled architecture in order to get better testable," " maintainable and extendable code. DI pattern and Service Locator pattern " @@ -30,11 +53,11 @@ msgstr "" "зависимостей (DI) и паттерн Локатор Служб — это реализация паттерна " "Инверсия управления (Inversion of Control, IoC)." -#: ../../More/ServiceLocator/README.rst:12 +#: ../../More/ServiceLocator/README.rst:16 msgid "Usage" msgstr "Использование" -#: ../../More/ServiceLocator/README.rst:14 +#: ../../More/ServiceLocator/README.rst:19 msgid "" "With ``ServiceLocator`` you can register a service for a given interface. By" " using the interface you can retrieve the service and use it in the classes " @@ -47,11 +70,11 @@ msgstr "" "можете настроить и внедрить объект Service Locator на начальном этапе " "сборки приложения." -#: ../../More/ServiceLocator/README.rst:20 +#: ../../More/ServiceLocator/README.rst:24 msgid "Examples" msgstr "Примеры" -#: ../../More/ServiceLocator/README.rst:22 +#: ../../More/ServiceLocator/README.rst:27 msgid "" "Zend Framework 2 uses Service Locator to create and share services used in " "the framework(i.e. EventManager, ModuleManager, all custom user services " @@ -62,18 +85,18 @@ msgstr "" "ModuleManager, все пользовательские сервисы, предоставляемые модулями, и т." "д ...)" -#: ../../More/ServiceLocator/README.rst:27 +#: ../../More/ServiceLocator/README.rst:31 msgid "UML Diagram" msgstr "UML Диаграмма" -#: ../../More/ServiceLocator/README.rst:34 +#: ../../More/ServiceLocator/README.rst:38 msgid "Code" msgstr "Код" -#: ../../More/ServiceLocator/README.rst:36 +#: ../../More/ServiceLocator/README.rst:41 msgid "You can also find this code on `GitHub`_" msgstr "Вы можете найти этот код на `GitHub`_" -#: ../../More/ServiceLocator/README.rst:75 +#: ../../More/ServiceLocator/README.rst:55 msgid "Test" msgstr "Тест" diff --git a/locale/ru/LC_MESSAGES/Structural/DependencyInjection/README.po b/locale/ru/LC_MESSAGES/Structural/DependencyInjection/README.po index fd7697f..92bd7a0 100644 --- a/locale/ru/LC_MESSAGES/Structural/DependencyInjection/README.po +++ b/locale/ru/LC_MESSAGES/Structural/DependencyInjection/README.po @@ -5,7 +5,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-29 12:18+0200\n" "PO-Revision-Date: 2015-06-02 01:32+0300\n" -"Last-Translator: Eugene Glotov \n" +"Last-Translator: Roman Bylbas \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -35,12 +35,12 @@ msgstr "Использование" #: ../../Structural/DependencyInjection/README.rst:13 msgid "" -"Configuration gets injected and ``Connection`` will get all that it needs " -"from ``$config``. Without DI, the configuration would be created directly in" -" ``Connection``, which is not very good for testing and extending " -"``Connection``." +"``DatabaseConfiguration`` gets injected and ``DatabaseConnection`` will get all that it " +"needs from ``$config``. Without DI, the configuration would be created " +"directly in ``DatabaseConnection``, which is not very good for testing and " +"extending it." msgstr "" -"Объект Configuration внедряется в ``Connection`` и последний получает всё, " +"Объект ``DatabaseConfiguration`` внедряется в ``DatabaseConnection`` и последний получает всё, " "что ему необходимо из переменной ``$ config``. Без DI, конфигурация будет " "создана непосредственно в ``Connection``, что не очень хорошо для " "тестирования и расширения ``Connection``, так как связывает эти классы " diff --git a/locale/ru/LC_MESSAGES/Structural/Facade/README.po b/locale/ru/LC_MESSAGES/Structural/Facade/README.po index d9cbdfb..d230dd3 100644 --- a/locale/ru/LC_MESSAGES/Structural/Facade/README.po +++ b/locale/ru/LC_MESSAGES/Structural/Facade/README.po @@ -5,7 +5,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-29 12:18+0200\n" "PO-Revision-Date: 2015-06-02 01:48+0300\n" -"Last-Translator: Eugene Glotov \n" +"Last-Translator: Roman Bylbas \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -23,9 +23,9 @@ msgstr "Назначение" #: ../../Structural/Facade/README.rst:7 msgid "" -"The primary goal of a Facade Pattern is not to avoid you to read the manual " -"of a complex API. It's only a side-effect. The first goal is to reduce " -"coupling and follow the Law of Demeter." +"The primary goal of a Facade Pattern is not to avoid you having to read the " +"manual of a complex API. It's only a side-effect. The first goal is to " +"reduce coupling and follow the Law of Demeter." msgstr "" "Основная цель паттерна Фасад заключается не в том, чтобы помешать вам " "прочитать инструкцию комплексной API. Это только побочный эффект. Главная " diff --git a/locale/ru/LC_MESSAGES/Structural/Registry/README.po b/locale/ru/LC_MESSAGES/Structural/Registry/README.po index c9fb222..33998c2 100644 --- a/locale/ru/LC_MESSAGES/Structural/Registry/README.po +++ b/locale/ru/LC_MESSAGES/Structural/Registry/README.po @@ -5,7 +5,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-29 12:18+0200\n" "PO-Revision-Date: 2015-06-02 01:36+0300\n" -"Last-Translator: Eugene Glotov \n" +"Last-Translator: Roman Bylbas \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -23,11 +23,15 @@ msgstr "Назначение" msgid "" "To implement a central storage for objects often used throughout the " "application, is typically implemented using an abstract class with only " -"static methods (or using the Singleton pattern)" +"static methods (or using the Singleton pattern). Remember that this " +"introduces global state, which should be avoided at all times! Instead " +"implement it using Dependency Injection!" msgstr "" "Для реализации централизованного хранения объектов, часто используемых " "во всем приложении, как правило, реализуется с помощью абстрактного " -"класса с только статическими методами (или с помощью шаблона Singleton)." +"класса только c статическими методами (или с помощью шаблона Singleton). " +"Помнте что это вводит глобальное состояние, которого следует избегать. " +"Используйте Dependency Injection вместо Registry." #: ../../Structural/Registry/README.rst:12 msgid "Examples" From c26549a2694f4e06529339707f37fcef33719a5b Mon Sep 17 00:00:00 2001 From: Roman Bylbas Date: Thu, 19 Jul 2018 11:04:19 +0300 Subject: [PATCH 30/45] Fixed typo in locale/ru/LC_MESSAGES/More/ServiceLocator/README.po --- locale/ru/LC_MESSAGES/More/ServiceLocator/README.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locale/ru/LC_MESSAGES/More/ServiceLocator/README.po b/locale/ru/LC_MESSAGES/More/ServiceLocator/README.po index 89d29e8..a5416f1 100644 --- a/locale/ru/LC_MESSAGES/More/ServiceLocator/README.po +++ b/locale/ru/LC_MESSAGES/More/ServiceLocator/README.po @@ -28,7 +28,7 @@ msgid "" "dependencies you risk to break the functionality of classes which " "are using them, making your system difficult to maintain." msgstr "" -"Некоторые считаю Локатор Служб анти-паттерном. Он нарушает " +"Некоторые считают Локатор Служб анти-паттерном. Он нарушает " "принцип инверсии зависимостей (`Dependency Inversion principle " "`_) " "из набора принципов `SOLID `_. " @@ -36,7 +36,7 @@ msgstr "" "использования, как в случае шаблона Внедрение Зависимости (`Dependency " "Injection `_). " "В случае изменения данных зависимостей мы рискуем сломать функционал классов, " -"которые их используют. В последствии затрудняется поддержка вашей системы." +"которые их используют, вследствие чего затрудняется поддержка системы." #: ../../More/ServiceLocator/README.rst:9 msgid "Purpose" From 16d6f8740d7a4e5285c1e1b49d3d39e3eb0704e8 Mon Sep 17 00:00:00 2001 From: Samuel NELA Date: Sat, 29 Sep 2018 16:27:02 +0200 Subject: [PATCH 31/45] Replaced with strict assertions --- .../ChainOfResponsibilities/Tests/ChainTest.php | 4 ++-- Behavioral/Command/Tests/CommandTest.php | 2 +- Behavioral/Command/Tests/UndoableCommandTest.php | 6 +++--- Behavioral/Iterator/Tests/IteratorTest.php | 4 ++-- Behavioral/Memento/Tests/MementoTest.php | 6 +++--- Behavioral/State/Tests/StateTest.php | 8 ++++---- Behavioral/Strategy/Tests/StrategyTest.php | 4 ++-- Behavioral/TemplateMethod/Tests/JourneyTest.php | 4 ++-- Structural/Adapter/Tests/AdapterTest.php | 4 ++-- Structural/Bridge/Tests/BridgeTest.php | 4 ++-- Structural/Composite/Tests/CompositeTest.php | 2 +- Structural/Decorator/Tests/DecoratorTest.php | 12 ++++++------ .../Tests/DependencyInjectionTest.php | 2 +- Structural/Facade/Tests/FacadeTest.php | 2 +- .../FluentInterface/Tests/FluentInterfaceTest.php | 2 +- Structural/Flyweight/Tests/FlyweightTest.php | 2 +- Structural/Proxy/Tests/ProxyTest.php | 4 ++-- 17 files changed, 36 insertions(+), 36 deletions(-) diff --git a/Behavioral/ChainOfResponsibilities/Tests/ChainTest.php b/Behavioral/ChainOfResponsibilities/Tests/ChainTest.php index c61f1fb..e9d4cb4 100644 --- a/Behavioral/ChainOfResponsibilities/Tests/ChainTest.php +++ b/Behavioral/ChainOfResponsibilities/Tests/ChainTest.php @@ -33,7 +33,7 @@ class ChainTest extends TestCase ->willReturn('GET'); $request->method('getUri')->willReturn($uri); - $this->assertEquals('Hello In Memory!', $this->chain->handle($request)); + $this->assertSame('Hello In Memory!', $this->chain->handle($request)); } public function testCanRequestKeyInSlowStorage() @@ -47,6 +47,6 @@ class ChainTest extends TestCase ->willReturn('GET'); $request->method('getUri')->willReturn($uri); - $this->assertEquals('Hello World!', $this->chain->handle($request)); + $this->assertSame('Hello World!', $this->chain->handle($request)); } } diff --git a/Behavioral/Command/Tests/CommandTest.php b/Behavioral/Command/Tests/CommandTest.php index 2479321..e14e215 100644 --- a/Behavioral/Command/Tests/CommandTest.php +++ b/Behavioral/Command/Tests/CommandTest.php @@ -16,6 +16,6 @@ class CommandTest extends TestCase $invoker->setCommand(new HelloCommand($receiver)); $invoker->run(); - $this->assertEquals('Hello World', $receiver->getOutput()); + $this->assertSame('Hello World', $receiver->getOutput()); } } diff --git a/Behavioral/Command/Tests/UndoableCommandTest.php b/Behavioral/Command/Tests/UndoableCommandTest.php index 9569cb1..b76c17b 100644 --- a/Behavioral/Command/Tests/UndoableCommandTest.php +++ b/Behavioral/Command/Tests/UndoableCommandTest.php @@ -17,17 +17,17 @@ class UndoableCommandTest extends TestCase $invoker->setCommand(new HelloCommand($receiver)); $invoker->run(); - $this->assertEquals('Hello World', $receiver->getOutput()); + $this->assertSame('Hello World', $receiver->getOutput()); $messageDateCommand = new AddMessageDateCommand($receiver); $messageDateCommand->execute(); $invoker->run(); - $this->assertEquals("Hello World\nHello World [".date('Y-m-d').']', $receiver->getOutput()); + $this->assertSame("Hello World\nHello World [".date('Y-m-d').']', $receiver->getOutput()); $messageDateCommand->undo(); $invoker->run(); - $this->assertEquals("Hello World\nHello World [".date('Y-m-d')."]\nHello World", $receiver->getOutput()); + $this->assertSame("Hello World\nHello World [".date('Y-m-d')."]\nHello World", $receiver->getOutput()); } } diff --git a/Behavioral/Iterator/Tests/IteratorTest.php b/Behavioral/Iterator/Tests/IteratorTest.php index 5a63078..bf7535a 100644 --- a/Behavioral/Iterator/Tests/IteratorTest.php +++ b/Behavioral/Iterator/Tests/IteratorTest.php @@ -23,7 +23,7 @@ class IteratorTest extends TestCase $books[] = $book->getAuthorAndTitle(); } - $this->assertEquals( + $this->assertSame( [ 'Learning PHP Design Patterns by William Sanders', 'Professional Php Design Patterns by Aaron Saray', @@ -48,7 +48,7 @@ class IteratorTest extends TestCase $books[] = $book->getAuthorAndTitle(); } - $this->assertEquals( + $this->assertSame( ['Professional Php Design Patterns by Aaron Saray'], $books ); diff --git a/Behavioral/Memento/Tests/MementoTest.php b/Behavioral/Memento/Tests/MementoTest.php index 656a58c..8bcd42b 100644 --- a/Behavioral/Memento/Tests/MementoTest.php +++ b/Behavioral/Memento/Tests/MementoTest.php @@ -15,18 +15,18 @@ class MementoTest extends TestCase // open the ticket $ticket->open(); $openedState = $ticket->getState(); - $this->assertEquals(State::STATE_OPENED, (string) $ticket->getState()); + $this->assertSame(State::STATE_OPENED, (string) $ticket->getState()); $memento = $ticket->saveToMemento(); // assign the ticket $ticket->assign(); - $this->assertEquals(State::STATE_ASSIGNED, (string) $ticket->getState()); + $this->assertSame(State::STATE_ASSIGNED, (string) $ticket->getState()); // now restore to the opened state, but verify that the state object has been cloned for the memento $ticket->restoreFromMemento($memento); - $this->assertEquals(State::STATE_OPENED, (string) $ticket->getState()); + $this->assertSame(State::STATE_OPENED, (string) $ticket->getState()); $this->assertNotSame($openedState, $ticket->getState()); } } diff --git a/Behavioral/State/Tests/StateTest.php b/Behavioral/State/Tests/StateTest.php index 1bb36a7..73273bc 100644 --- a/Behavioral/State/Tests/StateTest.php +++ b/Behavioral/State/Tests/StateTest.php @@ -11,7 +11,7 @@ class StateTest extends TestCase { $orderContext = OrderContext::create(); - $this->assertEquals('created', $orderContext->toString()); + $this->assertSame('created', $orderContext->toString()); } public function testCanProceedToStateShipped() @@ -19,7 +19,7 @@ class StateTest extends TestCase $contextOrder = OrderContext::create(); $contextOrder->proceedToNext(); - $this->assertEquals('shipped', $contextOrder->toString()); + $this->assertSame('shipped', $contextOrder->toString()); } public function testCanProceedToStateDone() @@ -28,7 +28,7 @@ class StateTest extends TestCase $contextOrder->proceedToNext(); $contextOrder->proceedToNext(); - $this->assertEquals('done', $contextOrder->toString()); + $this->assertSame('done', $contextOrder->toString()); } public function testStateDoneIsTheLastPossibleState() @@ -38,6 +38,6 @@ class StateTest extends TestCase $contextOrder->proceedToNext(); $contextOrder->proceedToNext(); - $this->assertEquals('done', $contextOrder->toString()); + $this->assertSame('done', $contextOrder->toString()); } } diff --git a/Behavioral/Strategy/Tests/StrategyTest.php b/Behavioral/Strategy/Tests/StrategyTest.php index 0d25c7c..69f4dca 100644 --- a/Behavioral/Strategy/Tests/StrategyTest.php +++ b/Behavioral/Strategy/Tests/StrategyTest.php @@ -49,7 +49,7 @@ class StrategyTest extends TestCase $elements = $obj->executeStrategy($collection); $firstElement = array_shift($elements); - $this->assertEquals($expected, $firstElement); + $this->assertSame($expected, $firstElement); } /** @@ -64,6 +64,6 @@ class StrategyTest extends TestCase $elements = $obj->executeStrategy($collection); $firstElement = array_shift($elements); - $this->assertEquals($expected, $firstElement); + $this->assertSame($expected, $firstElement); } } diff --git a/Behavioral/TemplateMethod/Tests/JourneyTest.php b/Behavioral/TemplateMethod/Tests/JourneyTest.php index 25bdd51..89d9b8e 100644 --- a/Behavioral/TemplateMethod/Tests/JourneyTest.php +++ b/Behavioral/TemplateMethod/Tests/JourneyTest.php @@ -12,7 +12,7 @@ class JourneyTest extends TestCase $beachJourney = new TemplateMethod\BeachJourney(); $beachJourney->takeATrip(); - $this->assertEquals( + $this->assertSame( ['Buy a flight ticket', 'Taking the plane', 'Swimming and sun-bathing', 'Taking the plane'], $beachJourney->getThingsToDo() ); @@ -23,7 +23,7 @@ class JourneyTest extends TestCase $beachJourney = new TemplateMethod\CityJourney(); $beachJourney->takeATrip(); - $this->assertEquals( + $this->assertSame( [ 'Buy a flight ticket', 'Taking the plane', diff --git a/Structural/Adapter/Tests/AdapterTest.php b/Structural/Adapter/Tests/AdapterTest.php index d2db30e..47636f0 100644 --- a/Structural/Adapter/Tests/AdapterTest.php +++ b/Structural/Adapter/Tests/AdapterTest.php @@ -15,7 +15,7 @@ class AdapterTest extends TestCase $book->open(); $book->turnPage(); - $this->assertEquals(2, $book->getPage()); + $this->assertSame(2, $book->getPage()); } public function testCanTurnPageOnKindleLikeInANormalBook() @@ -26,6 +26,6 @@ class AdapterTest extends TestCase $book->open(); $book->turnPage(); - $this->assertEquals(2, $book->getPage()); + $this->assertSame(2, $book->getPage()); } } diff --git a/Structural/Bridge/Tests/BridgeTest.php b/Structural/Bridge/Tests/BridgeTest.php index 2f1fd8e..4b89495 100644 --- a/Structural/Bridge/Tests/BridgeTest.php +++ b/Structural/Bridge/Tests/BridgeTest.php @@ -12,10 +12,10 @@ class BridgeTest extends TestCase public function testCanPrintUsingThePlainTextPrinter() { $service = new HelloWorldService(new PlainTextFormatter()); - $this->assertEquals('Hello World', $service->get()); + $this->assertSame('Hello World', $service->get()); // now change the implementation and use the HtmlFormatter instead $service->setImplementation(new HtmlFormatter()); - $this->assertEquals('

Hello World

', $service->get()); + $this->assertSame('

Hello World

', $service->get()); } } diff --git a/Structural/Composite/Tests/CompositeTest.php b/Structural/Composite/Tests/CompositeTest.php index da5bbb7..90b8e12 100644 --- a/Structural/Composite/Tests/CompositeTest.php +++ b/Structural/Composite/Tests/CompositeTest.php @@ -20,7 +20,7 @@ class CompositeTest extends TestCase // This is just an example, in a real world scenario it is important to remember that web browsers do not // currently support nested forms - $this->assertEquals( + $this->assertSame( '
Email:Password:
', $form->render() ); diff --git a/Structural/Decorator/Tests/DecoratorTest.php b/Structural/Decorator/Tests/DecoratorTest.php index d1c7638..6576f90 100644 --- a/Structural/Decorator/Tests/DecoratorTest.php +++ b/Structural/Decorator/Tests/DecoratorTest.php @@ -13,8 +13,8 @@ class DecoratorTest extends TestCase { $booking = new DoubleRoomBooking(); - $this->assertEquals(40, $booking->calculatePrice()); - $this->assertEquals('double room', $booking->getDescription()); + $this->assertSame(40, $booking->calculatePrice()); + $this->assertSame('double room', $booking->getDescription()); } public function testCanCalculatePriceForDoubleRoomBookingWithWiFi() @@ -22,8 +22,8 @@ class DecoratorTest extends TestCase $booking = new DoubleRoomBooking(); $booking = new WiFi($booking); - $this->assertEquals(42, $booking->calculatePrice()); - $this->assertEquals('double room with wifi', $booking->getDescription()); + $this->assertSame(42, $booking->calculatePrice()); + $this->assertSame('double room with wifi', $booking->getDescription()); } public function testCanCalculatePriceForDoubleRoomBookingWithWiFiAndExtraBed() @@ -32,7 +32,7 @@ class DecoratorTest extends TestCase $booking = new WiFi($booking); $booking = new ExtraBed($booking); - $this->assertEquals(72, $booking->calculatePrice()); - $this->assertEquals('double room with wifi with extra bed', $booking->getDescription()); + $this->assertSame(72, $booking->calculatePrice()); + $this->assertSame('double room with wifi with extra bed', $booking->getDescription()); } } diff --git a/Structural/DependencyInjection/Tests/DependencyInjectionTest.php b/Structural/DependencyInjection/Tests/DependencyInjectionTest.php index c2375f3..e0e5bd2 100644 --- a/Structural/DependencyInjection/Tests/DependencyInjectionTest.php +++ b/Structural/DependencyInjection/Tests/DependencyInjectionTest.php @@ -13,6 +13,6 @@ class DependencyInjectionTest extends TestCase $config = new DatabaseConfiguration('localhost', 3306, 'domnikl', '1234'); $connection = new DatabaseConnection($config); - $this->assertEquals('domnikl:1234@localhost:3306', $connection->getDsn()); + $this->assertSame('domnikl:1234@localhost:3306', $connection->getDsn()); } } diff --git a/Structural/Facade/Tests/FacadeTest.php b/Structural/Facade/Tests/FacadeTest.php index de75ae2..0017eea 100644 --- a/Structural/Facade/Tests/FacadeTest.php +++ b/Structural/Facade/Tests/FacadeTest.php @@ -31,6 +31,6 @@ class FacadeTest extends TestCase $facade->turnOn(); // but you can also access the underlying components - $this->assertEquals('Linux', $os->getName()); + $this->assertSame('Linux', $os->getName()); } } diff --git a/Structural/FluentInterface/Tests/FluentInterfaceTest.php b/Structural/FluentInterface/Tests/FluentInterfaceTest.php index ff1c058..8cea81b 100644 --- a/Structural/FluentInterface/Tests/FluentInterfaceTest.php +++ b/Structural/FluentInterface/Tests/FluentInterfaceTest.php @@ -14,6 +14,6 @@ class FluentInterfaceTest extends TestCase ->from('foobar', 'f') ->where('f.bar = ?'); - $this->assertEquals('SELECT foo, bar FROM foobar AS f WHERE f.bar = ?', (string) $query); + $this->assertSame('SELECT foo, bar FROM foobar AS f WHERE f.bar = ?', (string) $query); } } diff --git a/Structural/Flyweight/Tests/FlyweightTest.php b/Structural/Flyweight/Tests/FlyweightTest.php index 7380f46..492d15b 100644 --- a/Structural/Flyweight/Tests/FlyweightTest.php +++ b/Structural/Flyweight/Tests/FlyweightTest.php @@ -20,7 +20,7 @@ class FlyweightTest extends TestCase $flyweight = $factory->get($char); $rendered = $flyweight->render($font); - $this->assertEquals(sprintf('Character %s with font %s', $char, $font), $rendered); + $this->assertSame(sprintf('Character %s with font %s', $char, $font), $rendered); } } diff --git a/Structural/Proxy/Tests/ProxyTest.php b/Structural/Proxy/Tests/ProxyTest.php index 1fe363c..ec62b48 100644 --- a/Structural/Proxy/Tests/ProxyTest.php +++ b/Structural/Proxy/Tests/ProxyTest.php @@ -13,12 +13,12 @@ class ProxyTest extends TestCase $bankAccount->deposit(30); // this time balance is being calculated - $this->assertEquals(30, $bankAccount->getBalance()); + $this->assertSame(30, $bankAccount->getBalance()); // inheritance allows for BankAccountProxy to behave to an outsider exactly like ServerBankAccount $bankAccount->deposit(50); // this time the previously calculated balance is returned again without re-calculating it - $this->assertEquals(30, $bankAccount->getBalance()); + $this->assertSame(30, $bankAccount->getBalance()); } } From a3ca208ebe809f4665de7272b852c36c25e9686b Mon Sep 17 00:00:00 2001 From: HyperLiar Date: Tue, 2 Oct 2018 22:13:15 +0800 Subject: [PATCH 32/45] del namespace not used del namespace not used --- Behavioral/Iterator/Tests/IteratorTest.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/Behavioral/Iterator/Tests/IteratorTest.php b/Behavioral/Iterator/Tests/IteratorTest.php index 5a63078..8e714fa 100644 --- a/Behavioral/Iterator/Tests/IteratorTest.php +++ b/Behavioral/Iterator/Tests/IteratorTest.php @@ -4,8 +4,6 @@ namespace DesignPatterns\Behavioral\Iterator\Tests; use DesignPatterns\Behavioral\Iterator\Book; use DesignPatterns\Behavioral\Iterator\BookList; -use DesignPatterns\Behavioral\Iterator\BookListIterator; -use DesignPatterns\Behavioral\Iterator\BookListReverseIterator; use PHPUnit\Framework\TestCase; class IteratorTest extends TestCase From ea0bce0a7f97d0e504e50f6b12f176e3ddc74a6f Mon Sep 17 00:00:00 2001 From: u_mulder Date: Sat, 6 Oct 2018 19:40:03 +0300 Subject: [PATCH 33/45] =?UTF-8?q?Update=20RU=20translation=20=20-=20Update?= =?UTF-8?q?=20"Contribute"=20section=20of=20index=20page=20=20-=20Fix=20bu?= =?UTF-8?q?g=20with=20More-EAV=20section=20naming:=20must=20be=20`=D0=90?= =?UTF-8?q?=D1=82=D1=80=D0=B8=D0=B1=D1=83=D1=82`=20not=20`=D0=90=D1=80?= =?UTF-8?q?=D1=82=D0=B8=D0=B1=D1=83=D1=82`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- locale/ru/LC_MESSAGES/More/EAV/README.po | 8 ++++---- locale/ru/LC_MESSAGES/README.po | 24 ++++++++++++------------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/locale/ru/LC_MESSAGES/More/EAV/README.po b/locale/ru/LC_MESSAGES/More/EAV/README.po index 3bef2bb..da86264 100644 --- a/locale/ru/LC_MESSAGES/More/EAV/README.po +++ b/locale/ru/LC_MESSAGES/More/EAV/README.po @@ -11,7 +11,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-06-03 23:59+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Nikita Strelkov \n" +"Last-Translator: Kirill Baranov \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" @@ -20,7 +20,7 @@ msgstr "" #: ../../More/EAV/README.rst:2 msgid "`Entity-Attribute-Value (EAV)`__" -msgstr "`Сущность-Артибут-Значение`__" +msgstr "`Сущность-Атрибут-Значение`__" #: ../../More/EAV/README.rst:4 msgid "" @@ -45,7 +45,7 @@ msgstr "" "предназначенная для описания сущностей, в которых количество атрибутов " "(свойств, параметров), характеризующих их, потенциально огромно, " "но то количество, которое реально будет использоваться в конкретной " -"сущности относительно мало." +"сущности, относительно мало." #: ../../More/EAV/README.rst:15 msgid "Examples" @@ -61,7 +61,7 @@ msgstr "UML Диаграмма" #: ../../More/EAV/README.rst:97 msgid "Code" -msgstr "Code" +msgstr "Код" #: ../../More/EAV/README.rst:99 msgid "You can also find this code on `GitHub`_" diff --git a/locale/ru/LC_MESSAGES/README.po b/locale/ru/LC_MESSAGES/README.po index 5ef6690..466a61f 100644 --- a/locale/ru/LC_MESSAGES/README.po +++ b/locale/ru/LC_MESSAGES/README.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: DesignPatternsPHP 1.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-29 12:18+0200\n" -"PO-Revision-Date: 2015-05-29 19:46+0300\n" -"Last-Translator: Eugene Glotov \n" +"PO-Revision-Date: 2018-10-06 19:00+0300\n" +"Last-Translator: Kirill Baranov \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -55,17 +55,17 @@ msgstr "Участие в разработке" #: ../../README.rst:37 msgid "" -"Please feel free to fork and extend existing or add your own examples and " -"send a pull request with your changes! To establish a consistent code " -"quality, please check your code using `PHP CodeSniffer`_ against `PSR2 " -"standard`_ using ``./vendor/bin/phpcs -p --standard=PSR2 --ignore=vendor ." -"``." +"If you encounter any bugs or missing translations, please feel free " +"to fork and send a pull request with your changes. " +"To establish a consistent code quality, please check your code using " +"`PHP CodeSniffer`_ against `PSR2 standard`_ " +"using ``./vendor/bin/phpcs -p --standard=PSR2 --ignore=vendor .``." msgstr "" -"Мы приветствуем ответвления этого репозитория. Добавляйте свои примеры и " -"отправляйте запросы на изменение (pull requests)! Чтобы сохранять высокое " -"качество кода, пожалуйста, проверяйте ваш код на соответствие стандарту " -"`PSR2`. Для этого вы можете воспользоваться `PHP CodeSniffer`_ командой ``./" -"vendor/bin/phpcs -p --standard=PSR2 --ignore=vendor .``." +"Если вы обнаружили ошибки или отсутствие перевода, вы можете " +"прислать пулл реквест с вашими изменениями. " +"Чтобы сохранять высокое качество кода, пожалуйста, проверяйте ваш код с помощью " +"`PHP CodeSniffer`_ на соответствие стандарту `PSR2`_, " +"используя команду ``./vendor/bin/phpcs -p --standard=PSR2 --ignore=vendor .``." #: ../../README.rst:44 msgid "License" From 64a7d05c80b6583ad68299d254c4630cfa163fcb Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Mon, 15 Oct 2018 08:08:32 +0200 Subject: [PATCH 34/45] fixed copyright --- LICENSE | 2 +- conf.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LICENSE b/LICENSE index c29a41e..c9bcb97 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2011-2017 Dominik Liebler and contributors +Copyright (c) 2011-2018 Dominik Liebler and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/conf.py b/conf.py index 10ce0b0..48a1bd1 100644 --- a/conf.py +++ b/conf.py @@ -47,7 +47,7 @@ master_doc = 'README' # General information about the project. project = u'DesignPatternsPHP' -copyright = u'2015, Dominik Liebler and contributors' +copyright = u'2011-2018, Dominik Liebler and contributors' author = u'Dominik Liebler and contributors' # The version info for the project you're documenting, acts as replacement for From 4da7f7b2306b36b3af3c3316c643985ba0c37547 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Mon, 15 Oct 2018 08:17:20 +0200 Subject: [PATCH 35/45] removed not used _static path from Sphinx build --- conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf.py b/conf.py index 48a1bd1..15f4994 100644 --- a/conf.py +++ b/conf.py @@ -137,7 +137,7 @@ html_theme = 'sphinx_rtd_theme' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] +#html_static_path = ['_static'] # Add any extra paths that contain custom files (such as robots.txt or # .htaccess) here, relative to this directory. These files are copied From 9910fdf1118216d7cdb9bf15611c337f2900ce43 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Mon, 22 Oct 2018 21:37:43 +0200 Subject: [PATCH 36/45] #335 fixed issue regarding composer running twice --- Dockerfile | 11 ++++++----- Makefile | 9 +++------ docker-compose.yml | 10 +--------- docker/install-composer.sh | 17 +++++++++++++++++ docker/test_runner.sh | 28 ---------------------------- 5 files changed, 27 insertions(+), 48 deletions(-) create mode 100755 docker/install-composer.sh delete mode 100755 docker/test_runner.sh diff --git a/Dockerfile b/Dockerfile index b5413a3..1e8dbdb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,8 @@ FROM php:7.2.0-cli -WORKDIR /opt/php +WORKDIR /app RUN apt-get update \ - && apt-get install -y zlib1g-dev wget git-core \ - && docker-php-ext-install zip -ADD . /opt/php -CMD [ "./docker/test_runner.sh" ] + && apt-get install -y zlib1g-dev wget git-core python-pip \ + && docker-php-ext-install zip \ + && pip install Sphinx +ADD . /app +CMD [ "make", "cs", "test" ] diff --git a/Makefile b/Makefile index c3841a2..ff8edc0 100644 --- a/Makefile +++ b/Makefile @@ -191,14 +191,11 @@ pseudoxml: @echo @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." -composer.phar: - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" - php composer-setup.php - php -r "unlink('composer-setup.php');" - install: vendor +composer.phar: + docker/install-composer.sh + vendor: composer.phar php composer.phar install diff --git a/docker-compose.yml b/docker-compose.yml index 1242ae2..af6b1cc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,12 +5,4 @@ services: context: . dockerfile: Dockerfile volumes: - - .:/opt/php - command: ["/opt/php/docker/test_runner.sh"] - composer: - image: composer:latest - working_dir: /app - volumes: - - .:/app - command: - - install + - .:/app diff --git a/docker/install-composer.sh b/docker/install-composer.sh new file mode 100755 index 0000000..d39d20a --- /dev/null +++ b/docker/install-composer.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +EXPECTED_SIGNATURE="$(wget -q -O - https://composer.github.io/installer.sig)" +php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" +ACTUAL_SIGNATURE="$(php -r "echo hash_file('SHA384', 'composer-setup.php');")" + +if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ] +then + >&2 echo 'ERROR: Invalid installer signature' + rm composer-setup.php + exit 1 +fi + +php composer-setup.php --quiet +RESULT=$? +rm composer-setup.php +exit $RESULT diff --git a/docker/test_runner.sh b/docker/test_runner.sh deleted file mode 100755 index 6ce56da..0000000 --- a/docker/test_runner.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - -echo "Installing composer..." -EXPECTED_SIGNATURE=$(wget -q -O - https://composer.github.io/installer.sig) -php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" -ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');") - -if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ] -then - >&2 echo 'ERROR: Invalid installer signature' - rm composer-setup.php - exit 1 -fi - -php composer-setup.php --quiet -rm composer-setup.php - -echo "Downloading dependencies using composer..." -php composer.phar install --prefer-dist --no-interaction - -echo "Running tests..." -if ./vendor/bin/phpunit; then - echo "Tests passed successfully!" - exit 0 -else - echo "Tests failed :(" - exit 1 -fi From b0ac02f01efd2e2c21c28b6e5a093fd6f07f8b69 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Tue, 6 Nov 2018 20:18:30 +0100 Subject: [PATCH 37/45] removed ...Interface suffix and added method to interface --- Creational/StaticFactory/FormatNumber.php | 6 +- Creational/StaticFactory/FormatString.php | 6 +- Creational/StaticFactory/Formatter.php | 8 + .../StaticFactory/FormatterInterface.php | 7 - Creational/StaticFactory/README.rst | 6 +- Creational/StaticFactory/StaticFactory.php | 8 +- .../StaticFactory/uml/StaticFactory.uml | 72 ++--- Creational/StaticFactory/uml/uml.png | Bin 6632 -> 24083 bytes Creational/StaticFactory/uml/uml.svg | 283 +++++------------- 9 files changed, 136 insertions(+), 260 deletions(-) create mode 100644 Creational/StaticFactory/Formatter.php delete mode 100644 Creational/StaticFactory/FormatterInterface.php diff --git a/Creational/StaticFactory/FormatNumber.php b/Creational/StaticFactory/FormatNumber.php index 69fd9e1..7579a92 100644 --- a/Creational/StaticFactory/FormatNumber.php +++ b/Creational/StaticFactory/FormatNumber.php @@ -2,6 +2,10 @@ namespace DesignPatterns\Creational\StaticFactory; -class FormatNumber implements FormatterInterface +class FormatNumber implements Formatter { + public function format(string $input): string + { + return number_format($input); + } } diff --git a/Creational/StaticFactory/FormatString.php b/Creational/StaticFactory/FormatString.php index 14c2055..41e7221 100644 --- a/Creational/StaticFactory/FormatString.php +++ b/Creational/StaticFactory/FormatString.php @@ -2,6 +2,10 @@ namespace DesignPatterns\Creational\StaticFactory; -class FormatString implements FormatterInterface +class FormatString implements Formatter { + public function format(string $input): string + { + return $input; + } } diff --git a/Creational/StaticFactory/Formatter.php b/Creational/StaticFactory/Formatter.php new file mode 100644 index 0000000..f6abe51 --- /dev/null +++ b/Creational/StaticFactory/Formatter.php @@ -0,0 +1,8 @@ + - - PHP - \DesignPatterns\Creational\StaticFactory\FormatNumber - - \DesignPatterns\Creational\StaticFactory\FormatNumber - \DesignPatterns\Creational\StaticFactory\StaticFactory - \DesignPatterns\Creational\StaticFactory\FormatString - \DesignPatterns\Creational\StaticFactory\FormatterInterface - - - - - - - - - - - - - - - - - - - - Fields - Constants - Constructors - Methods - - private - - + + + PHP + \DesignPatterns\Creational\StaticFactory\FormatNumber + + \DesignPatterns\Creational\StaticFactory\FormatString + \DesignPatterns\Creational\StaticFactory\StaticFactory + \DesignPatterns\Creational\StaticFactory\Formatter + \DesignPatterns\Creational\StaticFactory\FormatNumber + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Creational/StaticFactory/uml/uml.png b/Creational/StaticFactory/uml/uml.png index f1b66881166f2e4c033080d07e013064721ced41..7b833daaa7990dbb6a256bcd10f16c749a17bdf8 100644 GIT binary patch literal 24083 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 z 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 NqMWL1sq|~#{{fXYv)%vz diff --git a/Creational/StaticFactory/uml/uml.svg b/Creational/StaticFactory/uml/uml.svg index e57a79b..2626370 100644 --- a/Creational/StaticFactory/uml/uml.svg +++ b/Creational/StaticFactory/uml/uml.svg @@ -1,207 +1,76 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FormatNumber - - - FormatNumber - - - - - - - - - - - - - - - - - - factory(type) - - - - - - - - - - - - - StaticFactory - - - StaticFactory - - - - - - - - - - - - - - - - FormatString - - - FormatString - - - - - - - - - - - - - - - - FormatterInterface - - - FormatterInterface - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 617754573cbd18f73a65466becce5ad59c5f388e Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Tue, 6 Nov 2018 20:33:42 +0100 Subject: [PATCH 38/45] removed ...Interface suffix and added 2nd service to Bridge example --- Structural/Bridge/Formatter.php | 8 + Structural/Bridge/FormatterInterface.php | 8 - Structural/Bridge/HelloWorldService.php | 2 +- Structural/Bridge/HtmlFormatter.php | 4 +- Structural/Bridge/PingService.php | 11 + Structural/Bridge/PlainTextFormatter.php | 4 +- Structural/Bridge/README.rst | 10 +- Structural/Bridge/Service.php | 12 +- Structural/Bridge/Tests/BridgeTest.php | 12 +- Structural/Bridge/uml/Bridge.uml | 42 +- Structural/Bridge/uml/uml.png | Bin 40921 -> 40805 bytes Structural/Bridge/uml/uml.svg | 691 +++-------------------- 12 files changed, 145 insertions(+), 659 deletions(-) create mode 100644 Structural/Bridge/Formatter.php delete mode 100644 Structural/Bridge/FormatterInterface.php create mode 100644 Structural/Bridge/PingService.php diff --git a/Structural/Bridge/Formatter.php b/Structural/Bridge/Formatter.php new file mode 100644 index 0000000..7d161bf --- /dev/null +++ b/Structural/Bridge/Formatter.php @@ -0,0 +1,8 @@ +implementation->format('Hello World'); } diff --git a/Structural/Bridge/HtmlFormatter.php b/Structural/Bridge/HtmlFormatter.php index 79e49b5..043bc15 100644 --- a/Structural/Bridge/HtmlFormatter.php +++ b/Structural/Bridge/HtmlFormatter.php @@ -2,9 +2,9 @@ namespace DesignPatterns\Structural\Bridge; -class HtmlFormatter implements FormatterInterface +class HtmlFormatter implements Formatter { - public function format(string $text) + public function format(string $text): string { return sprintf('

%s

', $text); } diff --git a/Structural/Bridge/PingService.php b/Structural/Bridge/PingService.php new file mode 100644 index 0000000..f72cf81 --- /dev/null +++ b/Structural/Bridge/PingService.php @@ -0,0 +1,11 @@ +implementation->format('pong'); + } +} diff --git a/Structural/Bridge/PlainTextFormatter.php b/Structural/Bridge/PlainTextFormatter.php index af46283..1c36cb5 100644 --- a/Structural/Bridge/PlainTextFormatter.php +++ b/Structural/Bridge/PlainTextFormatter.php @@ -2,9 +2,9 @@ namespace DesignPatterns\Structural\Bridge; -class PlainTextFormatter implements FormatterInterface +class PlainTextFormatter implements Formatter { - public function format(string $text) + public function format(string $text): string { return $text; } diff --git a/Structural/Bridge/README.rst b/Structural/Bridge/README.rst index e228166..4bb6ef5 100644 --- a/Structural/Bridge/README.rst +++ b/Structural/Bridge/README.rst @@ -25,9 +25,9 @@ Code You can also find this code on `GitHub`_ -FormatterInterface.php +Formatter.php -.. literalinclude:: FormatterInterface.php +.. literalinclude:: Formatter.php :language: php :linenos: @@ -55,6 +55,12 @@ HelloWorldService.php :language: php :linenos: +PingService.php + +.. literalinclude:: PingService.php + :language: php + :linenos: + Test ---- diff --git a/Structural/Bridge/Service.php b/Structural/Bridge/Service.php index 06c6252..479b50f 100644 --- a/Structural/Bridge/Service.php +++ b/Structural/Bridge/Service.php @@ -5,25 +5,25 @@ namespace DesignPatterns\Structural\Bridge; abstract class Service { /** - * @var FormatterInterface + * @var Formatter */ protected $implementation; /** - * @param FormatterInterface $printer + * @param Formatter $printer */ - public function __construct(FormatterInterface $printer) + public function __construct(Formatter $printer) { $this->implementation = $printer; } /** - * @param FormatterInterface $printer + * @param Formatter $printer */ - public function setImplementation(FormatterInterface $printer) + public function setImplementation(Formatter $printer) { $this->implementation = $printer; } - abstract public function get(); + abstract public function get(): string; } diff --git a/Structural/Bridge/Tests/BridgeTest.php b/Structural/Bridge/Tests/BridgeTest.php index 4b89495..10e3e58 100644 --- a/Structural/Bridge/Tests/BridgeTest.php +++ b/Structural/Bridge/Tests/BridgeTest.php @@ -9,13 +9,17 @@ use PHPUnit\Framework\TestCase; class BridgeTest extends TestCase { - public function testCanPrintUsingThePlainTextPrinter() + public function testCanPrintUsingThePlainTextFormatter() { $service = new HelloWorldService(new PlainTextFormatter()); - $this->assertSame('Hello World', $service->get()); - // now change the implementation and use the HtmlFormatter instead - $service->setImplementation(new HtmlFormatter()); + $this->assertSame('Hello World', $service->get()); + } + + public function testCanPrintUsingTheHtmlFormatter() + { + $service = new HelloWorldService(new HtmlFormatter()); + $this->assertSame('

Hello World

', $service->get()); } } diff --git a/Structural/Bridge/uml/Bridge.uml b/Structural/Bridge/uml/Bridge.uml index d63905a..7b0eb0f 100644 --- a/Structural/Bridge/uml/Bridge.uml +++ b/Structural/Bridge/uml/Bridge.uml @@ -1,38 +1,48 @@ PHP - \DesignPatterns\Structural\Bridge\HtmlFormatter + \DesignPatterns\Structural\Bridge\Service - \DesignPatterns\Structural\Bridge\PlainTextFormatter - \DesignPatterns\Structural\Bridge\FormatterInterface - \DesignPatterns\Structural\Bridge\Service - \DesignPatterns\Structural\Bridge\HelloWorldService - \DesignPatterns\Structural\Bridge\HtmlFormatter + \DesignPatterns\Structural\Bridge\PlainTextFormatter + \DesignPatterns\Structural\Bridge\Formatter + \DesignPatterns\Structural\Bridge\Service + \DesignPatterns\Structural\Bridge\PingService + \DesignPatterns\Structural\Bridge\HelloWorldService + \DesignPatterns\Structural\Bridge\HtmlFormatter - + + + - + - - - + + + - + - - - + + + + + + + + + - + Fields Constants + Constructors Methods private diff --git a/Structural/Bridge/uml/uml.png b/Structural/Bridge/uml/uml.png index 6de5b02756e43c3569bed03ae7ae5b6f8153d469..c5a88e0aff51d70c55e731f64f8eaa981cf1e472 100644 GIT binary patch literal 40805 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
afPJOJcNp{o%cuRBx>y4 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 + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - format(text) + + - - + + - - - + + - - + + - - PlainTextFormatter + + - - PlainTextFormatter + + - - + + - - - - - - - - - - - - - - - - - - format(text) - - - - - - - - - - - - - PlainTextFormatter - - - PlainTextFormatter - - - - - - - - - - - - - - - - - - - - - - format(text) - - - - - - - - - - - - - FormatterInterface - - - FormatterInterface - - - - - - - - - - - - - - - - - - - - - - format(text) - - - - - - - - - - - - - FormatterInterface - - - FormatterInterface - - - - - - - - - - - - - - - - - - - - - - - - - implementation - - - - - - - - - - - - - - - - setImplementation(printer) - - - - - - - - - - - - - get() - - - - - - - - - - - - - Service - - - Service - - - - - - - - - - - - - - - - - - - - - - implementation - - - - - - - - - - - - - - - - - - - setImplementation(printer) - - - - - - - - - - - - - - - - get() - - - - - - - - - - - - - Service - - - Service - - - - - - - - - - - - - - - - - - - - - - get() - - - - - - - - - - - - - HelloWorldService - - - HelloWorldService - - - - - - - - - - - - - - - - - - - - - - get() - - - - - - - - - - - - - HelloWorldService - - - HelloWorldService - - - - - - - - - - - - - - - - - - - - - - format(text) - - - - - - - - - - - - - HtmlFormatter - - - HtmlFormatter - - - - - - - - - - - - - - - - - - - - - - format(text) - - - - - - - - - - - - - HtmlFormatter - - - HtmlFormatter - - - - - - - - - - + + + + + + + + From 643b0539d1690eb0320b3496b1135ab0be100829 Mon Sep 17 00:00:00 2001 From: Marc Verney Date: Tue, 4 Dec 2018 09:47:31 +0100 Subject: [PATCH 39/45] Fix CsvParser skipping all rows when OPTION_CONTAINS_HEADER is true --- Creational/AbstractFactory/CsvParser.php | 1 + .../Tests/AbstractFactoryTest.php | 33 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/Creational/AbstractFactory/CsvParser.php b/Creational/AbstractFactory/CsvParser.php index fc259f6..5b02697 100644 --- a/Creational/AbstractFactory/CsvParser.php +++ b/Creational/AbstractFactory/CsvParser.php @@ -24,6 +24,7 @@ class CsvParser implements Parser foreach (explode(PHP_EOL, $input) as $line) { if (!$headerWasParsed && $this->skipHeaderLine === self::OPTION_CONTAINS_HEADER) { + $headerWasParsed = true; continue; } diff --git a/Creational/AbstractFactory/Tests/AbstractFactoryTest.php b/Creational/AbstractFactory/Tests/AbstractFactoryTest.php index 1500837..4ef2433 100644 --- a/Creational/AbstractFactory/Tests/AbstractFactoryTest.php +++ b/Creational/AbstractFactory/Tests/AbstractFactoryTest.php @@ -17,6 +17,39 @@ class AbstractFactoryTest extends TestCase $this->assertInstanceOf(CsvParser::class, $parser); } + public function testCsvParserCanParse() + { + $factory = new ParserFactory(); + $parser = $factory->createCsvParser(CsvParser::OPTION_CONTAINS_NO_HEADER); + + $result = $parser->parse("A0,A1,A2\nB0,B1,B2\nC0,C1,C2"); + + $this->assertEquals( + [ + ['A0', 'A1', 'A2'], + ['B0', 'B1', 'B2'], + ['C0', 'C1', 'C2'] + ], + $result + ); + } + + public function testCsvParserCanSkipHeader() + { + $factory = new ParserFactory(); + $parser = $factory->createCsvParser(CsvParser::OPTION_CONTAINS_HEADER); + + $result = $parser->parse("A0,A1,A2\nB0,B1,B2\nC0,C1,C2"); + + $this->assertEquals( + [ + ['B0', 'B1', 'B2'], + ['C0', 'C1', 'C2'] + ], + $result + ); + } + public function testCanCreateJsonParser() { $factory = new ParserFactory(); From aa11ce235167082012d84699d7111aae16d0cd2a Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Fri, 14 Dec 2018 20:20:23 +0100 Subject: [PATCH 40/45] update to PHP 7.3 --- .travis.yml | 1 + Dockerfile | 4 ++-- composer.lock | 22 +++++++++++----------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index ae675bf..edfae32 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,7 @@ sudo: false php: - 7.1 - 7.2 + - 7.3 matrix: fast_finish: true diff --git a/Dockerfile b/Dockerfile index 1e8dbdb..de87d01 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ -FROM php:7.2.0-cli +FROM php:7.3.0-cli WORKDIR /app RUN apt-get update \ - && apt-get install -y zlib1g-dev wget git-core python-pip \ + && apt-get install -y libzip-dev wget git-core python-pip \ && docker-php-ext-install zip \ && pip install Sphinx ADD . /app diff --git a/composer.lock b/composer.lock index 35105d1..b0a014e 100644 --- a/composer.lock +++ b/composer.lock @@ -1,7 +1,7 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], "content-hash": "af39391ec89831e5552cd0018816e53e", @@ -725,16 +725,16 @@ }, { "name": "phpunit/phpunit", - "version": "7.1.1", + "version": "7.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f7fe5127889519e421600fe0feeb113a5e210f20" + "reference": "6a17c170fb92845896e1b3b00fcb462cd4b3c017" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f7fe5127889519e421600fe0feeb113a5e210f20", - "reference": "f7fe5127889519e421600fe0feeb113a5e210f20", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6a17c170fb92845896e1b3b00fcb462cd4b3c017", + "reference": "6a17c170fb92845896e1b3b00fcb462cd4b3c017", "shasum": "" }, "require": { @@ -801,7 +801,7 @@ "testing", "xunit" ], - "time": "2018-04-06T12:39:30+00:00" + "time": "2018-04-10T11:40:22+00:00" }, { "name": "phpunit/phpunit-mock-objects", @@ -1424,16 +1424,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.2.3", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "4842476c434e375f9d3182ff7b89059583aa8b27" + "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/4842476c434e375f9d3182ff7b89059583aa8b27", - "reference": "4842476c434e375f9d3182ff7b89059583aa8b27", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/6ad28354c04b364c3c71a34e4a18b629cc3b231e", + "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e", "shasum": "" }, "require": { @@ -1471,7 +1471,7 @@ "phpcs", "standards" ], - "time": "2018-02-20T21:35:23+00:00" + "time": "2018-09-23T23:08:17+00:00" }, { "name": "theseer/tokenizer", From 2821ec337d9aff518d505b8d7ce5162261733c13 Mon Sep 17 00:00:00 2001 From: Koray Date: Thu, 20 Dec 2018 11:14:46 +0100 Subject: [PATCH 41/45] Make the subject genderless --- Creational/AbstractFactory/README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Creational/AbstractFactory/README.rst b/Creational/AbstractFactory/README.rst index b494ee9..e44fabc 100644 --- a/Creational/AbstractFactory/README.rst +++ b/Creational/AbstractFactory/README.rst @@ -7,7 +7,7 @@ Purpose To create series of related or dependent objects without specifying their concrete classes. Usually the created classes all implement the same interface. The client of the abstract factory does not care about -how these objects are created, he just knows how they go together. +how these objects are created, it just knows how they go together. UML Diagram ----------- From 426890aa62786a01e2a3a3f1bdaadcc6381358fe Mon Sep 17 00:00:00 2001 From: Littlesqx Date: Wed, 26 Dec 2018 11:06:29 +0800 Subject: [PATCH 42/45] typo --- Behavioral/TemplateMethod/Tests/JourneyTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Behavioral/TemplateMethod/Tests/JourneyTest.php b/Behavioral/TemplateMethod/Tests/JourneyTest.php index 89d9b8e..7fbe673 100644 --- a/Behavioral/TemplateMethod/Tests/JourneyTest.php +++ b/Behavioral/TemplateMethod/Tests/JourneyTest.php @@ -20,8 +20,8 @@ class JourneyTest extends TestCase public function testCanGetOnAJourneyToACity() { - $beachJourney = new TemplateMethod\CityJourney(); - $beachJourney->takeATrip(); + $cityJourney = new TemplateMethod\CityJourney(); + $cityJourney->takeATrip(); $this->assertSame( [ @@ -31,7 +31,7 @@ class JourneyTest extends TestCase 'Buy a gift', 'Taking the plane' ], - $beachJourney->getThingsToDo() + $cityJourney->getThingsToDo() ); } } From 23e520aee9e5919cb7f5279e7a01c0487d08ec94 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Thu, 10 Jan 2019 20:09:02 +0100 Subject: [PATCH 43/45] #352 re-generated outdated assets for Specification --- .../Specification/uml/Specification.uml | 107 ++- Behavioral/Specification/uml/uml.png | Bin 25534 -> 62203 bytes Behavioral/Specification/uml/uml.svg | 877 +++--------------- 3 files changed, 168 insertions(+), 816 deletions(-) diff --git a/Behavioral/Specification/uml/Specification.uml b/Behavioral/Specification/uml/Specification.uml index 003e549..c28b2a1 100644 --- a/Behavioral/Specification/uml/Specification.uml +++ b/Behavioral/Specification/uml/Specification.uml @@ -1,55 +1,52 @@ - - - PHP - \DesignPatterns\Behavioral\Specification\AbstractSpecification - - \DesignPatterns\Behavioral\Specification\PriceSpecification - \DesignPatterns\Behavioral\Specification\Not - \DesignPatterns\Behavioral\Specification\SpecificationInterface - \DesignPatterns\Behavioral\Specification\Plus - \DesignPatterns\Behavioral\Specification\AbstractSpecification - \DesignPatterns\Behavioral\Specification\Either - \DesignPatterns\Behavioral\Specification\Item - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Fields - Constants - Constructors - Methods - - private - - + + + PHP + \DesignPatterns\Behavioral\Specification\AndSpecification + + \DesignPatterns\Behavioral\Specification\OrSpecification + \DesignPatterns\Behavioral\Specification\PriceSpecification + \DesignPatterns\Behavioral\Specification\NotSpecification + \DesignPatterns\Behavioral\Specification\Item + \DesignPatterns\Behavioral\Specification\AndSpecification + \DesignPatterns\Behavioral\Specification\SpecificationInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \DesignPatterns\Behavioral\Specification\AndSpecification + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Behavioral/Specification/uml/uml.png b/Behavioral/Specification/uml/uml.png index 0b31e49d53921416de9ae9471b8c82d377ca1d56..1728ac451b8d1e89bf9d7feb7f0be4ca1e2a2953 100644 GIT binary patch literal 62203 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

r)IOt_WWR`5(*^f@NBgU%GTDa8L{KkbL&> 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

(JN8rLnIO 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 literal 25534 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - maxPrice - - - - - - - - - - minPrice - - - - - - - - - - - - setMaxPrice(maxPrice) - - - - - - - - - setMinPrice(minPrice) - - - - - - - - - isSatisfiedBy(item) - - - - - - - - - - - - - PriceSpecification - - - PriceSpecification - - - - - - - - - - - - - - - - - - - spec - - - - - - - - - - - - __construct(spec) - - - - - - - - - - - - isSatisfiedBy(item) - - - - - - - - - - - - - Not - - - Not - - - - - - - - - - - - - - - - - - isSatisfiedBy(item) - - - - - - - - - plus(spec) - - - - - - - - - either(spec) - - - - - - - - - not() - - - - - - - - - - - - - SpecificationInterface - - - SpecificationInterface - - - - - - - - - - - - - - - - - - - left - - - - - - - - - - right - - - - - - - - - - - - __construct(left, right) - - - - - - - - - - - - isSatisfiedBy(item) - - - - - - - - - - - - - Plus - - - Plus - - - - - - - - - - - - - - - - - - isSatisfiedBy(item) - - - - - - - - - plus(spec) - - - - - - - - - either(spec) - - - - - - - - - not() - - - - - - - - - - - - - AbstractSpecification - - - AbstractSpecification - - - - - - - - - - - - - - - - - - - left - - - - - - - - - - right - - - - - - - - - - - - __construct(left, right) - - - - - - - - - - - - isSatisfiedBy(item) - - - - - - - - - - - - - Either - - - Either - - - - - - - - - - - - - - - - - - - price - - - - - - - - - - - - __construct(price) - - - - - - - - - - - - getPrice() - - - - - - - - - - - - - Item - - - Item - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 1295e8d4ecf89c826ffea00aeddfeb41fee5869e Mon Sep 17 00:00:00 2001 From: Pablo Garcia Date: Tue, 22 Jan 2019 14:50:22 -0200 Subject: [PATCH 44/45] Fixed some translations to pt_BR, especially in Structural section. --- README.md | 0 docker/install-composer.sh | 0 locale/pt_BR/LC_MESSAGES/README.po | 2 +- .../Structural/DependencyInjection/README.po | 16 +++++++++------- locale/pt_BR/LC_MESSAGES/Structural/README.po | 11 +++++++---- 5 files changed, 17 insertions(+), 12 deletions(-) mode change 100755 => 100644 README.md mode change 100755 => 100644 docker/install-composer.sh diff --git a/README.md b/README.md old mode 100755 new mode 100644 diff --git a/docker/install-composer.sh b/docker/install-composer.sh old mode 100755 new mode 100644 diff --git a/locale/pt_BR/LC_MESSAGES/README.po b/locale/pt_BR/LC_MESSAGES/README.po index ab971d8..96f56c8 100644 --- a/locale/pt_BR/LC_MESSAGES/README.po +++ b/locale/pt_BR/LC_MESSAGES/README.po @@ -25,7 +25,7 @@ msgstr "" "Esta é uma coleção de padrões de projetos conhecidos e alguns códigos de exemplo de como " "implementá-los em PHP. Todo padrão tem uma pequena lista de exemplos (muitos deles " "vindos do Zend Framework, Symfony2 ou Doctrine2 já que tenho mais familiaridade com " -"eles" +"eles)." #: ../../README.rst:16 msgid "" diff --git a/locale/pt_BR/LC_MESSAGES/Structural/DependencyInjection/README.po b/locale/pt_BR/LC_MESSAGES/Structural/DependencyInjection/README.po index f017805..9166ae6 100644 --- a/locale/pt_BR/LC_MESSAGES/Structural/DependencyInjection/README.po +++ b/locale/pt_BR/LC_MESSAGES/Structural/DependencyInjection/README.po @@ -13,21 +13,23 @@ msgstr "" #: ../../Structural/DependencyInjection/README.rst:2 msgid "`Dependency Injection`__" -msgstr "" +msgstr "Injeção de dependência" #: ../../Structural/DependencyInjection/README.rst:5 msgid "Purpose" -msgstr "" +msgstr "Objetivo" #: ../../Structural/DependencyInjection/README.rst:7 msgid "" "To implement a loosely coupled architecture in order to get better testable," " maintainable and extendable code." msgstr "" +"Para implementar uma arquitetura menos acoplada com o objetivo de obter um código " +"mais fácil de testar, de melhor manutenibilidade e mais extensível." #: ../../Structural/DependencyInjection/README.rst:11 msgid "Usage" -msgstr "" +msgstr "Uso" #: ../../Structural/DependencyInjection/README.rst:13 msgid "" @@ -68,16 +70,16 @@ msgstr "" #: ../../Structural/DependencyInjection/README.rst:37 msgid "UML Diagram" -msgstr "" +msgstr "Diagrama UML" #: ../../Structural/DependencyInjection/README.rst:44 msgid "Code" -msgstr "" +msgstr "Código" #: ../../Structural/DependencyInjection/README.rst:46 msgid "You can also find this code on `GitHub`_" -msgstr "" +msgstr "Você pode também ver este código no `GitHub`_" #: ../../Structural/DependencyInjection/README.rst:73 msgid "Test" -msgstr "" +msgstr "Teste" diff --git a/locale/pt_BR/LC_MESSAGES/Structural/README.po b/locale/pt_BR/LC_MESSAGES/Structural/README.po index 7957330..8912785 100644 --- a/locale/pt_BR/LC_MESSAGES/Structural/README.po +++ b/locale/pt_BR/LC_MESSAGES/Structural/README.po @@ -4,16 +4,16 @@ msgstr "" "Project-Id-Version: DesignPatternsPHP 1.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-29 12:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"PO-Revision-Date: 2019-01-22 14:45+0300\n" +"Last-Translator: Pablo Juan Garcia \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" #: ../../Structural/README.rst:2 msgid "`Structural`__" -msgstr "" +msgstr "`Estrutural`__" #: ../../Structural/README.rst:4 msgid "" @@ -21,3 +21,6 @@ msgid "" " ease the design by identifying a simple way to realize relationships " "between entities." msgstr "" +"Em Engenharia de Software, padrões de design Estrutural são padrões que" +" facilitam o desenvolvimento identificando uma forma simples para realizar " +" relacionamentos entre entidades." \ No newline at end of file From f454cb2bf9ef44ae7887959c7953dbfb7ef063b9 Mon Sep 17 00:00:00 2001 From: Pablo Garcia Date: Tue, 22 Jan 2019 15:55:09 -0200 Subject: [PATCH 45/45] The 2nd part of my translations in Structural section. --- .../Structural/DependencyInjection/README.po | 25 ++++++++++++++++--- locale/pt_BR/LC_MESSAGES/Structural/README.po | 4 +-- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/locale/pt_BR/LC_MESSAGES/Structural/DependencyInjection/README.po b/locale/pt_BR/LC_MESSAGES/Structural/DependencyInjection/README.po index 9166ae6..98f443f 100644 --- a/locale/pt_BR/LC_MESSAGES/Structural/DependencyInjection/README.po +++ b/locale/pt_BR/LC_MESSAGES/Structural/DependencyInjection/README.po @@ -4,12 +4,12 @@ msgstr "" "Project-Id-Version: DesignPatternsPHP 1.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-29 12:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"PO-Revision-Date: 2019-01-22 15:36+0300\n" +"Last-Translator: Pablo Juan Garcia \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" #: ../../Structural/DependencyInjection/README.rst:2 msgid "`Dependency Injection`__" @@ -38,6 +38,10 @@ msgid "" " ``Connection``, which is not very good for testing and extending " "``Connection``." msgstr "" +"Configuration é injetado e ``Connection`` irá receber tudo o que é necessário " +" de ``$config``. Sem a Injeção de Dependência, a configuração poderia ser criada " +" diretamente em ``Connection``, o que não é muito bom para testar e extender " +"``Connection``." #: ../../Structural/DependencyInjection/README.rst:18 msgid "" @@ -48,10 +52,16 @@ msgid "" " Read more about Inversion of control `here " "`__." msgstr "" +"Note que estamos seguindo o princípio da inversão de controle em ``Connection`` por " +" estar perguntando ``$config`` para implementar a interface ``Parameters``. Isto " +" desacopla nossos componentes. Nós não nos importamos de onde vem a fonte de informação, " +" nós apenas garantimos que ``$config`` tem certos métodos para recuperar a informação." +" Leia mais sobre Inversão de Controle `aqui " +"`__." #: ../../Structural/DependencyInjection/README.rst:26 msgid "Examples" -msgstr "" +msgstr "Exemplos" #: ../../Structural/DependencyInjection/README.rst:28 msgid "" @@ -60,6 +70,10 @@ msgid "" "create a mock object of the configuration and inject that into the " "``Connection`` object" msgstr "" +"O ORM Doctrine 2 usa injeção de dependência, por exemplo, para a configuração " +" que é injetada no objeto ``Connection``. Para propósitos de teste, algúem pode " +" facilmente criar um objeto simulado na configuração e injetá-lo no objeto " +"``Connection``." #: ../../Structural/DependencyInjection/README.rst:32 msgid "" @@ -67,6 +81,9 @@ msgid "" "objects via a configuration array and inject them where needed (i.e. in " "Controllers)" msgstr "" +"Symfony e Zend Framework 2 já tem recipientes para injeção de dependência " +" que criam objetos através de um array de configuração e injetam eles onde " +" for necessário (p.e. nos Controllers)" #: ../../Structural/DependencyInjection/README.rst:37 msgid "UML Diagram" diff --git a/locale/pt_BR/LC_MESSAGES/Structural/README.po b/locale/pt_BR/LC_MESSAGES/Structural/README.po index 8912785..aebab58 100644 --- a/locale/pt_BR/LC_MESSAGES/Structural/README.po +++ b/locale/pt_BR/LC_MESSAGES/Structural/README.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: DesignPatternsPHP 1.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-29 12:18+0200\n" -"PO-Revision-Date: 2019-01-22 14:45+0300\n" +"PO-Revision-Date: 2019-01-22 15:41+0300\n" "Last-Translator: Pablo Juan Garcia \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,6 +21,6 @@ msgid "" " ease the design by identifying a simple way to realize relationships " "between entities." msgstr "" -"Em Engenharia de Software, padrões de design Estrutural são padrões que" +"Em Engenharia de Software, padrões de projeto estruturais são padrões que" " facilitam o desenvolvimento identificando uma forma simples para realizar " " relacionamentos entre entidades." \ No newline at end of file