// Token: 0x0600190D RID: 6413 RVA: 0x000C7DFC File Offset: 0x000C5FFC public static bool IsIncludePictureField(ref ScratchBuffer scratch, out BufferString linkUrl) { int num = 0; int length = scratch.Length; while (num != scratch.Length && ParseSupport.WhitespaceCharacter(ParseSupport.GetCharClass(scratch[num]))) { num++; } if (scratch.Length - num > 15 && scratch[num] == 'I' && scratch[num + 1] == 'N' && scratch[num + 2] == 'C' && scratch[num + 3] == 'L' && scratch[num + 4] == 'U' && scratch[num + 5] == 'D' && scratch[num + 6] == 'E' && scratch[num + 7] == 'P' && scratch[num + 8] == 'I' && scratch[num + 9] == 'C' && scratch[num + 10] == 'T' && scratch[num + 11] == 'U' && scratch[num + 12] == 'R' && scratch[num + 13] == 'E' && scratch[num + 14] == ' ') { num += 15; int offset; int num2; int offset2; int num3; int fieldArgument = RtfSupport.GetFieldArgument(ref scratch, num, out offset, out num2, out offset2, out num3); while (num2 == 2 && scratch[offset] == '\\') { num += fieldArgument; fieldArgument = RtfSupport.GetFieldArgument(ref scratch, num, out offset, out num2, out offset2, out num3); } if (num3 > 2) { linkUrl = scratch.SubString(offset2, num3); return(true); } } linkUrl = BufferString.Null; return(false); }
public override List <PostItem> GetList(GachonUser guser, BoardType board) { List <PostItem> result = new List <PostItem>(); HtmlDocument dom = guser.VisitPage(board.url); HtmlNodeCollection sets = dom.DocumentNode.SelectNodes("//div[@class='list']//table//tr"); //timer.Print(); if (sets != null) { foreach (HtmlNode node in sets) { if (node.InnerText.IndexOf("No registered post") < 0 && node.InnerText.IndexOf("등록된 게시글이 없습니다") < 0 && node.ChildNodes["th"] == null) { HtmlNodeCollection datas = node.SelectNodes(".//td"); string url = ParseSupport.StringFromHtml(datas[1].ChildNodes["a"].Attributes["href"].Value); result.Insert(0, new PostItem(board) { url = url, source = this, no = Int32.Parse(datas[0].InnerText), Title = ParseSupport.StringFromHtml(datas[1].InnerText), Publisher = datas[2].InnerText, time = DateTime.Parse(datas[3].InnerText) }); } } } return(result); }
public override void GetPage(GachonUser guser, PostItem post) { HtmlDocument dom = guser.VisitPage(post.url); post.Title = ParseSupport.StringFromHtmlNode(dom.DocumentNode.SelectSingleNode("//div[@class='subject']")); post.Content = ParseSupport.StringFromHtmlNode(dom.DocumentNode.SelectSingleNode("//div[@class='ubboard']//div[contains(@class,'text_to_html')]")); }
public override void GetPage(GachonUser guser, PostItem post) { HtmlDocument dom = guser.VisitPage(post.url); post.Title = ParseSupport.StringFromHtml(dom.DocumentNode.SelectSingleNode("//td[@class='tit']").InnerText); post.Content = ParseSupport.StringFromHtml(dom.DocumentNode.SelectSingleNode("//td[contains(@class,'text')]").InnerText); }
public void Write(char[] buffer, int offset, int count) { if (IsActive) { int num = offset + count; while (offset < num) { if (urlPosition == 0) { if (ParseSupport.WhitespaceCharacter(ParseSupport.GetCharClass(buffer[offset]))) { offset++; continue; } } else if (urlPosition == url.Length) { if (ParseSupport.WhitespaceCharacter(ParseSupport.GetCharClass(buffer[offset]))) { offset++; continue; } urlPosition = -1; return; } if (buffer[offset] != url[urlPosition]) { urlPosition = -1; return; } offset++; urlPosition++; } } }
public static HtmlNameIndex LookupName(char[] nameBuffer, int nameOffset, int nameLength) { if (nameLength != 0 && nameLength <= 14) { short num = (short)((ulong)(HashCode.CalculateLowerCase(nameBuffer, nameOffset, nameLength) ^ 221) % 601UL); int num2 = (int)HtmlNameData.nameHashTable[(int)num]; if (num2 > 0) { for (;;) { string name = HtmlNameData.Names[num2].Name; if (name.Length == nameLength && name[0] == ParseSupport.ToLowerCase(nameBuffer[nameOffset])) { int num3 = 0; while (++num3 < name.Length && ParseSupport.ToLowerCase(nameBuffer[nameOffset + num3]) == name[num3]) { } if (num3 == name.Length) { break; } } num2++; if (HtmlNameData.Names[num2].Hash != num) { return(HtmlNameIndex.Unknown); } } return((HtmlNameIndex)num2); } } return(HtmlNameIndex.Unknown); }
public void UrlQueryParserTest() { Assert.AreEqual(ParseSupport.UrlQueryParser("https://test.com/?id=1321&asd=342")["id"], "1321"); Assert.AreEqual(ParseSupport.UrlQueryParser("https://test.com/?id=1321&asd=342")["asd"], "342"); Assert.AreEqual(ParseSupport.UrlQueryParser("https://?id=1231&asds/?id=1321&asd=342")["id"], "1321"); }
public void Write(int ucs32Char) { if (Token.LiteralLength(ucs32Char) != 1) { urlPosition = -1; return; } if (urlPosition == 0) { if (ParseSupport.WhitespaceCharacter(ParseSupport.GetCharClass((char)ucs32Char))) { return; } } else if (urlPosition == url.Length) { if (ParseSupport.WhitespaceCharacter(ParseSupport.GetCharClass((char)ucs32Char))) { return; } urlPosition = -1; return; } if ((char)ucs32Char != url[urlPosition]) { urlPosition = -1; return; } urlPosition++; }
private void NormalizeAddNonspace(TokenRun run) { if (!lineStarted) { StartParagraphOrLine(); } if (normalizerContext.hasSpace) { normalizerContext.hasSpace = false; if ('\0' == normalizerContext.lastCh || !normalizerContext.oneNL || !ParseSupport.TwoFarEastNonHanguelChars(normalizerContext.lastCh, run.FirstChar)) { output.OutputSpace(1); } } if (run.IsLiteral) { output.OutputNonspace(run.Literal, textMapping); } else { output.OutputNonspace(run.RawBuffer, run.RawOffset, run.RawLength, textMapping); } normalizerContext.eatSpace = false; normalizerContext.lastCh = run.LastChar; normalizerContext.oneNL = false; }
public void SetValueQuote(char ch) { InternalDebug.Assert(this.state == BuildStateTagAttrValue); InternalDebug.Assert(ParseSupport.QuoteCharacter(ParseSupport.GetCharClass(ch))); this.htmlToken.attributeList[this.htmlToken.attributeTail].IsAttrValueQuoted = true; this.htmlToken.attributeList[this.htmlToken.attributeTail].quoteChar = (byte)ch; }
// Token: 0x0600190A RID: 6410 RVA: 0x000C7C2F File Offset: 0x000C5E2F public static int Unescape(byte b1, byte b2) { if (ParseSupport.HexCharacter(ParseSupport.GetCharClass((char)b1)) && ParseSupport.HexCharacter(ParseSupport.GetCharClass((char)b2))) { return(ParseSupport.CharToHex((char)b1) << 4 | ParseSupport.CharToHex((char)b2)); } return(256); }
// Orphaned WPL code. #if false public void SetPropertyValueQuote(char ch) { InternalDebug.Assert(this.state == BuildStatePropertyValue); InternalDebug.Assert(ParseSupport.QuoteCharacter(ParseSupport.GetCharClass(ch))); this.cssToken.propertyList[this.cssToken.propertyTail].IsPropertyValueQuoted = true; this.cssToken.propertyList[this.cssToken.propertyTail].quoteChar = (byte)ch; }
public static CharClass GetCharClass(char ch) { if (ch > 'ÿ') { return(ParseSupport.GetHighCharClass(ch)); } return(ParseSupport.lowCharClass[(int)ch]); }
public static char ToLowerCase(char ch) { if (!ParseSupport.IsUpperCase(ch)) { return(ch); } return((char)(ch + ' ')); }
public void CrawlingErrorDetectTest() { // 빈 값을 입력했을때 오류 Assert.AreEqual(ParseSupport.Crawling(null), null); Assert.AreEqual(ParseSupport.Crawling(""), null); Assert.AreEqual(ParseSupport.Crawling("ftp://aeawe"), null); }
private char ScanTag(char ch, ref CharClass charClass, ref int parseCurrent) { while ((parseCurrent < this.parseEnd || !ParseSupport.InvalidUnicodeCharacter(charClass)) && ch != '>') { ch = this.parseBuffer[++parseCurrent]; charClass = ParseSupport.GetCharClass(ch); } return(ch); }
private char ScanText(char ch, ref CharClass charClass, ref int parseCurrent) { char[] array = this.parseBuffer; while (ParseSupport.HtmlTextCharacter(charClass)) { ch = array[++parseCurrent]; charClass = ParseSupport.GetCharClass(ch); } return(ch); }
// Token: 0x06001891 RID: 6289 RVA: 0x000C4A65 File Offset: 0x000C2C65 protected void SetCodePage(ushort codePage, TextMapping textMapping) { if (codePage != this.currentCodePage) { this.currentCodePage = codePage; this.leadMask = ParseSupport.GetCodePageLeadMask((int)codePage); } if (textMapping != this.currentTextMapping) { this.currentTextMapping = textMapping; } }
// Token: 0x06001243 RID: 4675 RVA: 0x000832A8 File Offset: 0x000814A8 internal static bool AttemptUnescape(char[] parseBuffer, int parseEnd, ref char ch, ref int parseCurrent) { if (ch != '\\' || parseCurrent == parseEnd) { return(false); } ch = parseBuffer[++parseCurrent]; CharClass charClass = ParseSupport.GetCharClass(ch); int num = parseCurrent + 6; num = ((num < parseEnd) ? num : parseEnd); if (ParseSupport.HexCharacter(charClass)) { int num2 = 0; do { num2 <<= 4; num2 |= ParseSupport.CharToHex(ch); if (parseCurrent == num) { goto IL_C3; } ch = parseBuffer[++parseCurrent]; charClass = ParseSupport.GetCharClass(ch); }while (ParseSupport.HexCharacter(charClass)); if (ch == '\r' && parseCurrent != parseEnd) { ch = parseBuffer[++parseCurrent]; if (ch == '\n') { charClass = ParseSupport.GetCharClass(ch); } else { parseCurrent--; } } if (ch != ' ' && ch != '\t' && ch != '\r' && ch != '\n' && ch != '\f') { parseCurrent--; } IL_C3: ch = (char)num2; return(true); } if (ch >= ' ' && ch != '\u007f') { return(true); } parseCurrent--; ch = '\\'; return(false); }
/// <summary> /// 공지사항, 자유게시판 등 메뉴를 읽어오는 함수입니다. /// </summary> /// <param name="guser"></param> public override void SearchMenu(GachonUser guser) { if (boards.Count == 0)// 값이 없을때만 실행 { // 웹사이트의 메뉴부분의 주소를 읽어옵니다. Uri baseuri = new Uri(SiteUrl + "board/list.jsp?Menu_seq=0&Forum_seq=" + ID); HtmlDocument dom = guser.VisitPage(baseuri); HtmlNodeCollection sets = dom.DocumentNode.SelectNodes("//ul[@class='dep']/li/a"); if (sets == null) { throw new NoConnectPageError("연결이 정상적으로 이뤄지지 않음"); } #region 각 메뉴의 종류를 분류하여 게시판 타입을 지정해줍니다. foreach (HtmlNode node in sets) { string menu_title = node.InnerText; string href = ParseSupport.StringFromHtml(node.Attributes["href"].Value); switch (menu_title) { case "공지사항": boards.Add(new BoardType(BoardType.PostType.Notice, menu_title, new Uri(baseuri, href).AbsoluteUri)); break; case "강의자료실": case "토론/시험자료실": boards.Add(new BoardType(BoardType.PostType.Lecture, menu_title, new Uri(baseuri, href).AbsoluteUri)); break; case "레포트제출실": boards.Add(new BoardType(BoardType.PostType.Homework, menu_title, new Uri(baseuri, href).AbsoluteUri)); break; case "HOME": break; default: boards.Add(new BoardType(BoardType.PostType.ETC, menu_title, new Uri(baseuri, href))); break; } } #endregion } }
public static HtmlNameIndex LookupName(char[] nameBuffer, int nameOffset, int nameLength) { InternalDebug.Assert(nameLength >= 0); if (nameLength != 0 && nameLength <= HtmlNameData.MAX_NAME) { var nameHashValue = (short)(((uint)HashCode.CalculateLowerCase(nameBuffer, nameOffset, nameLength) ^ HtmlNameData.NAME_HASH_MODIFIER) % HtmlNameData.NAME_HASH_SIZE); var nameIndex = (int)HtmlNameData.nameHashTable[nameHashValue]; if (nameIndex > 0) { do { var name = HtmlNameData.names[nameIndex].name; if (name.Length == nameLength && name[0] == ParseSupport.ToLowerCase(nameBuffer[nameOffset])) { var i = 0; while (++i < name.Length) { InternalDebug.Assert(!ParseSupport.IsUpperCase(name[i])); if (ParseSupport.ToLowerCase(nameBuffer[nameOffset + i]) != name[i]) { break; } } if (i == name.Length) { return((HtmlNameIndex)nameIndex); } } nameIndex++; }while (HtmlNameData.names[nameIndex].hash == nameHashValue); } } return(HtmlNameIndex.Unknown); }
public HtmlNameIndex LookupTagName(int nameLength, Token.Fragment fragment) { if (nameLength > HtmlNameData.MAX_NAME) { return(HtmlNameIndex.Unknown); } var nameHashValue = (short)(((uint)token.CalculateHashLowerCase(fragment) ^ HtmlNameData.NAME_HASH_MODIFIER) % HtmlNameData.NAME_HASH_SIZE); var nameIndex = (int)HtmlNameData.nameHashTable[nameHashValue]; if (nameIndex > 0) { do { var name = HtmlNameData.names[nameIndex].name; if (name.Length == nameLength) { if (fragment.tail == fragment.head + 1) { if (name[0] == ParseSupport.ToLowerCase(token.buffer[fragment.headOffset])) { if (nameLength == 1 || token.CaseInsensitiveCompareRunEqual(fragment.headOffset + 1, name, 1)) { return((HtmlNameIndex)nameIndex); } } } else if (token.CaseInsensitiveCompareEqual(ref fragment, name)) { return((HtmlNameIndex)nameIndex); } } nameIndex++; }while (HtmlNameData.names[nameIndex].hash == nameHashValue); } return(HtmlNameIndex.Unknown); }
// Token: 0x0600190C RID: 6412 RVA: 0x000C7C8C File Offset: 0x000C5E8C public static bool IsHyperlinkField(ref ScratchBuffer scratch, out bool local, out BufferString linkUrl) { int num = 0; int length = scratch.Length; while (num != scratch.Length && ParseSupport.WhitespaceCharacter(ParseSupport.GetCharClass(scratch[num]))) { num++; } if (scratch.Length - num > 10 && scratch[num] == 'H' && scratch[num + 1] == 'Y' && scratch[num + 2] == 'P' && scratch[num + 3] == 'E' && scratch[num + 4] == 'R' && scratch[num + 5] == 'L' && scratch[num + 6] == 'I' && scratch[num + 7] == 'N' && scratch[num + 8] == 'K' && scratch[num + 9] == ' ') { num += 10; int num2; int num3; int num4; int num5; int fieldArgument = RtfSupport.GetFieldArgument(ref scratch, num, out num2, out num3, out num4, out num5); if (num3 == 2 && scratch[num2] == '\\' && scratch[num2 + 1] == 'l') { local = true; num += fieldArgument; fieldArgument = RtfSupport.GetFieldArgument(ref scratch, num, out num2, out num3, out num4, out num5); } else { local = false; } if (num5 != 0) { if (local) { num4--; num5++; scratch[num4] = '#'; } linkUrl = scratch.SubString(num4, num5); return(true); } } local = false; linkUrl = BufferString.Null; return(false); }
public HtmlNameIndex LookupName(int nameLength, Token.LexicalUnit unit) { InternalDebug.Assert(nameLength >= 0); if (nameLength != 0 && nameLength <= HtmlNameData.MAX_NAME) { var nameHashValue = (short)(((uint)token.CalculateHashLowerCase(unit) ^ HtmlNameData.NAME_HASH_MODIFIER) % HtmlNameData.NAME_HASH_SIZE); var nameIndex = (int)HtmlNameData.nameHashTable[nameHashValue]; if (nameIndex > 0) { do { var name = HtmlNameData.names[nameIndex].name; if (name.Length == nameLength) { if (token.IsContiguous(unit)) { if (name[0] == ParseSupport.ToLowerCase(token.buffer[unit.headOffset])) { if (nameLength == 1 || token.CaseInsensitiveCompareRunEqual(unit.headOffset + 1, name, 1)) { return((HtmlNameIndex)nameIndex); } } } else if (token.CaseInsensitiveCompareEqual(unit, name)) { return((HtmlNameIndex)nameIndex); } } nameIndex++; }while (HtmlNameData.names[nameIndex].hash == nameHashValue); } } return(HtmlNameIndex.Unknown); }
public override void SearchMenu(GachonUser guser) { Uri baseuri = new Uri("http://cyber.gachon.ac.kr/mod/ubboard/index.php?id=" + ID); HtmlDocument dom = guser.VisitPage(baseuri); HtmlNodeCollection sets = dom.DocumentNode.SelectNodes("//div[contains(@class,'boards')]//tr/td[1]"); foreach (HtmlNode node in sets) { string menu_title = ParseSupport.StringFromHtml(node.InnerText); if (node.ChildNodes["a"] == null) { continue; } string href = node.ChildNodes["a"].Attributes["href"].Value; if (menu_title.IndexOf("Announcements") >= 0 || menu_title.IndexOf("공지") >= 0) { NewBoard(BoardType.PostType.Notice, menu_title, baseuri, href); } } }
public override void SearchMenu(GachonUser guser) { Uri baseuri = new Uri("https://cafe.naver.com/" + ID); HtmlDocument dom = guser.VisitPage(baseuri, Encoding.Default); HtmlNodeCollection sets = dom.DocumentNode.SelectNodes("//ul[@class='cafe-menu-list']//li"); foreach (HtmlNode node in sets) { string menu_title = ParseSupport.StringFromHtml(node.InnerText); if (node.ChildNodes["a"] == null) { continue; } string href = node.ChildNodes["a"].Attributes["href"].Value; if (menu_title.IndexOf("공모전") >= 0 || menu_title.IndexOf("공지") >= 0) { NewBoard(BoardType.PostType.Notice, menu_title, baseuri, href); } } }
// Token: 0x060012B5 RID: 4789 RVA: 0x00084EFC File Offset: 0x000830FC public HtmlNameIndex LookupTagName(int nameLength, Token.Fragment fragment) { if (nameLength > 14) { return(HtmlNameIndex.Unknown); } short num = (short)((ulong)(this.token.CalculateHashLowerCase(fragment) ^ 221) % 601UL); int num2 = (int)HtmlNameData.nameHashTable[(int)num]; if (num2 > 0) { for (;;) { string name = HtmlNameData.Names[num2].Name; if (name.Length == nameLength) { if (fragment.Tail == fragment.Head + 1) { if (name[0] == ParseSupport.ToLowerCase(this.token.Buffer[fragment.HeadOffset]) && (nameLength == 1 || this.token.CaseInsensitiveCompareRunEqual(fragment.HeadOffset + 1, name, 1))) { break; } } else if (this.token.CaseInsensitiveCompareEqual(ref fragment, name)) { goto Block_6; } } num2++; if (HtmlNameData.Names[num2].Hash != num) { return(HtmlNameIndex.Unknown); } } return((HtmlNameIndex)num2); Block_6: return((HtmlNameIndex)num2); } return(HtmlNameIndex.Unknown); }
public HtmlNameIndex LookupName(int nameLength, ref HtmlToken.Fragment fragment) { if (nameLength > HtmlData.MAX_NAME || nameHashValue < 0) { return(HtmlNameIndex.Unknown); } int nameIndex = (int)HtmlData.nameHashTable[nameHashValue]; if (nameIndex > 0) { do { string name = HtmlData.names[nameIndex].name; if (name.Length == nameLength) { if (fragment.tail == fragment.head + 1) { if (name[0] == ParseSupport.ToLowerCase(this.token.buffer[fragment.headOffset])) { if (nameLength == 1 || this.token.CaseInsensitiveCompareRunEqual(fragment.headOffset + 1, name, 1)) { return((HtmlNameIndex)nameIndex); } } } else if (this.token.CaseInsensitiveCompareEqual(ref fragment, name)) { return((HtmlNameIndex)nameIndex); } } nameIndex++; }while (HtmlData.names[nameIndex].hash == nameHashValue); } return(HtmlNameIndex.Unknown); }
public CssNameIndex LookupName(int nameLength, Token.Fragment fragment) { if (nameLength > 26) { return(CssNameIndex.Unknown); } short num = (short)((ulong)(token.CalculateHashLowerCase(fragment) ^ 2) % 329uL); int num2 = (int)CssData.nameHashTable[(int)num]; if (num2 > 0) { while (true) { string name = CssData.names[num2].name; if (name.Length == nameLength) { if (fragment.tail == fragment.head + 1) { if (name[0] == ParseSupport.ToLowerCase(token.buffer[fragment.headOffset]) && (nameLength == 1 || token.CaseInsensitiveCompareRunEqual(fragment.headOffset + 1, name, 1))) { break; } } else if (token.CaseInsensitiveCompareEqual(ref fragment, name)) { goto Block_6; } } num2++; if (CssData.names[num2].hash != num) { return(CssNameIndex.Unknown); } } return((CssNameIndex)num2); Block_6: return((CssNameIndex)num2); } return(CssNameIndex.Unknown); }
public CssNameIndex LookupName(int nameLength, CssToken.Fragment fragment) { if (nameLength > CssData.MAX_NAME) { return(CssNameIndex.Unknown); } short nameHashValue = (short)(((uint)this.token.CalculateHashLowerCase(fragment) ^ CssData.NAME_HASH_MODIFIER) % CssData.NAME_HASH_SIZE); int nameIndex = (int)CssData.nameHashTable[nameHashValue]; if (nameIndex > 0) { do { string name = CssData.names[nameIndex].name; if (name.Length == nameLength) { if (fragment.tail == fragment.head + 1) { if (name[0] == ParseSupport.ToLowerCase(this.token.buffer[fragment.headOffset])) { if (nameLength == 1 || this.token.CaseInsensitiveCompareRunEqual(fragment.headOffset + 1, name, 1)) { return((CssNameIndex)nameIndex); } } } else if (this.token.CaseInsensitiveCompareEqual(ref fragment, name)) { return((CssNameIndex)nameIndex); } } nameIndex++; }while (CssData.names[nameIndex].hash == nameHashValue); } return(CssNameIndex.Unknown); }