Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ParseExternalIdAsync()

async Task<(string, string)> System.Xml.DtdParser.ParseExternalIdAsync ( Token idTokenType,
Token declType )
inlineprivate

Definition at line 4064 of file DtdParser.cs.

4065 {
4066 LineInfo keywordLineInfo = new LineInfo(LineNo, LinePos - 6);
4067 string publicId = null;
4068 string systemId = null;
4070 {
4071 ThrowUnexpectedToken(_curPos, "\"", "'");
4072 }
4073 if (idTokenType == Token.SYSTEM)
4074 {
4075 systemId = GetValue();
4076 if (systemId.Contains('#'))
4077 {
4078 Throw(_curPos - systemId.Length - 1, System.SR.Xml_FragmentId, new string[2]
4079 {
4080 systemId.Substring(systemId.IndexOf('#')),
4081 systemId
4082 });
4083 }
4084 if (declType == Token.DOCTYPE && !_freeFloatingDtd)
4085 {
4088 }
4089 }
4090 else
4091 {
4092 publicId = GetValue();
4093 int num;
4094 if ((num = XmlCharType.IsPublicId(publicId)) >= 0)
4095 {
4096 ThrowInvalidChar(_curPos - 1 - publicId.Length + num, publicId, num);
4097 }
4098 if (declType == Token.DOCTYPE && !_freeFloatingDtd)
4099 {
4103 {
4104 if (!_whitespaceSeen)
4105 {
4107 }
4108 systemId = GetValue();
4111 }
4112 else
4113 {
4114 ThrowUnexpectedToken(_curPos, "\"", "'");
4115 }
4116 }
4117 else if (await GetTokenAsync(needWhiteSpace: false).ConfigureAwait(continueOnCapturedContext: false) == Token.Literal)
4118 {
4119 if (!_whitespaceSeen)
4120 {
4122 }
4123 systemId = GetValue();
4124 }
4125 else if (declType != Token.NOTATION)
4126 {
4127 ThrowUnexpectedToken(_curPos, "\"", "'");
4128 }
4129 }
4130 return (publicId, systemId);
4131 }
static string Xml_FragmentId
Definition SR.cs:252
static string Xml_ExpectingWhiteSpace
Definition SR.cs:66
Definition SR.cs:7
void Throw(int curPos, string res)
LineInfo _literalLineInfo
Definition DtdParser.cs:192
void ThrowUnexpectedToken(int pos, string expectedToken)
IDtdParserAdapter _readerAdapter
Definition DtdParser.cs:140
async Task< Token > GetTokenAsync(bool needWhiteSpace)
void ThrowInvalidChar(int pos, string data, int invCharPos)
void OnSystemId(string systemId, LineInfo keywordLineInfo, LineInfo systemLiteralLineInfo)
void OnPublicId(string publicId, LineInfo keywordLineInfo, LineInfo publicLiteralLineInfo)

References System.Xml.DtdParser._curPos, System.Xml.DtdParser._freeFloatingDtd, System.Xml.DtdParser._literalLineInfo, System.Xml.DtdParser._literalQuoteChar, System.Xml.DtdParser._readerAdapter, System.Xml.DtdParser._whitespaceSeen, System.Xml.DtdParser.GetTokenAsync(), System.Xml.DtdParser.GetValue(), System.Xml.XmlCharType.IsPublicId(), System.Xml.DtdParser.LineNo, System.Xml.LineInfo.lineNo, System.Xml.DtdParser.LinePos, System.Xml.LineInfo.linePos, System.Xml.IDtdParserAdapter.OnPublicId(), System.Xml.IDtdParserAdapter.OnSystemId(), System.Xml.DtdParser.Throw(), System.Xml.DtdParser.ThrowInvalidChar(), System.Xml.DtdParser.ThrowUnexpectedToken(), System.SR.Xml_ExpectingWhiteSpace, and System.SR.Xml_FragmentId.

Referenced by System.Xml.DtdParser.ParseEntityDeclAsync(), System.Xml.DtdParser.ParseInDocumentDtdAsync(), and System.Xml.DtdParser.ParseNotationDeclAsync().