8
8
use App \Parser \Settings ;
9
9
use Microsoft \PhpParser \Node \Statement \InlineHtml ;
10
10
use Microsoft \PhpParser \Parser ;
11
+ use Microsoft \PhpParser \PositionUtilities ;
11
12
use Microsoft \PhpParser \Range ;
12
13
use Stillat \BladeParser \Document \Document ;
13
14
use Stillat \BladeParser \Nodes \BaseNode ;
@@ -24,6 +25,8 @@ class InlineHtmlParser extends AbstractParser
24
25
'{{ ' => '}} ' ,
25
26
];
26
27
28
+ protected $ startLine = 0 ;
29
+
27
30
/**
28
31
* @var Blade
29
32
*/
@@ -33,6 +36,16 @@ class InlineHtmlParser extends AbstractParser
33
36
34
37
public function parse (InlineHtml $ node )
35
38
{
39
+ if ($ node ->getStartPosition () > 0 ) {
40
+ $ range = PositionUtilities::getRangeFromPosition (
41
+ $ node ->getStartPosition (),
42
+ mb_strlen ($ node ->getText ()),
43
+ $ node ->getRoot ()->getFullText (),
44
+ );
45
+
46
+ $ this ->startLine = $ range ->start ->line ;
47
+ }
48
+
36
49
$ this ->parseBladeContent (Document::fromText ($ node ->getText ()));
37
50
38
51
if (count ($ this ->items )) {
@@ -81,8 +94,8 @@ protected function doEchoParse(BaseNode $node, $prefix, $content)
81
94
$ range ->end ->character += mb_strlen ($ suffix );
82
95
}
83
96
84
- $ range ->start ->line += $ node ->position ->startLine - 2 ;
85
- $ range ->end ->line += $ node ->position ->startLine - 2 ;
97
+ $ range ->start ->line += $ this -> startLine + $ node ->position ->startLine - 2 ;
98
+ $ range ->end ->line += $ this -> startLine + $ node ->position ->startLine - 2 ;
86
99
87
100
return $ range ;
88
101
};
@@ -127,8 +140,8 @@ protected function parseBladeDirective(DirectiveNode $node)
127
140
$ range ->end ->character -= mb_strlen ($ safetyPrefix ) - 1 ;
128
141
}
129
142
130
- $ range ->start ->line += $ node ->position ->startLine - 2 ;
131
- $ range ->end ->line += $ node ->position ->startLine - 2 ;
143
+ $ range ->start ->line += $ this -> startLine + $ node ->position ->startLine - 2 ;
144
+ $ range ->end ->line += $ this -> startLine + $ node ->position ->startLine - 2 ;
132
145
133
146
return $ range ;
134
147
};
0 commit comments