1
- using System . Linq ;
1
+ using System . Linq ;
2
2
using Markdig . Helpers ;
3
3
using Markdig . Parsers ;
4
4
using Markdig . Syntax ;
@@ -22,59 +22,52 @@ public override bool Match(InlineProcessor processor, ref StringSlice slice)
22
22
}
23
23
24
24
var startPosition = slice . Start ;
25
- var builder = processor . StringBuilders . Get ( ) ;
25
+ var builder = StringBuilderCache . Local ( ) ;
26
26
27
- try
27
+ var c = slice . NextChar ( ) ;
28
+ while ( ! slice . IsEmpty )
28
29
{
29
- var c = slice . NextChar ( ) ;
30
- while ( ! slice . IsEmpty )
30
+ if ( c == ':' )
31
31
{
32
- if ( c == ':' )
33
- {
34
- break ;
35
- }
36
-
37
- if ( ! char . IsLetterOrDigit ( c ) && c != '-' && c != '_' )
38
- {
39
- break ;
40
- }
41
-
42
- builder . Append ( c ) ;
43
- c = slice . NextChar ( ) ;
32
+ break ;
44
33
}
45
34
46
- slice . NextChar ( ) ;
47
-
48
- if ( builder . Length == 0 )
35
+ if ( ! char . IsLetterOrDigit ( c ) && c != '-' && c != '_' )
49
36
{
50
- return false ;
37
+ break ;
51
38
}
52
39
53
- var id = builder . ToString ( ) . Trim ( ) ;
54
- var iconType = _iconTypes . FirstOrDefault ( type => id . StartsWith ( type . Prefix ) ) ;
55
- if ( iconType == null )
56
- {
57
- return false ;
58
- }
59
-
60
- int line ;
61
- int column ;
40
+ builder . Append ( c ) ;
41
+ c = slice . NextChar ( ) ;
42
+ }
62
43
63
- var start = processor . GetSourcePosition ( startPosition , out line , out column ) ;
64
- var end = processor . GetSourcePosition ( slice . Start ) ;
65
- processor . Inline = new IconInline ( iconType . Type , id )
66
- {
67
- Span = new SourceSpan ( start , end ) ,
68
- Line = line ,
69
- Column = column
70
- } ;
71
-
72
- return true ;
44
+ slice . NextChar ( ) ;
45
+
46
+ if ( builder . Length == 0 )
47
+ {
48
+ return false ;
73
49
}
74
- finally
50
+
51
+ var id = builder . ToString ( ) . Trim ( ) ;
52
+ var iconType = _iconTypes . FirstOrDefault ( type => id . StartsWith ( type . Prefix ) ) ;
53
+ if ( iconType == null )
75
54
{
76
- processor . StringBuilders . Release ( builder ) ;
55
+ return false ;
77
56
}
57
+
58
+ int line ;
59
+ int column ;
60
+
61
+ var start = processor . GetSourcePosition ( startPosition , out line , out column ) ;
62
+ var end = processor . GetSourcePosition ( slice . Start ) ;
63
+ processor . Inline = new IconInline ( iconType . Type , id )
64
+ {
65
+ Span = new SourceSpan ( start , end ) ,
66
+ Line = line ,
67
+ Column = column
68
+ } ;
69
+
70
+ return true ;
78
71
}
79
72
}
80
73
}
0 commit comments