Merge branch '2.7' into 2.8
* 2.7: Php Inspections (EA Ultimate): address some of one-time used local variables [Intl] Load locale aliases to support alias fallbacks [CssSelector] Fix CSS identifiers parsing - they can start with dash
This commit is contained in:
commit
b0bbdefbdb
@ -54,8 +54,7 @@ class TwigExtractor extends AbstractFileExtractor implements ExtractorInterface
|
||||
*/
|
||||
public function extract($resource, MessageCatalogue $catalogue)
|
||||
{
|
||||
$files = $this->extractFiles($resource);
|
||||
foreach ($files as $file) {
|
||||
foreach ($this->extractFiles($resource) as $file) {
|
||||
try {
|
||||
$this->extractTemplate(file_get_contents($file->getPathname()), $catalogue);
|
||||
} catch (Error $e) {
|
||||
|
@ -46,7 +46,7 @@ class TokenizerPatterns
|
||||
$this->nonAsciiPattern = '[^\x00-\x7F]';
|
||||
$this->nmCharPattern = '[_a-z0-9-]|'.$this->escapePattern.'|'.$this->nonAsciiPattern;
|
||||
$this->nmStartPattern = '[_a-z]|'.$this->escapePattern.'|'.$this->nonAsciiPattern;
|
||||
$this->identifierPattern = '(?:'.$this->nmStartPattern.')(?:'.$this->nmCharPattern.')*';
|
||||
$this->identifierPattern = '-?(?:'.$this->nmStartPattern.')(?:'.$this->nmCharPattern.')*';
|
||||
$this->hashPattern = '#((?:'.$this->nmCharPattern.')+)';
|
||||
$this->numberPattern = '[+-]?(?:[0-9]*\.[0-9]+|[0-9]+)';
|
||||
$this->quotedStringPattern = '([^\n\r\f%s]|'.$this->stringEscapePattern.')*';
|
||||
|
@ -186,6 +186,7 @@ class ParserTest extends TestCase
|
||||
array('foo:after', 'Element[foo]', 'after'),
|
||||
array('foo::selection', 'Element[foo]', 'selection'),
|
||||
array('lorem#ipsum ~ a#b.c[href]:empty::selection', 'CombinedSelector[Hash[Element[lorem]#ipsum] ~ Pseudo[Attribute[Class[Hash[Element[a]#b].c][href]]:empty]]', 'selection'),
|
||||
array('video::-webkit-media-controls', 'Element[video]', '-webkit-media-controls'),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -133,9 +133,7 @@ class LegacyChoiceListAdapter implements ChoiceListInterface
|
||||
$this->values = array();
|
||||
$this->structuredValues = $this->adaptedList->getValues();
|
||||
|
||||
$innerChoices = $this->adaptedList->getChoices();
|
||||
|
||||
foreach ($innerChoices as $index => $choice) {
|
||||
foreach ($this->adaptedList->getChoices() as $index => $choice) {
|
||||
$value = $this->structuredValues[$index];
|
||||
$this->values[] = $value;
|
||||
$this->choices[$value] = $choice;
|
||||
|
@ -80,6 +80,7 @@ class FormType extends BaseType
|
||||
}
|
||||
}
|
||||
|
||||
$formConfig = $form->getConfig();
|
||||
$view->vars = array_replace($view->vars, array(
|
||||
'read_only' => isset($view->vars['attr']['readonly']) && false !== $view->vars['attr']['readonly'], // deprecated
|
||||
'errors' => $form->getErrors(),
|
||||
@ -91,9 +92,9 @@ class FormType extends BaseType
|
||||
'pattern' => isset($options['attr']['pattern']) ? $options['attr']['pattern'] : null, // Deprecated
|
||||
'size' => null,
|
||||
'label_attr' => $options['label_attr'],
|
||||
'compound' => $form->getConfig()->getCompound(),
|
||||
'method' => $form->getConfig()->getMethod(),
|
||||
'action' => $form->getConfig()->getAction(),
|
||||
'compound' => $formConfig->getCompound(),
|
||||
'method' => $formConfig->getMethod(),
|
||||
'action' => $formConfig->getAction(),
|
||||
'submitted' => $form->isSubmitted(),
|
||||
));
|
||||
}
|
||||
|
@ -65,9 +65,7 @@ class ValidationListener implements EventSubscriberInterface
|
||||
|
||||
if ($form->isRoot()) {
|
||||
// Validate the form in group "Default"
|
||||
$violations = $this->validator->validate($form);
|
||||
|
||||
foreach ($violations as $violation) {
|
||||
foreach ($this->validator->validate($form) as $violation) {
|
||||
// Allow the "invalid" constraint to be put onto
|
||||
// non-synchronized forms
|
||||
// ConstraintViolation::getConstraint() must not expect to provide a constraint as long as Symfony\Component\Validator\ExecutionContext exists (before 3.0)
|
||||
|
@ -264,12 +264,8 @@ class ValidatorTypeGuesser implements FormTypeGuesserInterface
|
||||
$classMetadata = $this->metadataFactory->getMetadataFor($class);
|
||||
|
||||
if ($classMetadata instanceof ClassMetadataInterface && $classMetadata->hasPropertyMetadata($property)) {
|
||||
$memberMetadatas = $classMetadata->getPropertyMetadata($property);
|
||||
|
||||
foreach ($memberMetadatas as $memberMetadata) {
|
||||
$constraints = $memberMetadata->getConstraints();
|
||||
|
||||
foreach ($constraints as $constraint) {
|
||||
foreach ($classMetadata->getPropertyMetadata($property) as $memberMetadata) {
|
||||
foreach ($memberMetadata->getConstraints() as $constraint) {
|
||||
if ($guess = $closure($constraint)) {
|
||||
$guesses[] = $guess;
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ use Symfony\Component\Intl\Data\Bundle\Reader\JsonBundleReader;
|
||||
use Symfony\Component\Intl\Data\Bundle\Reader\BufferedBundleReader;
|
||||
use Symfony\Component\Intl\Data\Bundle\Reader\BundleEntryReader;
|
||||
use Symfony\Component\Intl\Data\Bundle\Reader\BundleEntryReaderInterface;
|
||||
use Symfony\Component\Intl\Data\Provider\LocaleDataProvider;
|
||||
use Symfony\Component\Intl\Data\Provider\ScriptDataProvider;
|
||||
use Symfony\Component\Intl\ResourceBundle\CurrencyBundle;
|
||||
use Symfony\Component\Intl\ResourceBundle\CurrencyBundleInterface;
|
||||
@ -259,6 +260,11 @@ final class Intl
|
||||
new JsonBundleReader(),
|
||||
self::BUFFER_SIZE
|
||||
));
|
||||
$localeDataProvider = new LocaleDataProvider(
|
||||
self::getDataDirectory().'/'.self::LOCALE_DIR,
|
||||
self::$entryReader
|
||||
);
|
||||
self::$entryReader->setLocaleAliases($localeDataProvider->getAliases());
|
||||
}
|
||||
|
||||
return self::$entryReader;
|
||||
|
84
src/Symfony/Component/Intl/Tests/IntlTest.php
Normal file
84
src/Symfony/Component/Intl/Tests/IntlTest.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Component\Intl\Tests;
|
||||
|
||||
use Symfony\Component\Intl\Intl;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class IntlTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @requires extension intl
|
||||
*/
|
||||
public function testIsExtensionLoadedChecksIfIntlExtensionIsLoaded()
|
||||
{
|
||||
$this->assertTrue(Intl::isExtensionLoaded());
|
||||
}
|
||||
|
||||
public function testGetCurrencyBundleCreatesTheCurrencyBundle()
|
||||
{
|
||||
$this->assertInstanceOf('Symfony\Component\Intl\ResourceBundle\CurrencyBundleInterface', Intl::getCurrencyBundle());
|
||||
}
|
||||
|
||||
public function testGetLanguageBundleCreatesTheLanguageBundle()
|
||||
{
|
||||
$this->assertInstanceOf('Symfony\Component\Intl\ResourceBundle\LanguageBundleInterface', Intl::getLanguageBundle());
|
||||
}
|
||||
|
||||
public function testGetLocaleBundleCreatesTheLocaleBundle()
|
||||
{
|
||||
$this->assertInstanceOf('Symfony\Component\Intl\ResourceBundle\LocaleBundleInterface', Intl::getLocaleBundle());
|
||||
}
|
||||
|
||||
public function testGetRegionBundleCreatesTheRegionBundle()
|
||||
{
|
||||
$this->assertInstanceOf('Symfony\Component\Intl\ResourceBundle\LocaleBundleInterface', Intl::getLocaleBundle());
|
||||
}
|
||||
|
||||
public function testGetIcuVersionReadsTheVersionOfInstalledIcuLibrary()
|
||||
{
|
||||
$this->assertStringMatchesFormat('%d.%d', Intl::getIcuVersion());
|
||||
}
|
||||
|
||||
public function testGetIcuDataVersionReadsTheVersionOfInstalledIcuData()
|
||||
{
|
||||
$this->assertStringMatchesFormat('%d.%d', Intl::getIcuDataVersion());
|
||||
}
|
||||
|
||||
public function testGetIcuStubVersionReadsTheVersionOfBundledStubs()
|
||||
{
|
||||
$this->assertStringMatchesFormat('%d.%d', Intl::getIcuStubVersion());
|
||||
}
|
||||
|
||||
public function testGetDataDirectoryReturnsThePathToIcuData()
|
||||
{
|
||||
$this->assertTrue(is_dir(Intl::getDataDirectory()));
|
||||
}
|
||||
|
||||
/**
|
||||
* @requires extension intl
|
||||
*/
|
||||
public function testLocaleAliasesAreLoaded()
|
||||
{
|
||||
\Locale::setDefault('zh_TW');
|
||||
$countryNameZhTw = Intl::getRegionBundle()->getCountryName('AD');
|
||||
|
||||
\Locale::setDefault('zh_Hant_TW');
|
||||
$countryNameHantZhTw = Intl::getRegionBundle()->getCountryName('AD');
|
||||
|
||||
\Locale::setDefault('zh');
|
||||
$countryNameZh = Intl::getRegionBundle()->getCountryName('AD');
|
||||
|
||||
$this->assertSame($countryNameZhTw, $countryNameHantZhTw, 'zh_TW is an alias to zh_Hant_TW');
|
||||
$this->assertNotSame($countryNameZh, $countryNameZhTw, 'zh_TW does not fall back to zh');
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user