@@ -4,4 +4,39 @@ internal sealed class StringDoc(string value, bool isDirective = false) : Doc
4
4
{
5
5
public string Value { get ; } = value ;
6
6
public bool IsDirective { get ; } = isDirective ;
7
+
8
+ public static StringDoc Create ( string value )
9
+ {
10
+ if ( value . Length != 1 )
11
+ {
12
+ return new StringDoc ( value ) ;
13
+ }
14
+
15
+ return value switch
16
+ {
17
+ " " => SpaceString ,
18
+ "\t " => TabString ,
19
+ "," => CommaString ,
20
+ "=" => EqualsString ,
21
+ "." => DotString ,
22
+ "{" => OpenBraceString ,
23
+ "}" => ClosedBraceString ,
24
+ "(" => OpenBracketString ,
25
+ ")" => ClosedBracketString ,
26
+ ";" => SemiColonString ,
27
+
28
+ _ => new StringDoc ( value ) ,
29
+ } ;
30
+ }
31
+
32
+ private static readonly StringDoc SpaceString = new ( " " ) ;
33
+ private static readonly StringDoc TabString = new ( "\t " ) ;
34
+ private static readonly StringDoc CommaString = new ( "," ) ;
35
+ private static readonly StringDoc EqualsString = new ( "=" ) ;
36
+ private static readonly StringDoc DotString = new ( "." ) ;
37
+ private static readonly StringDoc OpenBraceString = new ( "{" ) ;
38
+ private static readonly StringDoc ClosedBraceString = new ( "}" ) ;
39
+ private static readonly StringDoc OpenBracketString = new ( "(" ) ;
40
+ private static readonly StringDoc ClosedBracketString = new ( ")" ) ;
41
+ private static readonly StringDoc SemiColonString = new ( ";" ) ;
7
42
}
0 commit comments