@@ -213,10 +213,10 @@ private static bool TryMatchLinkReferenceDefinition(ref StringLineGroup lines, B
213213 // Correct the locations of each field
214214 linkReferenceDefinition . Line = lines . Lines [ 0 ] . Line ;
215215
216- linkReferenceDefinition . Span = ConvertToAbsoluteSpan ( lines , linkReferenceDefinition . Span ) ;
217- linkReferenceDefinition . LabelSpan = ConvertToAbsoluteSpan ( lines , linkReferenceDefinition . LabelSpan ) ;
218- linkReferenceDefinition . UrlSpan = ConvertToAbsoluteSpan ( lines , linkReferenceDefinition . UrlSpan ) ;
219- linkReferenceDefinition . TitleSpan = ConvertToAbsoluteSpan ( lines , linkReferenceDefinition . TitleSpan ) ;
216+ linkReferenceDefinition . Span = lines . ConvertToAbsoluteSpan ( linkReferenceDefinition . Span ) ;
217+ linkReferenceDefinition . LabelSpan = lines . ConvertToAbsoluteSpan ( linkReferenceDefinition . LabelSpan ) ;
218+ linkReferenceDefinition . UrlSpan = lines . ConvertToAbsoluteSpan ( linkReferenceDefinition . UrlSpan ) ;
219+ linkReferenceDefinition . TitleSpan = lines . ConvertToAbsoluteSpan ( linkReferenceDefinition . TitleSpan ) ;
220220 lines = iterator . Remaining ( ) ;
221221 }
222222 else
@@ -255,22 +255,22 @@ private static bool TryMatchLinkReferenceDefinitionTrivia(ref StringLineGroup li
255255 lrd . Line = lines . Lines [ 0 ] . Line ;
256256 var text = lines . Lines [ 0 ] . Slice . Text ;
257257
258- triviaBeforeLabel = ConvertToAbsoluteSpan ( lines , triviaBeforeLabel ) ;
259- labelWithTrivia = ConvertToAbsoluteSpan ( lines , labelWithTrivia ) ;
260- triviaBeforeUrl = ConvertToAbsoluteSpan ( lines , triviaBeforeUrl ) ;
261- unescapedUrl = ConvertToAbsoluteSpan ( lines , unescapedUrl ) ;
262- triviaBeforeTitle = ConvertToAbsoluteSpan ( lines , triviaBeforeTitle ) ;
263- unescapedTitle = ConvertToAbsoluteSpan ( lines , unescapedTitle ) ;
264- triviaAfterTitle = ConvertToAbsoluteSpan ( lines , triviaAfterTitle ) ;
265- lrd . Span = ConvertToAbsoluteSpan ( lines , lrd . Span ) ;
258+ triviaBeforeLabel = lines . ConvertToAbsoluteSpan ( triviaBeforeLabel ) ;
259+ labelWithTrivia = lines . ConvertToAbsoluteSpan ( labelWithTrivia ) ;
260+ triviaBeforeUrl = lines . ConvertToAbsoluteSpan ( triviaBeforeUrl ) ;
261+ unescapedUrl = lines . ConvertToAbsoluteSpan ( unescapedUrl ) ;
262+ triviaBeforeTitle = lines . ConvertToAbsoluteSpan ( triviaBeforeTitle ) ;
263+ unescapedTitle = lines . ConvertToAbsoluteSpan ( unescapedTitle ) ;
264+ triviaAfterTitle = lines . ConvertToAbsoluteSpan ( triviaAfterTitle ) ;
265+ lrd . Span = lines . ConvertToAbsoluteSpan ( lrd . Span ) ;
266266 lrd . TriviaBefore = new StringSlice ( text , triviaBeforeLabel . Start , triviaBeforeLabel . End ) ;
267- lrd . LabelSpan = ConvertToAbsoluteSpan ( lines , lrd . LabelSpan ) ;
267+ lrd . LabelSpan = lines . ConvertToAbsoluteSpan ( lrd . LabelSpan ) ;
268268 lrd . LabelWithTrivia = new StringSlice ( text , labelWithTrivia . Start , labelWithTrivia . End ) ;
269269 lrd . TriviaBeforeUrl = new StringSlice ( text , triviaBeforeUrl . Start , triviaBeforeUrl . End ) ;
270- lrd . UrlSpan = ConvertToAbsoluteSpan ( lines , lrd . UrlSpan ) ;
270+ lrd . UrlSpan = lines . ConvertToAbsoluteSpan ( lrd . UrlSpan ) ;
271271 lrd . UnescapedUrl = new StringSlice ( text , unescapedUrl . Start , unescapedUrl . End ) ;
272272 lrd . TriviaBeforeTitle = new StringSlice ( text , triviaBeforeTitle . Start , triviaBeforeTitle . End ) ;
273- lrd . TitleSpan = ConvertToAbsoluteSpan ( lines , lrd . TitleSpan ) ;
273+ lrd . TitleSpan = lines . ConvertToAbsoluteSpan ( lrd . TitleSpan ) ;
274274 lrd . UnescapedTitle = new StringSlice ( text , unescapedTitle . Start , unescapedTitle . End ) ;
275275 lrd . TriviaAfter = new StringSlice ( text , triviaAfterTitle . Start , triviaAfterTitle . End ) ;
276276 lrd . LinesBefore = paragraph . LinesBefore ;
@@ -290,30 +290,4 @@ private static bool TryMatchLinkReferenceDefinitionTrivia(ref StringLineGroup li
290290 return atLeastOneFound ;
291291 }
292292
293- private static SourceSpan ConvertToAbsoluteSpan ( StringLineGroup lines , SourceSpan span )
294- {
295- if ( span . IsEmpty ) return span ;
296-
297- var startPosition = GetAbsolutePosition ( lines , span . Start ) ;
298- var endPosition = GetAbsolutePosition ( lines , span . End ) ;
299-
300- return new SourceSpan ( startPosition , endPosition ) ;
301- }
302-
303- private static int GetAbsolutePosition ( StringLineGroup lines , int position )
304- {
305- int offset = 0 ;
306- for ( int i = 0 ; i < lines . Count ; i ++ )
307- {
308- ref StringSlice slice = ref lines . Lines [ i ] . Slice ;
309- var lineLength = slice . Length + slice . NewLine . Length ( ) ;
310-
311- if ( i == lines . Count - 1 || position < offset + lineLength )
312- {
313- return slice . Start + ( position - offset ) ;
314- }
315- offset += lineLength ;
316- }
317- return lines . Lines [ lines . Count - 1 ] . Slice . End + 1 ;
318- }
319293}
0 commit comments