| Conditions | 10 |
| Paths | 35 |
| Total Lines | 45 |
| Code Lines | 23 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 2 | ||
| Bugs | 1 | Features | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 33 | public static function extract(array $locales, string $localePath, ?string $plugin = null): array |
||
| 34 | { |
||
| 35 | $extracted = false; |
||
| 36 | $info = []; |
||
| 37 | |||
| 38 | // check ttag command exists |
||
| 39 | $ttag = 'node_modules/ttag-cli/bin/ttag'; |
||
| 40 | if (!file_exists($ttag)) { |
||
| 41 | $info[] = sprintf('Skip javascript parsing - %s command not found', $ttag); |
||
| 42 | |||
| 43 | return compact('extracted', 'info'); |
||
| 44 | } |
||
| 45 | // check template folder exists |
||
| 46 | $appDir = !empty($plugin) ? Plugin::templatePath($plugin) : Hash::get(App::path(View::NAME_TEMPLATE), 0); |
||
| 47 | if (!file_exists($appDir)) { |
||
|
|
|||
| 48 | $info[] = sprintf('Skip javascript parsing - %s folder not found', $appDir); |
||
| 49 | |||
| 50 | return compact('extracted', 'info'); |
||
| 51 | } |
||
| 52 | // Path to the resources directory defined in cakephp app config/paths.php |
||
| 53 | // Do not add RESOURCES path when it's a plugin |
||
| 54 | if (empty($plugin) && defined('RESOURCES') && file_exists(RESOURCES)) { |
||
| 55 | $appDir = sprintf('%s %s', $appDir, RESOURCES); |
||
| 56 | } |
||
| 57 | |||
| 58 | // do extract translation strings from js files using ttag |
||
| 59 | $info[] = 'Extracting translation string from javascript files using ttag'; |
||
| 60 | |||
| 61 | $defaultJs = sprintf('%s/default-js.pot', $localePath); |
||
| 62 | foreach ($locales as $locale) { |
||
| 63 | $lang = substr($locale, 0, 2); |
||
| 64 | exec(sprintf('%s extract --extractLocation never --o %s --l %s %s', $ttag, $defaultJs, $lang, $appDir)); |
||
| 65 | } |
||
| 66 | |||
| 67 | // merge default-js.pot and <plugin>.pot|default.pot |
||
| 68 | $potFile = !empty($plugin) && is_string($plugin) ? sprintf('%s.pot', $plugin) : 'default.pot'; |
||
| 69 | $default = sprintf('%s/%s', $localePath, $potFile); |
||
| 70 | exec(sprintf('msgcat --use-first %s %s -o %s', $default, $defaultJs, $default)); |
||
| 71 | |||
| 72 | // remove default-js.pot |
||
| 73 | unlink($defaultJs); |
||
| 74 | |||
| 75 | $extracted = true; |
||
| 76 | |||
| 77 | return compact('extracted', 'info'); |
||
| 78 | } |
||
| 80 |