internal void TryToAddText(HtmlText text) { if (text != null) { Fragments.Add(text); } }
/// <summary> /// SendEmailAsync /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <SendMailResponse> SendEmailAsync(ISendMailRequest request) { var response = new SendMailResponse(); try { if (_client == null) { _client = new SendGridClient(_clientConfig.ApiKey); } var recipientList = request.Recipients.Select(recipient => new EmailAddress(recipient)).ToList(); var from = new EmailAddress(request.From, request.FromName); var plainTextContent = HtmlText.ConvertHtml(request.Message); var htmlContent = request.Message; var msg = MailHelper.CreateSingleEmailToMultipleRecipients(from, recipientList, request.Subject, plainTextContent, htmlContent); await _client.SendEmailAsync(msg); } catch (Exception ex) { response.ErrorMessage = ex.Message; response.IsSuccess = false; } return(response); }
public void ToHtmlString_should_get_text_as_is(string expected) { var ele = new HtmlElement("b"); var text = new HtmlText(expected); Assert.Equal($"<b>{expected}</b>", ele.Append(text).OuterHtml); }
public void ToString_ReturnsExpected(HtmlText text, string expected) { Assert.Equal(expected, text.ToString()); Assert.Equal(expected, text.Serialize()); Assert.Equal(expected, text.Serialize(HtmlSerializeOptions.None)); Assert.Equal(expected, text.Serialize(HtmlSerializeOptions.NoFormatting)); }
void EndData(HtmlText containerClass) { if (currentData.Count > 0) { string data = currentData.Aggregate(new StringBuilder(), (x, y) => x.Append(y)).ToString(); //TODO: clean this up char[] spaceChars = { (char)9, (char)10, (char)12, (char)13, (char)32 }; if (string.IsNullOrEmpty(new string(data.Where(c => !spaceChars.Contains(c)).ToArray()))) { if (preserveWhitespaceTags.Intersect(tagStack.Select(tag => tag.TagName)).Count() == 0) { if (data.Contains("\n")) { data = "\n"; } else { data = " "; } } } currentData = new List <string>(); HtmlText o = containerClass; o.Value = data; o.Setup(currentTag, root.Previous); if (root.Previous != null) { root.Previous.Next = o; } root.Previous = o; currentTag.AddChild(o); } }
private static string AddFragments(TagReader reader, HtmlFragment parentFragment, Stack <string> openTagStack) { while (reader.Read()) { parentFragment.TryToAddText(HtmlText.Create(reader.Document, reader.PreviousTag, reader.CurrentTag)); if (reader.CurrentTag.TagType == TagType.Close && openTagStack.Any(t => t.Equals(reader.CurrentTag.Name, StringComparison.CurrentCultureIgnoreCase))) { return(reader.CurrentTag.Name); } var node = parentFragment.AddNode(reader.CurrentTag); node.Parent = parentFragment; if (reader.CurrentTag.TagType == TagType.Open) { openTagStack.Push(reader.CurrentTag.Name); var lastClosed = AddFragments(reader, node, openTagStack); if (lastClosed != openTagStack.Pop()) { return(lastClosed); } } } parentFragment.TryToAddText(HtmlText.Create(reader.Document, reader.CurrentTag, null)); return(null); }
/// <summary> /// 抓取网页内容 /// </summary> /// <param name="id">数据的ID,源自网页中的ID</param> /// <param name="url">抓取的URl</param> /// <returns></returns> private bool CatchContent(long id, string url) { dataEncoding = cbbEncoding.Text; data = WebAccess.Request(url, string.Empty, WebAccess.WebAccessMethod.POST, "text\\html", null, dataEncoding); if (!string.IsNullOrEmpty(data) && data.Contains(txtFilter.Text) && !data.Contains(txtOppFilter.Text)) { try { //匹配过滤 item.ID = id.ToString(); item.Title = FindText.Find(data, config.GetConfig("Title")); item.Author = FindText.Find(data, config.GetConfig("Author")); item.CreateDate = FindText.Find(data, config.GetConfig("CreateDate")); item.ImageUrl = FindText.Find(data, config.GetConfig("ImageUrl")); item.Content = FindText.Find(data, config.GetConfig("Content")); //处理HTML内容 if (cbReplaceHtml.Checked) { item.Content = HtmlText.ToText(item.Content); } int contentLength = Convert.ToInt32(txtContentLength.Text); if (!string.IsNullOrEmpty(item.Title) && item.Content.Length > contentLength) { resultFileName = string.Format("{0}//{1}.txt", OUTPUT_PATH, CommonFile.RemoveInvalidChar(item.Title)); System.IO.File.WriteAllText(resultFileName, item.ToString()); return(true); } } catch (Exception ex) { txtMessage.Text = ex.Message; } } return(false); }
internal static HtmlText Create(string doc, HtmlTag startTag, HtmlTag endTag) { var startIndex = 0; if (startTag != null) { startIndex = startTag.StartIndex + startTag.Length; } var endIndex = doc.Length; if (endTag != null) { endIndex = endTag.StartIndex; } var text = new HtmlText(doc, startIndex, endIndex); if (text != null && !string.IsNullOrEmpty(text.Content)) { return(text); } return(null); }
public void ToString_ReturnString_Indent() { // Arrange var obj = HtmlText.Create(contentRaw); // Assert Assert.Equal($"\t{contentEncoded}\n", obj.ToString(1)); }
public void Constrcutor_SetValues_Raw() { // Act var obj = new HtmlText(contentRaw, false); // Assert Assert.Equal(contentRaw, obj.Content); }
public void Constrcutor_SetValues_Encode() { // Act var obj = new HtmlText(contentRaw); // Assert Assert.Equal(contentEncoded, obj.Content); }
public void Equals_Null() { // Arrange var orig = HtmlText.Create(contentRaw, false); // Assert Assert.False(orig.Equals(null)); }
public void Constrcutor_Empty() { // Act var obj = new HtmlText(); // Assert Assert.Null(obj.Content); }
public void ToXText_Test(HtmlText htmlText, XText expectedXText) { // Act var xText = htmlText.ToXText(); // Assert Assert.That(xText, Is.EqualTo(expectedXText).Using <XNode>(XNode.EqualityComparer)); }
public static string Serialize(this HtmlText text, string parentTagName) { if (text == null) { throw new ArgumentNullException(nameof(text)); } return(Builder.BuildString(sb => SerializeTextTo(text.Value, parentTagName, sb))); }
public void TextTest(string input, string expected) { // ARRANGE var content = new HtmlText(input); // ACT & ASSERT Assert.AreEqual(expected, content.Text); }
public void ToXText_Test(HtmlText text, XText expected) { // Act var actual = text.ToXText(); // Assert Assert.That(actual, Is.EqualTo(expected).Using <XNode>(XNode.EqualityComparer)); }
public void RawTextTest(string text) { // ARRANGE var content = new HtmlText(text); // ACT & ASSERT Assert.AreEqual(text, content.RawText); }
public void IndexerNullTest() { // ARRANGE var element = new HtmlText("Hello"); // ACT & ASSERT Assert.AreEqual(null, element[null]); }
public void TestHtmlDecodingValue() { var tag = new HtmlText(); tag.Value = "10 < 20"; Assert.AreEqual("10 < 20", tag.Value); Assert.AreEqual("10 < 20", tag.ToString()); }
/// <summary> /// 读取下一个 HTML 内容节点(开始标签、结束标签、注释或特殊节点) /// </summary> /// <param name="index">读取开始位置</param> /// <returns>下一个内容节点,若已经达到文档末尾,则返回 null</returns> protected virtual HtmlContentFragment NextContentNode(int index) { Match match; while (true) { index = HtmlText.IndexOf('<', index); if (index == -1) { return(null); } match = specialTagRegex.Match(HtmlText, index); if (match.Success) { return(CreateSpacial(match)); } match = commentTagRegex.Match(HtmlText, index); if (match.Success) { return(CreateComment(match)); } match = tagRegex.Match(HtmlText, index); if (match.Success == false) { return(null);//如果再也找不到标签,则认为已经匹配结束 } //如果无法匹配任何类型的标签,稍后从下一个位置再进行尝试 index = match.Index + 1; var capture = match.Groups["tag"]; match = beginTagRegex.Match(HtmlText, capture.Index, capture.Length); if (match.Success) { return(CreateBeginTag(match)); } match = endTagRegex.Match(HtmlText, capture.Index, capture.Length); if (match.Success) { return(CreateEndTag(match)); } match = doctypeRegex.Match(HtmlText, capture.Index, capture.Length); if (match.Success) { return(CreateDoctypeDeclaration(match)); } } }
public void GetHashCode_IsEqual() { // Arrange var orig = HtmlText.Create(contentRaw, false); var copy = HtmlText.Create(contentRaw, false); // Assert Assert.Equal(orig.GetHashCode(), copy.GetHashCode()); }
public void GetHashCode_IsNotEqual() { // Arrange var orig = HtmlText.Create(contentRaw, false); var other = HtmlText.Create(contentEncoded, false); // Assert Assert.NotEqual(orig.GetHashCode(), other.GetHashCode()); }
public void Create_ReturnNewInstance_Raw() { // Act var obj = HtmlText.Create(contentRaw, false); // Assert Assert.Equal(contentRaw, obj.Content); Assert.IsType <HtmlText>(obj); }
public void Equals_IsEqual() { // Arrange var orig = HtmlText.Create(contentRaw, false); var copy = HtmlText.Create(contentRaw, false); // Assert Assert.True(orig.Equals(copy)); }
public void Equals_ReturnsExpected(HtmlText text, object other, bool expected) { if (other is HtmlText || other == null) { Assert.Equal(expected, text.GetHashCode().Equals(other?.GetHashCode())); Assert.Equal(expected, text.Equals((HtmlText)other)); } Assert.Equal(expected, text.Equals(other)); }
public void Equals_OtherObject() { // Arrange var orig = HtmlText.Create(contentRaw, false); var str = "not same"; // Assert Assert.False(orig.Equals(str)); }
public ActionResult EditText(HtmlText model) { GetProjectIdAsyncByJustBackRequest(); var projectTemp = _context.Projects.FirstOrDefault(c => c.Id == ProjectId); projectTemp.Text = model.HtmlContent; _context.SaveChanges(); return(RedirectToAction("Index", "Home")); }
public void Equals_IsNotEqual() { // Arrange var orig = HtmlText.Create(contentRaw, false); var other = HtmlText.Create(contentEncoded, false); // Assert Assert.False(orig.Equals(other)); }
public void ToHtml_WhenTextIsAbc_ShouldAlwaysReturnAbc() { var htmlText = new HtmlText("abc"); Assert.That(htmlText.ToHtml(TagRenderMode.EndTag).ToString(), Is.EqualTo("abc")); Assert.That(htmlText.ToHtml(TagRenderMode.StartTag).ToString(), Is.EqualTo("abc")); Assert.That(htmlText.ToHtml(TagRenderMode.SelfClosing).ToString(), Is.EqualTo("abc")); Assert.That(htmlText.ToHtml(TagRenderMode.Normal).ToString(), Is.EqualTo("abc")); Assert.That(htmlText.ToHtml().ToString(), Is.EqualTo("abc")); }
public void ObjectType_Get_ReturnsText() { HtmlText text = new HtmlText("text"); Assert.Equal(HtmlObjectType.Text, text.ObjectType); }
public void Ctor_String(string text) { HtmlText htmlText = new HtmlText(text); Assert.Equal(text, htmlText.Text); }