@@ -16,11 +16,11 @@ |
||
| 16 | 16 | |
| 17 | 17 | class AfterData extends HookData |
| 18 | 18 | { |
| 19 | - /** |
|
| 19 | +/** |
|
| 20 | 20 | * @inheritDoc |
| 21 | 21 | */ |
| 22 | - protected function getType(): string |
|
| 23 | - { |
|
| 24 | - return 'after'; |
|
| 25 | - } |
|
| 22 | +protected function getType(): string |
|
| 23 | +{ |
|
| 24 | +return 'after'; |
|
| 25 | +} |
|
| 26 | 26 | } |
@@ -16,11 +16,11 @@ |
||
| 16 | 16 | |
| 17 | 17 | class BeforeData extends HookData |
| 18 | 18 | { |
| 19 | - /** |
|
| 19 | +/** |
|
| 20 | 20 | * @inheritDoc |
| 21 | 21 | */ |
| 22 | - protected function getType(): string |
|
| 23 | - { |
|
| 24 | - return 'before'; |
|
| 25 | - } |
|
| 22 | +protected function getType(): string |
|
| 23 | +{ |
|
| 24 | +return 'before'; |
|
| 25 | +} |
|
| 26 | 26 | } |
@@ -30,16 +30,16 @@ |
||
| 30 | 30 | |
| 31 | 31 | abstract class AbstractRequestPlugin extends AbstractPlugin implements CallableRegistryInterface, RequestHandlerInterface |
| 32 | 32 | { |
| 33 | - /** |
|
| 33 | +/** |
|
| 34 | 34 | * @var Target |
| 35 | 35 | */ |
| 36 | - protected $xTarget = null; |
|
| 36 | +protected $xTarget = null; |
|
| 37 | 37 | |
| 38 | - /** |
|
| 38 | +/** |
|
| 39 | 39 | * @inheritDoc |
| 40 | 40 | */ |
| 41 | - public function getTarget(): ?Target |
|
| 42 | - { |
|
| 43 | - return $this->xTarget; |
|
| 44 | - } |
|
| 41 | +public function getTarget(): ?Target |
|
| 42 | +{ |
|
| 43 | +return $this->xTarget; |
|
| 44 | +} |
|
| 45 | 45 | } |
@@ -7,21 +7,21 @@ discard block |
||
| 7 | 7 | |
| 8 | 8 | interface RequestHandlerInterface |
| 9 | 9 | { |
| 10 | - /** |
|
| 10 | +/** |
|
| 11 | 11 | * Get the target function or class and method |
| 12 | 12 | * |
| 13 | 13 | * @return Target|null |
| 14 | 14 | */ |
| 15 | - public function getTarget(): ?Target; |
|
| 15 | +public function getTarget(): ?Target; |
|
| 16 | 16 | |
| 17 | - /** |
|
| 17 | +/** |
|
| 18 | 18 | * @param ServerRequestInterface $xRequest |
| 19 | 19 | * |
| 20 | 20 | * @return Target |
| 21 | 21 | */ |
| 22 | - public function setTarget(ServerRequestInterface $xRequest): Target; |
|
| 22 | +public function setTarget(ServerRequestInterface $xRequest): Target; |
|
| 23 | 23 | |
| 24 | - /** |
|
| 24 | +/** |
|
| 25 | 25 | * Check if this plugin can process the current request |
| 26 | 26 | * |
| 27 | 27 | * Called by the <Jaxon\Plugin\RequestManager> when a request has been received to determine |
@@ -31,9 +31,9 @@ discard block |
||
| 31 | 31 | * |
| 32 | 32 | * @return bool |
| 33 | 33 | */ |
| 34 | - public static function canProcessRequest(ServerRequestInterface $xRequest): bool; |
|
| 34 | +public static function canProcessRequest(ServerRequestInterface $xRequest): bool; |
|
| 35 | 35 | |
| 36 | - /** |
|
| 36 | +/** |
|
| 37 | 37 | * Process the current request |
| 38 | 38 | * |
| 39 | 39 | * Called by the <Jaxon\Plugin\RequestManager> when a request is being processed. |
@@ -42,5 +42,5 @@ discard block |
||
| 42 | 42 | * |
| 43 | 43 | * @return void |
| 44 | 44 | */ |
| 45 | - public function processRequest(): void; |
|
| 45 | +public function processRequest(): void; |
|
| 46 | 46 | } |
@@ -20,7 +20,7 @@ discard block |
||
| 20 | 20 | |
| 21 | 21 | abstract class AbstractAnnotation extends Annotation implements IAnnotationParser |
| 22 | 22 | { |
| 23 | - /** |
|
| 23 | +/** |
|
| 24 | 24 | * Save the annotation value |
| 25 | 25 | * |
| 26 | 26 | * @param Metadata $xMetadata |
@@ -28,5 +28,5 @@ discard block |
||
| 28 | 28 | * |
| 29 | 29 | * @return void |
| 30 | 30 | */ |
| 31 | - abstract public function saveValue(Metadata $xMetadata, string $sMethod = '*'): void; |
|
| 31 | +abstract public function saveValue(Metadata $xMetadata, string $sMethod = '*'): void; |
|
| 32 | 32 | } |
@@ -10,33 +10,33 @@ |
||
| 10 | 10 | |
| 11 | 11 | final class MinifierTest extends TestCase |
| 12 | 12 | { |
| 13 | - public function testFileNotFound() |
|
| 14 | - { |
|
| 15 | - $sSrcFile = __DIR__ . '/../minifier/nosrc.js'; |
|
| 16 | - $sDstMinFile = __DIR__ . '/../minifier/dst.min.js'; |
|
| 17 | - $xMinifier = new FileMinifier(); |
|
| 18 | - |
|
| 19 | - $this->assertFalse($xMinifier->minify($sSrcFile, $sDstMinFile)); |
|
| 20 | - } |
|
| 21 | - |
|
| 22 | - public function testFileError() |
|
| 23 | - { |
|
| 24 | - $sSrcFile = __DIR__ . '/../minifier/error.js'; |
|
| 25 | - $sDstMinFile = __DIR__ . '/../minifier/dst.min.js'; |
|
| 26 | - $xMinifier = new FileMinifier(); |
|
| 27 | - |
|
| 28 | - $this->assertFalse($xMinifier->minify($sSrcFile, $sDstMinFile)); |
|
| 29 | - } |
|
| 30 | - |
|
| 31 | - public function testMinifier() |
|
| 32 | - { |
|
| 33 | - $sSrcFile = __DIR__ . '/../minifier/src.js'; |
|
| 34 | - $sSrcMinFile = __DIR__ . '/../minifier/src.min.js'; |
|
| 35 | - $sDstMinFile = __DIR__ . '/../minifier/dst.min.js'; |
|
| 36 | - $xMinifier = new FileMinifier(); |
|
| 37 | - |
|
| 38 | - $this->assertTrue($xMinifier->minify($sSrcFile, $sDstMinFile)); |
|
| 39 | - $this->assertTrue(file_exists($sDstMinFile)); |
|
| 40 | - $this->assertEquals(filesize($sSrcMinFile), filesize($sDstMinFile)); |
|
| 41 | - } |
|
| 13 | +public function testFileNotFound() |
|
| 14 | +{ |
|
| 15 | +$sSrcFile = __DIR__ . '/../minifier/nosrc.js'; |
|
| 16 | +$sDstMinFile = __DIR__ . '/../minifier/dst.min.js'; |
|
| 17 | +$xMinifier = new FileMinifier(); |
|
| 18 | + |
|
| 19 | +$this->assertFalse($xMinifier->minify($sSrcFile, $sDstMinFile)); |
|
| 20 | +} |
|
| 21 | + |
|
| 22 | +public function testFileError() |
|
| 23 | +{ |
|
| 24 | +$sSrcFile = __DIR__ . '/../minifier/error.js'; |
|
| 25 | +$sDstMinFile = __DIR__ . '/../minifier/dst.min.js'; |
|
| 26 | +$xMinifier = new FileMinifier(); |
|
| 27 | + |
|
| 28 | +$this->assertFalse($xMinifier->minify($sSrcFile, $sDstMinFile)); |
|
| 29 | +} |
|
| 30 | + |
|
| 31 | +public function testMinifier() |
|
| 32 | +{ |
|
| 33 | +$sSrcFile = __DIR__ . '/../minifier/src.js'; |
|
| 34 | +$sSrcMinFile = __DIR__ . '/../minifier/src.min.js'; |
|
| 35 | +$sDstMinFile = __DIR__ . '/../minifier/dst.min.js'; |
|
| 36 | +$xMinifier = new FileMinifier(); |
|
| 37 | + |
|
| 38 | +$this->assertTrue($xMinifier->minify($sSrcFile, $sDstMinFile)); |
|
| 39 | +$this->assertTrue(file_exists($sDstMinFile)); |
|
| 40 | +$this->assertEquals(filesize($sSrcMinFile), filesize($sDstMinFile)); |
|
| 41 | +} |
|
| 42 | 42 | } |
@@ -7,51 +7,51 @@ |
||
| 7 | 7 | |
| 8 | 8 | final class TemplateTest extends TestCase |
| 9 | 9 | { |
| 10 | - /** |
|
| 10 | +/** |
|
| 11 | 11 | * @var TemplateEngine |
| 12 | 12 | */ |
| 13 | - protected $xTemplateEngine; |
|
| 14 | - |
|
| 15 | - protected function setUp(): void |
|
| 16 | - { |
|
| 17 | - $this->xTemplateEngine = new TemplateEngine(); |
|
| 18 | - $this->xTemplateEngine->addNamespace('test', __DIR__ . '/../templates', '.php'); |
|
| 19 | - } |
|
| 20 | - |
|
| 21 | - public function testTemplate() |
|
| 22 | - { |
|
| 23 | - $this->assertEquals('Good morning Mr. Johnson', |
|
| 24 | - $this->xTemplateEngine->render('test::simple', ['title' => 'Mr.', 'name' => 'Johnson'])); |
|
| 25 | - } |
|
| 26 | - |
|
| 27 | - public function testDefaultNamespace() |
|
| 28 | - { |
|
| 29 | - $this->xTemplateEngine->setDefaultNamespace('test'); |
|
| 30 | - $this->assertEquals('Good morning Mr. Johnson', |
|
| 31 | - $this->xTemplateEngine->render('simple', ['title' => 'Mr.', 'name' => 'Johnson'])); |
|
| 32 | - } |
|
| 33 | - |
|
| 34 | - public function testRenderEmbeddedTemplate() |
|
| 35 | - { |
|
| 36 | - $this->assertEquals('Good morning Mr. Johnson.', |
|
| 37 | - $this->xTemplateEngine->render('test::embedded-content', ['title' => 'Mr.', 'name' => 'Johnson'])); |
|
| 38 | - } |
|
| 39 | - |
|
| 40 | - public function testIncludeEmbeddedTemplate() |
|
| 41 | - { |
|
| 42 | - $this->assertEquals('Good morning Mr. Johnson.', |
|
| 43 | - $this->xTemplateEngine->render('test::embedded-include', ['title' => 'Mr.', 'name' => 'Johnson'])); |
|
| 44 | - } |
|
| 45 | - |
|
| 46 | - public function testMissingTemplate() |
|
| 47 | - { |
|
| 48 | - $this->assertEquals('', |
|
| 49 | - $this->xTemplateEngine->render('test::missing', ['title' => 'Mr.', 'name' => 'Johnson'])); |
|
| 50 | - } |
|
| 51 | - |
|
| 52 | - public function testUnknownNamespace() |
|
| 53 | - { |
|
| 54 | - $this->assertEquals('', |
|
| 55 | - $this->xTemplateEngine->render('toast::embedded-include', ['title' => 'Mr.', 'name' => 'Johnson'])); |
|
| 56 | - } |
|
| 13 | +protected $xTemplateEngine; |
|
| 14 | + |
|
| 15 | +protected function setUp(): void |
|
| 16 | +{ |
|
| 17 | +$this->xTemplateEngine = new TemplateEngine(); |
|
| 18 | +$this->xTemplateEngine->addNamespace('test', __DIR__ . '/../templates', '.php'); |
|
| 19 | +} |
|
| 20 | + |
|
| 21 | +public function testTemplate() |
|
| 22 | +{ |
|
| 23 | +$this->assertEquals('Good morning Mr. Johnson', |
|
| 24 | +$this->xTemplateEngine->render('test::simple', ['title' => 'Mr.', 'name' => 'Johnson'])); |
|
| 25 | +} |
|
| 26 | + |
|
| 27 | +public function testDefaultNamespace() |
|
| 28 | +{ |
|
| 29 | +$this->xTemplateEngine->setDefaultNamespace('test'); |
|
| 30 | +$this->assertEquals('Good morning Mr. Johnson', |
|
| 31 | +$this->xTemplateEngine->render('simple', ['title' => 'Mr.', 'name' => 'Johnson'])); |
|
| 32 | +} |
|
| 33 | + |
|
| 34 | +public function testRenderEmbeddedTemplate() |
|
| 35 | +{ |
|
| 36 | +$this->assertEquals('Good morning Mr. Johnson.', |
|
| 37 | +$this->xTemplateEngine->render('test::embedded-content', ['title' => 'Mr.', 'name' => 'Johnson'])); |
|
| 38 | +} |
|
| 39 | + |
|
| 40 | +public function testIncludeEmbeddedTemplate() |
|
| 41 | +{ |
|
| 42 | +$this->assertEquals('Good morning Mr. Johnson.', |
|
| 43 | +$this->xTemplateEngine->render('test::embedded-include', ['title' => 'Mr.', 'name' => 'Johnson'])); |
|
| 44 | +} |
|
| 45 | + |
|
| 46 | +public function testMissingTemplate() |
|
| 47 | +{ |
|
| 48 | +$this->assertEquals('', |
|
| 49 | +$this->xTemplateEngine->render('test::missing', ['title' => 'Mr.', 'name' => 'Johnson'])); |
|
| 50 | +} |
|
| 51 | + |
|
| 52 | +public function testUnknownNamespace() |
|
| 53 | +{ |
|
| 54 | +$this->assertEquals('', |
|
| 55 | +$this->xTemplateEngine->render('toast::embedded-include', ['title' => 'Mr.', 'name' => 'Johnson'])); |
|
| 56 | +} |
|
| 57 | 57 | } |
@@ -7,87 +7,87 @@ |
||
| 7 | 7 | |
| 8 | 8 | final class TranslatorTest extends TestCase |
| 9 | 9 | { |
| 10 | - /** |
|
| 10 | +/** |
|
| 11 | 11 | * @var Translator |
| 12 | 12 | */ |
| 13 | - protected $xTranslator; |
|
| 13 | +protected $xTranslator; |
|
| 14 | 14 | |
| 15 | - protected function setUp(): void |
|
| 16 | - { |
|
| 17 | - $this->xTranslator = new Translator(); |
|
| 18 | - $this->xTranslator->loadTranslations(__DIR__ . '/../translations/test.en.php', 'en'); |
|
| 19 | - $this->xTranslator->loadTranslations(__DIR__ . '/../translations/test.fr.php', 'fr'); |
|
| 20 | - } |
|
| 15 | +protected function setUp(): void |
|
| 16 | +{ |
|
| 17 | +$this->xTranslator = new Translator(); |
|
| 18 | +$this->xTranslator->loadTranslations(__DIR__ . '/../translations/test.en.php', 'en'); |
|
| 19 | +$this->xTranslator->loadTranslations(__DIR__ . '/../translations/test.fr.php', 'fr'); |
|
| 20 | +} |
|
| 21 | 21 | |
| 22 | - public function testFileWithBadData() |
|
| 23 | - { |
|
| 24 | - $this->assertFalse($this->xTranslator->loadTranslations(__DIR__ . '/../translations/error.php', 'en')); |
|
| 25 | - } |
|
| 22 | +public function testFileWithBadData() |
|
| 23 | +{ |
|
| 24 | +$this->assertFalse($this->xTranslator->loadTranslations(__DIR__ . '/../translations/error.php', 'en')); |
|
| 25 | +} |
|
| 26 | 26 | |
| 27 | - public function testFileNotFound() |
|
| 28 | - { |
|
| 29 | - $this->assertFalse($this->xTranslator->loadTranslations(__DIR__ . '/../translations/not-found.php', 'en')); |
|
| 30 | - } |
|
| 27 | +public function testFileNotFound() |
|
| 28 | +{ |
|
| 29 | +$this->assertFalse($this->xTranslator->loadTranslations(__DIR__ . '/../translations/not-found.php', 'en')); |
|
| 30 | +} |
|
| 31 | 31 | |
| 32 | - public function testMissingEnTranslations() |
|
| 33 | - { |
|
| 34 | - $this->xTranslator->setLocale('en'); |
|
| 35 | - $this->assertEquals('salutations.hello', $this->xTranslator->trans('salutations.hello')); |
|
| 36 | - } |
|
| 32 | +public function testMissingEnTranslations() |
|
| 33 | +{ |
|
| 34 | +$this->xTranslator->setLocale('en'); |
|
| 35 | +$this->assertEquals('salutations.hello', $this->xTranslator->trans('salutations.hello')); |
|
| 36 | +} |
|
| 37 | 37 | |
| 38 | - public function testMissingFrTranslations() |
|
| 39 | - { |
|
| 40 | - $this->xTranslator->setLocale('fr'); |
|
| 41 | - $this->assertEquals('salutations.hello', $this->xTranslator->trans('salutations.hello')); |
|
| 42 | - } |
|
| 38 | +public function testMissingFrTranslations() |
|
| 39 | +{ |
|
| 40 | +$this->xTranslator->setLocale('fr'); |
|
| 41 | +$this->assertEquals('salutations.hello', $this->xTranslator->trans('salutations.hello')); |
|
| 42 | +} |
|
| 43 | 43 | |
| 44 | - public function testSimpleEnTranslations() |
|
| 45 | - { |
|
| 46 | - $this->xTranslator->setLocale('en'); |
|
| 47 | - $this->assertEquals('Good morning', $this->xTranslator->trans('salutations.morning')); |
|
| 48 | - $this->assertEquals('Good afternoon', $this->xTranslator->trans('salutations.afternoon')); |
|
| 49 | - } |
|
| 44 | +public function testSimpleEnTranslations() |
|
| 45 | +{ |
|
| 46 | +$this->xTranslator->setLocale('en'); |
|
| 47 | +$this->assertEquals('Good morning', $this->xTranslator->trans('salutations.morning')); |
|
| 48 | +$this->assertEquals('Good afternoon', $this->xTranslator->trans('salutations.afternoon')); |
|
| 49 | +} |
|
| 50 | 50 | |
| 51 | - public function testSimpleFrTranslations() |
|
| 52 | - { |
|
| 53 | - $this->xTranslator->setLocale('fr'); |
|
| 54 | - $this->assertEquals('Bonjour', $this->xTranslator->trans('salutations.morning')); |
|
| 55 | - $this->assertEquals('Bonsoir', $this->xTranslator->trans('salutations.afternoon')); |
|
| 56 | - } |
|
| 51 | +public function testSimpleFrTranslations() |
|
| 52 | +{ |
|
| 53 | +$this->xTranslator->setLocale('fr'); |
|
| 54 | +$this->assertEquals('Bonjour', $this->xTranslator->trans('salutations.morning')); |
|
| 55 | +$this->assertEquals('Bonsoir', $this->xTranslator->trans('salutations.afternoon')); |
|
| 56 | +} |
|
| 57 | 57 | |
| 58 | - public function testEnTranslationsWithPlaceholders() |
|
| 59 | - { |
|
| 60 | - $this->xTranslator->setLocale('en'); |
|
| 61 | - $this->assertEquals('Good morning Mr. Johnson', |
|
| 62 | - $this->xTranslator->trans('placeholders.morning', ['title' => 'Mr.', 'name' => 'Johnson'])); |
|
| 63 | - $this->assertEquals('Good afternoon Mrs. Smith', |
|
| 64 | - $this->xTranslator->trans('placeholders.afternoon', ['title' => 'Mrs.', 'name' => 'Smith'])); |
|
| 65 | - } |
|
| 58 | +public function testEnTranslationsWithPlaceholders() |
|
| 59 | +{ |
|
| 60 | +$this->xTranslator->setLocale('en'); |
|
| 61 | +$this->assertEquals('Good morning Mr. Johnson', |
|
| 62 | +$this->xTranslator->trans('placeholders.morning', ['title' => 'Mr.', 'name' => 'Johnson'])); |
|
| 63 | +$this->assertEquals('Good afternoon Mrs. Smith', |
|
| 64 | +$this->xTranslator->trans('placeholders.afternoon', ['title' => 'Mrs.', 'name' => 'Smith'])); |
|
| 65 | +} |
|
| 66 | 66 | |
| 67 | - public function testFrTranslationsWithPlaceholders() |
|
| 68 | - { |
|
| 69 | - $this->xTranslator->setLocale('fr'); |
|
| 70 | - $this->assertEquals('Bonjour M. Pierre', |
|
| 71 | - $this->xTranslator->trans('placeholders.morning', ['title' => 'M.', 'name' => 'Pierre'])); |
|
| 72 | - $this->assertEquals('Bonsoir Mme Paule', |
|
| 73 | - $this->xTranslator->trans('placeholders.afternoon', ['title' => 'Mme', 'name' => 'Paule'])); |
|
| 74 | - } |
|
| 67 | +public function testFrTranslationsWithPlaceholders() |
|
| 68 | +{ |
|
| 69 | +$this->xTranslator->setLocale('fr'); |
|
| 70 | +$this->assertEquals('Bonjour M. Pierre', |
|
| 71 | +$this->xTranslator->trans('placeholders.morning', ['title' => 'M.', 'name' => 'Pierre'])); |
|
| 72 | +$this->assertEquals('Bonsoir Mme Paule', |
|
| 73 | +$this->xTranslator->trans('placeholders.afternoon', ['title' => 'Mme', 'name' => 'Paule'])); |
|
| 74 | +} |
|
| 75 | 75 | |
| 76 | - public function testExplicitEnTranslations() |
|
| 77 | - { |
|
| 78 | - $this->xTranslator->setLocale('fr'); |
|
| 79 | - $this->assertEquals('Good morning Mr. Johnson', |
|
| 80 | - $this->xTranslator->trans('placeholders.morning', ['title' => 'Mr.', 'name' => 'Johnson'], 'en')); |
|
| 81 | - $this->assertEquals('Good afternoon Mrs. Smith', |
|
| 82 | - $this->xTranslator->trans('placeholders.afternoon', ['title' => 'Mrs.', 'name' => 'Smith'], 'en')); |
|
| 83 | - } |
|
| 76 | +public function testExplicitEnTranslations() |
|
| 77 | +{ |
|
| 78 | +$this->xTranslator->setLocale('fr'); |
|
| 79 | +$this->assertEquals('Good morning Mr. Johnson', |
|
| 80 | +$this->xTranslator->trans('placeholders.morning', ['title' => 'Mr.', 'name' => 'Johnson'], 'en')); |
|
| 81 | +$this->assertEquals('Good afternoon Mrs. Smith', |
|
| 82 | +$this->xTranslator->trans('placeholders.afternoon', ['title' => 'Mrs.', 'name' => 'Smith'], 'en')); |
|
| 83 | +} |
|
| 84 | 84 | |
| 85 | - public function testExplicitFrTranslations() |
|
| 86 | - { |
|
| 87 | - $this->xTranslator->setLocale('en'); |
|
| 88 | - $this->assertEquals('Bonjour M. Pierre', |
|
| 89 | - $this->xTranslator->trans('placeholders.morning', ['title' => 'M.', 'name' => 'Pierre'], 'fr')); |
|
| 90 | - $this->assertEquals('Bonsoir Mme Paule', |
|
| 91 | - $this->xTranslator->trans('placeholders.afternoon', ['title' => 'Mme', 'name' => 'Paule'], 'fr')); |
|
| 92 | - } |
|
| 85 | +public function testExplicitFrTranslations() |
|
| 86 | +{ |
|
| 87 | +$this->xTranslator->setLocale('en'); |
|
| 88 | +$this->assertEquals('Bonjour M. Pierre', |
|
| 89 | +$this->xTranslator->trans('placeholders.morning', ['title' => 'M.', 'name' => 'Pierre'], 'fr')); |
|
| 90 | +$this->assertEquals('Bonsoir Mme Paule', |
|
| 91 | +$this->xTranslator->trans('placeholders.afternoon', ['title' => 'Mme', 'name' => 'Paule'], 'fr')); |
|
| 92 | +} |
|
| 93 | 93 | } |
@@ -1,12 +1,12 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | return [ |
| 4 | - 'salutations' => [ |
|
| 5 | - 'morning' => "Good morning", |
|
| 6 | - 'afternoon' => "Good afternoon", |
|
| 7 | - ], |
|
| 8 | - 'placeholders' => [ |
|
| 9 | - 'morning' => "Good morning :title :name", |
|
| 10 | - 'afternoon' => "Good afternoon :title :name", |
|
| 11 | - ], |
|
| 4 | +'salutations' => [ |
|
| 5 | +'morning' => "Good morning", |
|
| 6 | +'afternoon' => "Good afternoon", |
|
| 7 | +], |
|
| 8 | +'placeholders' => [ |
|
| 9 | +'morning' => "Good morning :title :name", |
|
| 10 | +'afternoon' => "Good afternoon :title :name", |
|
| 11 | +], |
|
| 12 | 12 | ]; |