Skip to content

Commit

Permalink
refactor: simplify structure
Browse files Browse the repository at this point in the history
  • Loading branch information
kolotov committed Sep 3, 2023
1 parent f63606a commit c87cfa4
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 67 deletions.
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,7 @@ brain-games:
./bin/brain-games

brain-even:
./bin/brain-even
./bin/brain-even

brain-calc:
./bin/brain-calc
4 changes: 2 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
"files": [
"src/Engine.php",
"src/Cli.php",
"src/Games/EvenGame/Module.php",
"src/Utils/ConfigUtils.php",
"src/Utils/ModuleUtils.php"
]
Expand All @@ -25,7 +24,8 @@
},
"bin": [
"bin/brain-games",
"bin/brain-even"
"bin/brain-even",
"bin/brain-calc"
],
"license": "MIT",
"require-dev": {
Expand Down
18 changes: 9 additions & 9 deletions src/Engine.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@

use RuntimeException;

use function BrainGames\ConfigUtils\loadConfigurations;
use function BrainGames\ConfigUtils\loadModule;
use function BrainGames\ModuleUtils\getQuestionAnswerPairHandler;
use function BrainGames\ModuleUtils\getRulesDescription;
use function BrainGames\ModuleUtils\getText;
use function BrainGames\ModuleUtils\getUserName;
use function BrainGames\ModuleUtils\setTexts;
use function BrainGames\ModuleUtils\setUserName;
use function BrainGames\Utils\ConfigUtils\loadConfigurations;
use function BrainGames\Utils\ConfigUtils\loadModule;
use function BrainGames\Utils\ModuleUtils\getQuestionAnswerPairHandler;
use function BrainGames\Utils\ModuleUtils\getRulesDescription;
use function BrainGames\Utils\ModuleUtils\getText;
use function BrainGames\Utils\ModuleUtils\getUserName;
use function BrainGames\Utils\ModuleUtils\setTexts;
use function BrainGames\Utils\ModuleUtils\setUserName;
use function cli\line;
use function cli\prompt;

Expand All @@ -26,7 +26,7 @@ function runBrainGame(string $moduleName): void

function loadGame($moduleName): array
{
$moduleFile = __DIR__ . '/Games/' . $moduleName . '/config.php';
$moduleFile = __DIR__ . '/Games/' . $moduleName . '.php';
if (!file_exists($moduleFile)) {
throw new RuntimeException("Module $moduleFile not found");
}
Expand Down
37 changes: 37 additions & 0 deletions src/Games/EvenGame.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

namespace BrainGames\Games\EvenGame;

use Exception;

use const BrainGames\Utils\ModuleUtils\HANDLER_QUESTION;
use const BrainGames\Utils\ModuleUtils\LOCATION_HANDLERS;
use const BrainGames\Utils\ModuleUtils\LOCATION_SETTINGS;
use const BrainGames\Utils\ModuleUtils\SETTING_RULES;

return function ($module) {
$module[LOCATION_SETTINGS][SETTING_RULES] = 'Answer "yes" if the number is even, otherwise answer "no".';

$module[LOCATION_HANDLERS][HANDLER_QUESTION] = fn() => questionHandler();

return $module;
};

/**
* Returns a question and its expected answer.
*
* - 0: The question (string)
* - 1: The expected answer (string)
*
* @return array{
* 0: string,
* 1: string
* }
* @throws Exception
*/
function questionHandler(): array
{
$question = random_int(1, 100);
$isEven = $question % 2 === 0;
return [$question, $isEven ? 'yes' : 'no'];
}
26 changes: 0 additions & 26 deletions src/Games/EvenGame/Module.php

This file was deleted.

13 changes: 0 additions & 13 deletions src/Games/EvenGame/config.php

This file was deleted.

2 changes: 1 addition & 1 deletion src/Utils/ConfigUtils.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

namespace BrainGames\ConfigUtils;
namespace BrainGames\Utils\ConfigUtils;

function loadConfigurations($configFile): array
{
Expand Down
18 changes: 3 additions & 15 deletions src/Utils/ModuleUtils.php
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<?php

namespace BrainGames\ModuleUtils;
namespace BrainGames\Utils\ModuleUtils;

const DATA_USER_NAME = 3010;
const HANDLER_QUESTION = 100;
const LOCATION_DATA = 'data';
const LOCATION_HANDLERS = 'handlers';
const LOCATION_SETTINGS = 'settings';
const LOCATION_TEXTS = 'texts';
const SETTING_RULES_DESCRIPTION = 103;
const SETTING_RULES = 103;

/**
* Returns a question and its expected answer.
Expand All @@ -26,21 +26,9 @@ function getQuestionAnswerPairHandler($module): array
return $module[LOCATION_HANDLERS][HANDLER_QUESTION]();
}

function setQuestionAnswerPairHandler($module, callable $handler): array
{
$module[LOCATION_HANDLERS][HANDLER_QUESTION] = $handler;
return $module;
}

function setRulesDescription($module, $rulesDescription): array
{
$module[LOCATION_SETTINGS][SETTING_RULES_DESCRIPTION] = $rulesDescription;
return $module;
}

function getRulesDescription($module): string
{
return $module[LOCATION_SETTINGS][SETTING_RULES_DESCRIPTION];
return $module[LOCATION_SETTINGS][SETTING_RULES];
}

function getText($module, $key, $replace_pairs = []): string
Expand Down

0 comments on commit c87cfa4

Please sign in to comment.