Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit d1f4cb2

Browse filesBrowse files
committed
bug #21400 [Serializer] fix upper camel case conversion (see #21399) (markusu49)
This PR was merged into the 2.7 branch. Discussion ---------- [Serializer] fix upper camel case conversion (see #21399) | Q | A | ------------- | --- | Branch? | 2.7 | Bug fix? | yes | New feature? | no | BC breaks? | ? | Deprecations? | no | Tests pass? | yes | Fixed tickets | #21399 | License | MIT Improve upper camel case support of CamelCaseToSnakeCaseConverter (`ThisIsATest` now converts to `this_is_a_test` instead of `_this_is_a_test`). Commits ------- 81e771c [Serializer] fix upper camel case conversion (see #21399)
2 parents be854e1 + 81e771c commit d1f4cb2
Copy full SHA for d1f4cb2

File tree

2 files changed

+17
-13
lines changed
Filter options

2 files changed

+17
-13
lines changed

‎src/Symfony/Component/Serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php
+5-4Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,15 @@ public function __construct(array $attributes = null, $lowerCamelCase = true)
4444
public function normalize($propertyName)
4545
{
4646
if (null === $this->attributes || in_array($propertyName, $this->attributes)) {
47+
$lcPropertyName = lcfirst($propertyName);
4748
$snakeCasedName = '';
4849

49-
$len = strlen($propertyName);
50+
$len = strlen($lcPropertyName);
5051
for ($i = 0; $i < $len; ++$i) {
51-
if (ctype_upper($propertyName[$i])) {
52-
$snakeCasedName .= '_'.strtolower($propertyName[$i]);
52+
if (ctype_upper($lcPropertyName[$i])) {
53+
$snakeCasedName .= '_'.strtolower($lcPropertyName[$i]);
5354
} else {
54-
$snakeCasedName .= strtolower($propertyName[$i]);
55+
$snakeCasedName .= strtolower($lcPropertyName[$i]);
5556
}
5657
}
5758

‎src/Symfony/Component/Serializer/Tests/NameConverter/CamelCaseToSnakeCaseNameConverterTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Serializer/Tests/NameConverter/CamelCaseToSnakeCaseNameConverterTest.php
+12-9Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,27 +27,30 @@ public function testInterface()
2727
/**
2828
* @dataProvider attributeProvider
2929
*/
30-
public function testNormalize($underscored, $lowerCamelCased)
30+
public function testNormalize($underscored, $camelCased, $useLowerCamelCase)
3131
{
32-
$nameConverter = new CamelCaseToSnakeCaseNameConverter();
33-
$this->assertEquals($nameConverter->normalize($lowerCamelCased), $underscored);
32+
$nameConverter = new CamelCaseToSnakeCaseNameConverter(null, $useLowerCamelCase);
33+
$this->assertEquals($nameConverter->normalize($camelCased), $underscored);
3434
}
3535

3636
/**
3737
* @dataProvider attributeProvider
3838
*/
39-
public function testDenormalize($underscored, $lowerCamelCased)
39+
public function testDenormalize($underscored, $camelCased, $useLowerCamelCase)
4040
{
41-
$nameConverter = new CamelCaseToSnakeCaseNameConverter();
42-
$this->assertEquals($nameConverter->denormalize($underscored), $lowerCamelCased);
41+
$nameConverter = new CamelCaseToSnakeCaseNameConverter(null, $useLowerCamelCase);
42+
$this->assertEquals($nameConverter->denormalize($underscored), $camelCased);
4343
}
4444

4545
public function attributeProvider()
4646
{
4747
return array(
48-
array('coop_tilleuls', 'coopTilleuls'),
49-
array('_kevin_dunglas', '_kevinDunglas'),
50-
array('this_is_a_test', 'thisIsATest'),
48+
array('coop_tilleuls', 'coopTilleuls', true),
49+
array('_kevin_dunglas', '_kevinDunglas', true),
50+
array('this_is_a_test', 'thisIsATest', true),
51+
array('coop_tilleuls', 'CoopTilleuls', false),
52+
array('_kevin_dunglas', '_kevinDunglas', false),
53+
array('this_is_a_test', 'ThisIsATest', false),
5154
);
5255
}
5356
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.