mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge pull request #11137 from davejtoews/bugfix-v4-textcollector-traits
FIX Handle __TRAIT__ in i18nTextCollector
This commit is contained in:
commit
621be04bbd
@ -625,14 +625,14 @@ class i18nTextCollector
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check class
|
// Check class and trait
|
||||||
if ($id === T_CLASS) {
|
if ($id === T_CLASS || $id === T_TRAIT) {
|
||||||
// Skip if previous token was '::'. E.g. 'Object::class'
|
// Skip if previous token was '::'. E.g. 'Object::class'
|
||||||
if (is_array($previousToken) && $previousToken[0] === T_DOUBLE_COLON) {
|
if (is_array($previousToken) && $previousToken[0] === T_DOUBLE_COLON) {
|
||||||
if ($inSelf) {
|
if ($inSelf) {
|
||||||
// Handle self::class by allowing logic further down
|
// Handle self::class by allowing logic further down
|
||||||
// for __CLASS__ to handle an array of class parts
|
// for __CLASS__/__TRAIT__ to handle an array of class parts
|
||||||
$id = T_CLASS_C;
|
$id = $id === T_TRAIT ? T_TRAIT_C : T_CLASS_C;
|
||||||
$inSelf = false;
|
$inSelf = false;
|
||||||
} elseif ($potentialClassName) {
|
} elseif ($potentialClassName) {
|
||||||
$id = T_CONSTANT_ENCAPSED_STRING;
|
$id = T_CONSTANT_ENCAPSED_STRING;
|
||||||
@ -722,7 +722,7 @@ class i18nTextCollector
|
|||||||
} else {
|
} else {
|
||||||
throw new LogicException("Invalid string escape: " . $text);
|
throw new LogicException("Invalid string escape: " . $text);
|
||||||
}
|
}
|
||||||
} elseif ($id === T_CLASS_C) {
|
} elseif ($id === T_CLASS_C || $id === T_TRAIT_C) {
|
||||||
// Evaluate __CLASS__ . '.KEY' and self::class concatenation
|
// Evaluate __CLASS__ . '.KEY' and self::class concatenation
|
||||||
$text = implode('\\', $currentClass);
|
$text = implode('\\', $currentClass);
|
||||||
} else {
|
} else {
|
||||||
|
@ -407,6 +407,39 @@ PHP;
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testCollectFromTrait()
|
||||||
|
{
|
||||||
|
$c = i18nTextCollector::create();
|
||||||
|
$mymodule = ModuleLoader::inst()->getManifest()->getModule('i18ntestmodule');
|
||||||
|
$php = <<<PHP
|
||||||
|
<?php
|
||||||
|
namespace SilverStripe\Framework\Core;
|
||||||
|
|
||||||
|
use SilverStripe\ORM\DataObject;
|
||||||
|
|
||||||
|
class MyTrait extends Base implements SomeService {
|
||||||
|
public function getNewLines(\$class) {
|
||||||
|
if (
|
||||||
|
!is_subclass_of(\$class, DataObject::class)
|
||||||
|
|| !Object::has_extension(\$class, \SilverStripe\Versioned\Versioned::class)
|
||||||
|
) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return _t(
|
||||||
|
__TRAIT__.'.NEWLINES',
|
||||||
|
'New Lines'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PHP;
|
||||||
|
$this->assertEquals(
|
||||||
|
[
|
||||||
|
'SilverStripe\\Framework\\Core\\MyTrait.NEWLINES' => "New Lines",
|
||||||
|
],
|
||||||
|
$c->collectFromCode($php, null, $mymodule)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function testNewlinesInEntityValues()
|
public function testNewlinesInEntityValues()
|
||||||
{
|
{
|
||||||
$c = i18nTextCollector::create();
|
$c = i18nTextCollector::create();
|
||||||
|
Loading…
Reference in New Issue
Block a user