File tree Expand file tree Collapse file tree 3 files changed +166
-0
lines changed
Expand file tree Collapse file tree 3 files changed +166
-0
lines changed Original file line number Diff line number Diff line change @@ -91,7 +91,43 @@ public function dump(array $data)
9191 }
9292 $ tmp [$ name ] = $ secData ;
9393 }
94+ array_walk_recursive (
95+ $ tmp ,
96+ function (& $ val ) {
97+ if ($ val instanceof Statement) {
98+ $ val = self ::statementToEntity ($ val );
99+ }
100+ }
101+ );
102+
94103 return "# generated by Nette \n\n" . Neon \Neon::encode ($ tmp , Neon \Neon::BLOCK );
95104 }
96105
106+
107+ /**
108+ * @return Neon\Entity
109+ */
110+ private static function statementToEntity (Statement $ val )
111+ {
112+ array_walk_recursive (
113+ $ val ->arguments ,
114+ function (& $ val ) {
115+ if ($ val instanceof Statement) {
116+ $ val = self ::statementToEntity ($ val );
117+ }
118+ }
119+ );
120+ if (is_array ($ val ->entity ) && $ val ->entity [0 ] instanceof Statement) {
121+ return new Neon \Entity (
122+ Neon \Neon::CHAIN ,
123+ [
124+ self ::statementToEntity ($ val ->entity [0 ]),
125+ new Neon \Entity (':: ' . $ val ->entity [1 ], $ val ->arguments )
126+ ]
127+ );
128+ } else {
129+ return new Neon \Entity ($ val ->entity , $ val ->arguments );
130+ }
131+ }
132+
97133}
Original file line number Diff line number Diff line change @@ -134,3 +134,76 @@ Assert::equal([
134134 [5 ]
135135 ),
136136], $ data );
137+
138+
139+ $ data = $ config ->load ('files/neonAdapter.entity.neon ' );
140+ $ config ->save ($ data , TEMP_FILE );
141+ Assert::match (<<<EOD
142+ # generated by Nette
143+
144+ - ent(1)
145+ - ent(2)::inner(3, 4)
146+ - ent(3)::inner(5)
147+ EOD
148+ , file_get_contents (TEMP_FILE ));
149+
150+
151+ $ data = $ config ->load ('files/neonAdapter.save.neon ' );
152+ $ config ->save ($ data , TEMP_FILE );
153+ Assert::match (<<<'EOD'
154+ # generated by Nette
155+
156+ parameters:
157+ class: Ipsum
158+
159+ services:
160+ referencedService: @one
161+ referencedServiceWithSetup:
162+ factory: @one
163+ setup:
164+ - $x(10)
165+
166+ serviceAsParam: Ipsum(@one)
167+ calledService: @one()
168+ calledServiceWithArgs: @one(1)
169+ calledServiceAsParam: Ipsum(@one())
170+ calledServiceWithArgsAsParam: Ipsum(@one(1))
171+ one:
172+ class: %class%
173+ arguments:
174+ - 1
175+
176+ two:
177+ class: %class%(1)
178+
179+ three:
180+ class: Lorem
181+ create: Factory::createLorem
182+ arguments:
183+ - 1
184+
185+ four:
186+ create: Factory::createLorem(1)
187+
188+ five:
189+ create: [Factory, createLorem](1)
190+
191+ six: Factory::createLorem(1)
192+ seven: @factory
193+ eight: @factory()
194+ nine:
195+ - @three
196+ - foo
197+
198+ stdClass: stdClass
199+ factory: Lorem
200+ rich1: Lorem(1)::foo()
201+ rich2:
202+ create: Lorem(Ipsum(@one))::foo(1)
203+
204+ rich3: Factory::createLorem(1)::foo()
205+ rich4: Factory()::createLorem(1)::foo()
206+ 0: Lorem(1)::foo()
207+
208+ EOD
209+ , file_get_contents (TEMP_FILE ));
Original file line number Diff line number Diff line change 1+ parameters :
2+ class : Ipsum
3+
4+ services :
5+ referencedService : @one
6+
7+ referencedServiceWithSetup :
8+ factory : @one
9+ setup :
10+ - $x (10 )
11+
12+ serviceAsParam : Ipsum (@one )
13+ calledService : @one ()
14+ calledServiceWithArgs : @one (1 )
15+ calledServiceAsParam : Ipsum (@one ())
16+ calledServiceWithArgsAsParam : Ipsum (@one (1 ))
17+
18+ one :
19+ class : %class%
20+ arguments : [1 ]
21+
22+ two :
23+ class : %class% (1 )
24+
25+ three :
26+ class : Lorem
27+ create : Factory::createLorem
28+ arguments : [1 ]
29+
30+ four :
31+ create : Factory::createLorem (1 )
32+
33+ five :
34+ create : [Factory , createLorem ](1 )
35+
36+ six : Factory::createLorem (1 )
37+
38+ seven : @factory
39+
40+ eight : @factory ()
41+
42+ nine : [@three , foo ]
43+
44+ stdClass : stdClass
45+
46+ factory : Lorem
47+
48+ rich1 : Lorem (1 )::foo
49+
50+ rich2 :
51+ create : Lorem (Ipsum (@one ))::foo (1 )
52+
53+ rich3 : Factory::createLorem (1 )::foo
54+
55+ rich4 : Factory ()::createLorem (1 )::foo
56+
57+ - Lorem (1 )::foo
You can’t perform that action at this time.
0 commit comments