99
1010use Nette ;
1111use Latte ;
12+ use Latte \Helpers ;
1213use Latte \MacroNode ;
1314use Latte \PhpWriter ;
1415use Latte \CompileException ;
@@ -49,21 +50,22 @@ public static function install(Latte\Compiler $compiler)
4950 public function macroForm (MacroNode $ node , PhpWriter $ writer )
5051 {
5152 if ($ node ->modifiers ) {
52- throw new CompileException (" Modifiers are not allowed in { { $ node-> name } } " );
53+ throw new CompileException (' Modifiers are not allowed in ' . Helpers:: formatNotation ( $ node) );
5354 }
5455 if ($ node ->prefix ) {
5556 throw new CompileException ('Did you mean <form n:name=...> ? ' );
5657 }
5758 $ name = $ node ->tokenizer ->fetchWord ();
5859 if ($ name === FALSE ) {
59- throw new CompileException (" Missing form name in { { $ node-> name } }. " );
60+ throw new CompileException (' Missing form name in ' . Helpers:: formatNotation ( $ node) );
6061 }
6162 $ node ->replaced = true ;
6263 $ node ->tokenizer ->reset ();
6364 return $ writer ->write (
64- 'echo Nette\Bridges\FormsLatte\Runtime::renderFormBegin($form = $_form = $this->global->formsStack[] = '
65+ "/* line $ node ->startLine */ \n"
66+ . 'echo Nette\Bridges\FormsLatte\Runtime::renderFormBegin($form = $_form = $this->global->formsStack[] = '
6567 . ($ name [0 ] === '$ ' ? 'is_object(%node.word) ? %node.word : ' : '' )
66- . '$this->global->uiControl[%node.word], %node.array) '
68+ . '$this->global->uiControl[%node.word], %node.array); '
6769 );
6870 }
6971
@@ -74,17 +76,17 @@ public function macroForm(MacroNode $node, PhpWriter $writer)
7476 public function macroFormContainer (MacroNode $ node , PhpWriter $ writer )
7577 {
7678 if ($ node ->modifiers ) {
77- throw new CompileException (" Modifiers are not allowed in { { $ node-> name } } " );
79+ throw new CompileException (' Modifiers are not allowed in ' . Helpers:: formatNotation ( $ node) );
7880 }
7981 $ name = $ node ->tokenizer ->fetchWord ();
8082 if ($ name === FALSE ) {
81- throw new CompileException (" Missing name in { { $ node-> name } }. " );
83+ throw new CompileException (' Missing name in ' . Helpers:: formatNotation ( $ node) );
8284 }
8385 $ node ->tokenizer ->reset ();
8486 return $ writer ->write (
8587 '$this->global->formsStack[] = $formContainer = $_form = '
8688 . ($ name [0 ] === '$ ' ? 'is_object(%node.word) ? %node.word : ' : '' )
87- . 'end($this->global->formsStack)[%node.word] '
89+ . 'end($this->global->formsStack)[%node.word]; '
8890 );
8991 }
9092
@@ -95,11 +97,11 @@ public function macroFormContainer(MacroNode $node, PhpWriter $writer)
9597 public function macroLabel (MacroNode $ node , PhpWriter $ writer )
9698 {
9799 if ($ node ->modifiers ) {
98- throw new CompileException (" Modifiers are not allowed in { { $ node-> name } } " );
100+ throw new CompileException (' Modifiers are not allowed in ' . Helpers:: formatNotation ( $ node) );
99101 }
100102 $ words = $ node ->tokenizer ->fetchWords ();
101103 if (!$ words ) {
102- throw new CompileException (" Missing name in { { $ node-> name } }. " );
104+ throw new CompileException (' Missing name in ' . Helpers:: formatNotation ( $ node) );
103105 }
104106 $ node ->replaced = true ;
105107 $ name = array_shift ($ words );
@@ -131,18 +133,19 @@ public function macroLabelEnd(MacroNode $node, PhpWriter $writer)
131133 public function macroInput (MacroNode $ node , PhpWriter $ writer )
132134 {
133135 if ($ node ->modifiers ) {
134- throw new CompileException (" Modifiers are not allowed in { { $ node-> name } } " );
136+ throw new CompileException (' Modifiers are not allowed in ' . Helpers:: formatNotation ( $ node) );
135137 }
136138 $ words = $ node ->tokenizer ->fetchWords ();
137139 if (!$ words ) {
138- throw new CompileException (" Missing name in { { $ node-> name } }. " );
140+ throw new CompileException (' Missing name in ' . Helpers:: formatNotation ( $ node) );
139141 }
140142 $ node ->replaced = true ;
141143 $ name = array_shift ($ words );
142144 return $ writer ->write (
143145 ($ name [0 ] === '$ ' ? '$_input = is_object(%0.word) ? %0.word : end($this->global->formsStack)[%0.word]; echo $_input ' : 'echo end($this->global->formsStack)[%0.word] ' )
144146 . '->%1.raw '
145- . ($ node ->tokenizer ->isNext () ? '->addAttributes(%node.array) ' : '' ),
147+ . ($ node ->tokenizer ->isNext () ? '->addAttributes(%node.array) ' : '' )
148+ . " /* line $ node ->startLine */ " ,
146149 $ name ,
147150 $ words ? 'getControlPart( ' . implode (', ' , array_map ([$ writer , 'formatWord ' ], $ words )) . ') ' : 'getControl() '
148151 );
@@ -156,11 +159,11 @@ public function macroNameAttr(MacroNode $node, PhpWriter $writer)
156159 {
157160 $ words = $ node ->tokenizer ->fetchWords ();
158161 if (!$ words ) {
159- throw new CompileException (" Missing name in n: { $ node-> name } . " );
162+ throw new CompileException (' Missing name in ' . Helpers:: formatNotation ( $ node) );
160163 }
161164 $ name = array_shift ($ words );
162165 $ tagName = strtolower ($ node ->htmlNode ->name );
163- $ node ->isEmpty = $ tagName === 'input ' ;
166+ $ node ->empty = $ tagName === 'input ' ;
164167
165168 if ($ tagName === 'form ' ) {
166169 return $ writer ->write (
@@ -198,13 +201,13 @@ public function macroNameEnd(MacroNode $node, PhpWriter $writer)
198201 {
199202 $ tagName = strtolower ($ node ->htmlNode ->name );
200203 if ($ tagName === 'form ' ) {
201- $ node ->innerContent .= '<?php echo Nette\Bridges\FormsLatte\Runtime::renderFormEnd(array_pop($this->global->formsStack), FALSE) ?> ' ;
204+ $ node ->innerContent .= '<?php echo Nette\Bridges\FormsLatte\Runtime::renderFormEnd(array_pop($this->global->formsStack), FALSE); ?> ' ;
202205 } elseif ($ tagName === 'label ' ) {
203- if ($ node ->htmlNode ->isEmpty ) {
206+ if ($ node ->htmlNode ->empty ) {
204207 $ node ->innerContent = "<?php echo \$_input->getLabelPart()->getHtml() ?> " ;
205208 }
206209 } elseif ($ tagName === 'button ' ) {
207- if ($ node ->htmlNode ->isEmpty ) {
210+ if ($ node ->htmlNode ->empty ) {
208211 $ node ->innerContent = '<?php echo htmlspecialchars($_input->caption) ?> ' ;
209212 }
210213 } else { // select, textarea
@@ -219,16 +222,16 @@ public function macroNameEnd(MacroNode $node, PhpWriter $writer)
219222 public function macroInputError (MacroNode $ node , PhpWriter $ writer )
220223 {
221224 if ($ node ->modifiers ) {
222- throw new CompileException (" Modifiers are not allowed in { { $ node-> name } } " );
225+ throw new CompileException (' Modifiers are not allowed in ' . Helpers:: formatNotation ( $ node) );
223226 }
224227 $ name = $ node ->tokenizer ->fetchWord ();
225228 $ node ->replaced = true ;
226229 if (!$ name ) {
227- return $ writer ->write ('echo %escape($_input->getError()) ' );
230+ return $ writer ->write ('echo %escape($_input->getError()); ' );
228231 } elseif ($ name [0 ] === '$ ' ) {
229- return $ writer ->write ('$_input = is_object(%0.word) ? %0.word : end($this->global->formsStack)[%0.word]; echo %escape($_input->getError()) ' , $ name );
232+ return $ writer ->write ('$_input = is_object(%0.word) ? %0.word : end($this->global->formsStack)[%0.word]; echo %escape($_input->getError()); ' , $ name );
230233 } else {
231- return $ writer ->write ('echo %escape(end($this->global->formsStack)[%0.word]->getError()) ' , $ name );
234+ return $ writer ->write ('echo %escape(end($this->global->formsStack)[%0.word]->getError()); ' , $ name );
232235 }
233236 }
234237
0 commit comments