-
Notifications
You must be signed in to change notification settings - Fork 588
Expand file tree
/
Copy pathValidIdentifierHelper.cs
More file actions
128 lines (121 loc) · 2.39 KB
/
ValidIdentifierHelper.cs
File metadata and controls
128 lines (121 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
namespace DocumentFormat.OpenXml.Generator;
internal class ValidIdentifierHelper
{
private static readonly HashSet<string> Keywords = new HashSet<string>()
{
"as",
"do",
"if",
"in",
"is",
"for",
"int",
"new",
"out",
"ref",
"try",
"base",
"bool",
"byte",
"case",
"char",
"else",
"enum",
"goto",
"lock",
"long",
"null",
"this",
"true",
"uint",
"void",
"break",
"catch",
"class",
"const",
"event",
"false",
"fixed",
"float",
"sbyte",
"short",
"throw",
"ulong",
"using",
"where",
"while",
"yield",
"double",
"extern",
"object",
"params",
"public",
"return",
"sealed",
"sizeof",
"static",
"string",
"struct",
"switch",
"typeof",
"unsafe",
"ushort",
"checked",
"decimal",
"default",
"finally",
"foreach",
"partial",
"private",
"virtual",
"abstract",
"continue",
"delegate",
"explicit",
"implicit",
"internal",
"operator",
"override",
"readonly",
"volatile",
"__arglist",
"__makeref",
"__reftype",
"interface",
"namespace",
"protected",
"unchecked",
"__refvalue",
"stackalloc",
};
public static bool IsValidIdentifier(string value)
{
// identifiers must be 1 char or longer
if (string.IsNullOrEmpty(value))
{
return false;
}
if (value.Length > 512)
{
return false;
}
if (value[0] != '@')
{
if (IsKeyword(value))
{
return false;
}
}
else if (value.Length < 2)
{
return false;
}
return true;
}
internal static bool IsKeyword(string value)
{
return Keywords.Contains(value);
}
}