Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pôle IS
Bundles Symfony 2
ng-model-generator-bundle
Commits
66d1ad8c
Commit
66d1ad8c
authored
Feb 14, 2019
by
Guillaume Perréal
Browse files
Simplification des tests de tableau.
parent
e820f98b
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/Models/Types/ArrayType.php
View file @
66d1ad8c
...
...
@@ -21,6 +21,8 @@
namespace
Irstea\NgModelGeneratorBundle\Models\Types
;
use
Doctrine\Common\Inflector\Inflector
;
/**
* Class ArrayType.
*/
...
...
@@ -47,9 +49,10 @@ class ArrayType extends AbstractCollection
*/
public
function
castToStringOrStringArray
(
string
$expr
):
string
{
$cast
=
$this
->
valueType
->
castToStringOrStringArray
(
'x'
);
if
(
$cast
!==
'x'
)
{
return
sprintf
(
'%s.map(x => %s)'
,
$expr
,
$cast
);
$itemName
=
$this
->
getItemName
();
$cast
=
$this
->
valueType
->
castToStringOrStringArray
(
$itemName
);
if
(
$cast
!==
$itemName
)
{
return
sprintf
(
'%s.map(%s => %s)'
,
$expr
,
$itemName
,
$cast
);
}
return
$expr
;
...
...
@@ -60,11 +63,23 @@ class ArrayType extends AbstractCollection
*/
public
function
checkType
(
string
$expr
,
bool
$explicit
=
false
):
string
{
$itemName
=
$this
->
getItemName
();
return
sprintf
(
'(Array.isArray(%s) && %s.
findIndex(x
=>
!
%s)
=== -1
)'
,
'(Array.isArray(%s) && %s.
every(%s
=> %s))'
,
$expr
,
$expr
,
$this
->
valueType
->
checkType
(
'x'
,
$explicit
)
$itemName
,
$this
->
valueType
->
checkType
(
$itemName
,
$explicit
)
);
}
/**
* @return string
*/
private
function
getItemName
():
string
{
$valueUsage
=
$this
->
getValueType
()
->
getUsage
();
$valueName
=
strtr
(
$valueUsage
,
'[]<>'
,
'[]__'
);
return
Inflector
::
singularize
(
Inflector
::
camelize
(
$valueName
));
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment