Dreamine.Web
1.0.0.0
WPF와 Blazor를 한 코드 흐름으로 연결하고 반복적인 MVVM 코드를 줄이는 오픈소스 FullKit 공식 웹 애플리케이션입니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
XmlDocParser.cs
이 파일의 문서화 페이지로 가기
1
using
System.IO;
2
using
System.Xml.Linq;
3
using
DreamineWeb.Models
;
4
5
namespace
DreamineWeb.Services
;
6
15
public
static
class
XmlDocParser
16
{
41
public
static
List<DocMember>
Parse
(
string
xmlPath)
42
{
43
if
(!File.Exists(xmlPath))
return
[];
44
45
try
46
{
47
var doc = XDocument.Load(xmlPath);
48
var members = doc.Descendants(
"member"
);
49
var result =
new
List<DocMember>();
50
51
foreach
(var m
in
members)
52
{
53
var name = m.Attribute(
"name"
)?.Value ??
string
.Empty;
54
var member =
new
DocMember
55
{
56
FullName = name,
57
ShortName =
ExtractShortName
(name),
58
Kind =
ParseKind
(name),
59
Summary =
CleanText
(m.Element(
"summary"
)?.Value),
60
Remarks =
CleanText
(m.Element(
"remarks"
)?.Value),
61
Returns =
CleanText
(m.Element(
"returns"
)?.Value),
62
Params = m.Elements(
"param"
)
63
.Select(p =>
new
DocParam
64
{
65
Name = p.Attribute(
"name"
)?.Value ??
string
.Empty,
66
Description =
CleanText
(p.Value)
67
}).ToList(),
68
TypeName =
ExtractTypeName
(name)
69
};
70
result.Add(member);
71
}
72
73
return
result;
74
}
75
catch
76
{
77
return
[];
78
}
79
}
80
105
private
static
DocMemberKind
ParseKind
(
string
name) => name.Length > 1 ? name[0]
switch
106
{
107
'T'
=>
DocMemberKind
.Type,
108
'M'
=>
DocMemberKind
.Method,
109
'P'
=>
DocMemberKind
.Property,
110
'F'
=>
DocMemberKind
.Field,
111
'E'
=>
DocMemberKind
.Event,
112
_ =>
DocMemberKind.Type
113
} :
DocMemberKind
.Type;
114
139
private
static
string
ExtractShortName
(
string
name)
140
{
141
var dotName = name.Length > 2 ? name[2..] : name;
142
var paren = dotName.IndexOf(
'('
);
143
if
(paren >= 0) dotName = dotName[..paren];
144
var last = dotName.LastIndexOf(
'.'
);
145
return
last >= 0 ? dotName[(last + 1)..] : dotName;
146
}
147
172
private
static
string
?
ExtractTypeName
(
string
name)
173
{
174
if
(name.Length < 3)
return
null
;
175
var dotName = name[2..];
176
var paren = dotName.IndexOf(
'('
);
177
if
(paren >= 0) dotName = dotName[..paren];
178
var last = dotName.LastIndexOf(
'.'
);
179
if
(last < 0)
return
null
;
180
var typePart = dotName[..last];
181
var typeLast = typePart.LastIndexOf(
'.'
);
182
return
typeLast >= 0 ? typePart[(typeLast + 1)..] : typePart;
183
}
184
209
private
static
string
?
CleanText
(
string
? raw)
210
{
211
if
(
string
.IsNullOrWhiteSpace(raw))
return
null
;
212
var lines = raw.Split(
'\n'
)
213
.Select(l => l.Trim())
214
.Where(l => l.Length > 0);
215
return
string
.Join(
" "
, lines);
216
}
217
}
DreamineWeb.Models
Definition
DocMember.cs:1
DreamineWeb.Models.DocMemberKind
DocMemberKind
Definition
DocMember.cs:12
DreamineWeb.Models.DocMemberKind.Type
@ Type
Definition
DocMember.cs:21
DreamineWeb.Services
Definition
AdminAuthService.cs:6
DreamineWeb.Models.DocMember
Definition
DocMember.cs:73
DreamineWeb.Models.DocParam
Definition
DocMember.cs:157
DreamineWeb.Services.XmlDocParser
Definition
XmlDocParser.cs:16
DreamineWeb.Services.XmlDocParser.Parse
static List< DocMember > Parse(string xmlPath)
Definition
XmlDocParser.cs:41
DreamineWeb.Services.XmlDocParser.CleanText
static ? string CleanText(string? raw)
Definition
XmlDocParser.cs:209
DreamineWeb.Services.XmlDocParser.ParseKind
static DocMemberKind ParseKind(string name)
Definition
XmlDocParser.cs:105
DreamineWeb.Services.XmlDocParser.ExtractTypeName
static ? string ExtractTypeName(string name)
Definition
XmlDocParser.cs:172
DreamineWeb.Services.XmlDocParser.ExtractShortName
static string ExtractShortName(string name)
Definition
XmlDocParser.cs:139
Services
XmlDocParser.cs
다음에 의해 생성됨 :
1.17.0