WriteMarkupText() public method

Write a buffer containing HTML markup directly to the output, without escaping special characters.
Writes a buffer containing HTML markup directly to the output, without escaping special characters.
/// is null. /// /// is less than zero or greater than the length of /// . /// -or- /// and do not specify /// a valid range in the . /// /// The has been disposed. ///
public WriteMarkupText ( char buffer, int index, int count ) : void
buffer char The buffer containing HTML markup.
index int The index of the first character to write.
count int The number of characters to write.
return void
Exemplo n.º 1
0
		public void TestArgumentExceptions ()
		{
			Assert.Throws<ArgumentNullException> (() => new HtmlWriter (null, Encoding.UTF8));
			Assert.Throws<ArgumentNullException> (() => new HtmlWriter (new MemoryStream (), null));
			Assert.Throws<ArgumentNullException> (() => new HtmlWriter (null));

			using (var html = new HtmlWriter (new StringWriter ())) {
				Assert.Throws<ArgumentNullException> (() => html.WriteAttribute (null));
				Assert.Throws<ArgumentNullException> (() => html.WriteAttribute (null, string.Empty));
				Assert.Throws<ArgumentNullException> (() => html.WriteAttribute ("name", null));
				Assert.Throws<ArgumentException> (() => html.WriteAttribute (string.Empty, null));
				Assert.Throws<ArgumentException> (() => html.WriteAttribute ("a b c", null));
				Assert.Throws<ArgumentNullException> (() => html.WriteAttribute (null, new char[1], 0, 1));
				Assert.Throws<ArgumentNullException> (() => html.WriteAttribute ("name", null, 0, 0));
				Assert.Throws<ArgumentOutOfRangeException> (() => html.WriteAttribute ("name", new char[0], -1, 0));
				Assert.Throws<ArgumentOutOfRangeException> (() => html.WriteAttribute ("name", new char[0], 0, 1));
				Assert.Throws<ArgumentException> (() => html.WriteAttribute (HtmlAttributeId.Unknown, new char[1], 0, 1));
				Assert.Throws<ArgumentNullException> (() => html.WriteAttribute (HtmlAttributeId.Alt, null, 0, 0));
				Assert.Throws<ArgumentOutOfRangeException> (() => html.WriteAttribute (HtmlAttributeId.Alt, new char[0], -1, 0));
				Assert.Throws<ArgumentOutOfRangeException> (() => html.WriteAttribute (HtmlAttributeId.Alt, new char[0], 0, 1));

				Assert.Throws<ArgumentException> (() => html.WriteAttributeName (HtmlAttributeId.Unknown));
				Assert.Throws<ArgumentNullException> (() => html.WriteAttributeName (null));

				Assert.Throws<ArgumentNullException> (() => html.WriteAttributeValue (null));
				Assert.Throws<ArgumentNullException> (() => html.WriteAttributeValue (null, 0, 0));
				Assert.Throws<ArgumentOutOfRangeException> (() => html.WriteAttributeValue (new char[0], -1, 0));
				Assert.Throws<ArgumentOutOfRangeException> (() => html.WriteAttributeValue (new char[0], 0, 1));

				Assert.Throws<ArgumentException> (() => html.WriteEmptyElementTag (HtmlTagId.Unknown));
				Assert.Throws<ArgumentNullException> (() => html.WriteEmptyElementTag (null));
				Assert.Throws<ArgumentException> (() => html.WriteEmptyElementTag (string.Empty));
				Assert.Throws<ArgumentException> (() => html.WriteEmptyElementTag ("a b c"));

				Assert.Throws<ArgumentException> (() => html.WriteEndTag (HtmlTagId.Unknown));
				Assert.Throws<ArgumentNullException> (() => html.WriteEndTag (null));
				Assert.Throws<ArgumentException> (() => html.WriteEndTag (string.Empty));
				Assert.Throws<ArgumentException> (() => html.WriteEndTag ("a b c"));

				Assert.Throws<ArgumentNullException> (() => html.WriteMarkupText (null));
				Assert.Throws<ArgumentNullException> (() => html.WriteMarkupText (null, 0, 0));
				Assert.Throws<ArgumentOutOfRangeException> (() => html.WriteMarkupText (new char[0], -1, 0));
				Assert.Throws<ArgumentOutOfRangeException> (() => html.WriteMarkupText (new char[0], 0, 1));

				Assert.Throws<ArgumentException> (() => html.WriteStartTag (HtmlTagId.Unknown));
				Assert.Throws<ArgumentNullException> (() => html.WriteStartTag (null));
				Assert.Throws<ArgumentException> (() => html.WriteStartTag (string.Empty));
				Assert.Throws<ArgumentException> (() => html.WriteStartTag ("a b c"));

				Assert.Throws<ArgumentNullException> (() => html.WriteText (null));
				Assert.Throws<ArgumentNullException> (() => html.WriteText (null, 0, 0));
				Assert.Throws<ArgumentOutOfRangeException> (() => html.WriteText (new char[0], -1, 0));
				Assert.Throws<ArgumentOutOfRangeException> (() => html.WriteText (new char[0], 0, 1));

				Assert.Throws<ArgumentNullException> (() => html.WriteToken (null));
			}
		}
Exemplo n.º 2
0
        void WriteParagraph(HtmlWriter htmlWriter, IList <FlowedToHtmlTagContext> stack, ref int currentQuoteDepth, StringBuilder para, int quoteDepth)
        {
            var callback = HtmlTagCallback ?? DefaultHtmlTagCallback;
            FlowedToHtmlTagContext ctx;

            while (currentQuoteDepth < quoteDepth)
            {
                ctx = new FlowedToHtmlTagContext(HtmlTagId.BlockQuote);
                callback(ctx, htmlWriter);
                currentQuoteDepth++;
                stack.Add(ctx);
            }

            while (quoteDepth < currentQuoteDepth)
            {
                ctx = stack[stack.Count - 1];
                stack.RemoveAt(stack.Count - 1);

                if (!SuppressContent(stack) && !ctx.DeleteEndTag)
                {
                    ctx.SetIsEndTag(true);

                    if (ctx.InvokeCallbackForEndTag)
                    {
                        callback(ctx, htmlWriter);
                    }
                    else
                    {
                        ctx.WriteTag(htmlWriter);
                    }
                }

                if (ctx.TagId == HtmlTagId.BlockQuote)
                {
                    currentQuoteDepth--;
                }
            }

            if (SuppressContent(stack))
            {
                return;
            }

            ctx = new FlowedToHtmlTagContext(para.Length == 0 ? HtmlTagId.Br : HtmlTagId.P);
            callback(ctx, htmlWriter);

            if (para.Length > 0)
            {
                if (!ctx.SuppressInnerContent)
                {
                    WriteText(htmlWriter, para.ToString());
                }

                if (!ctx.DeleteEndTag)
                {
                    ctx.SetIsEndTag(true);

                    if (ctx.InvokeCallbackForEndTag)
                    {
                        callback(ctx, htmlWriter);
                    }
                    else
                    {
                        ctx.WriteTag(htmlWriter);
                    }
                }
            }

            if (!ctx.DeleteTag)
            {
                htmlWriter.WriteMarkupText(Environment.NewLine);
            }
        }
Exemplo n.º 3
0
		void WriteParagraph (HtmlWriter htmlWriter, IList<FlowedToHtmlTagContext> stack, ref int currentQuoteDepth, StringBuilder para, int quoteDepth)
		{
			var callback = HtmlTagCallback ?? DefaultHtmlTagCallback;
			FlowedToHtmlTagContext ctx;

			while (currentQuoteDepth < quoteDepth) {
				ctx = new FlowedToHtmlTagContext (HtmlTagId.BlockQuote);
				callback (ctx, htmlWriter);
				currentQuoteDepth++;
				stack.Add (ctx);
			}

			while (quoteDepth < currentQuoteDepth) {
				ctx = stack[stack.Count - 1];
				stack.RemoveAt (stack.Count - 1);

				if (!SuppressContent (stack) && !ctx.DeleteEndTag) {
					ctx.SetIsEndTag (true);

					if (ctx.InvokeCallbackForEndTag)
						callback (ctx, htmlWriter);
					else
						ctx.WriteTag (htmlWriter);
				}

				if (ctx.TagId == HtmlTagId.BlockQuote)
					currentQuoteDepth--;
			}

			if (SuppressContent (stack))
				return;

			ctx = new FlowedToHtmlTagContext (para.Length == 0 ? HtmlTagId.Br : HtmlTagId.P);
			callback (ctx, htmlWriter);

			if (para.Length > 0) {
				if (!ctx.SuppressInnerContent)
					WriteText (htmlWriter, para.ToString ());

				if (!ctx.DeleteEndTag) {
					ctx.SetIsEndTag (true);

					if (ctx.InvokeCallbackForEndTag)
						callback (ctx, htmlWriter);
					else
						ctx.WriteTag (htmlWriter);
				}
			}

			if (!ctx.DeleteTag)
				htmlWriter.WriteMarkupText (Environment.NewLine);
		}
Exemplo n.º 4
0
		public void TestHtmlWriter ()
		{
			const string expected = "<html ltr=\"true\"><head/><body><p class=\"paragraph\">" +
				"special characters in this text should get encoded: &lt;&gt;&#39;&amp;\n" +
				"special characters should not get encoded: &lt;&gt;" +
				"</p></body></html>";
			var actual = new StringBuilder ();

			using (var html = new HtmlWriter (new StringWriter (actual))) {
				Assert.AreEqual (HtmlWriterState.Default, html.WriterState);

				// make sure we can't start by writing an attribute since we are in the wrong state
				Assert.Throws<InvalidOperationException> (() => html.WriteAttribute (new HtmlAttribute (HtmlAttributeId.Action, "invalid state")));
				Assert.Throws<InvalidOperationException> (() => html.WriteAttribute (HtmlAttributeId.Action, "invalid state"));
				Assert.Throws<InvalidOperationException> (() => html.WriteAttribute ("action", "invalid state"));

				// write a tag
				html.WriteStartTag (HtmlTagId.Html);
				Assert.AreEqual (HtmlWriterState.Tag, html.WriterState);

				// *now* we should be able to write an attribute
				html.WriteAttribute (new HtmlAttribute ("ltr", "true"));

				// write en empty element tag, this should change the state to Default
				html.WriteEmptyElementTag (HtmlTagId.Head);
				Assert.AreEqual (HtmlWriterState.Tag, html.WriterState);

				html.WriteStartTag ("body");
				Assert.AreEqual (HtmlWriterState.Tag, html.WriterState);

				html.WriteStartTag (HtmlTagId.P);
				Assert.AreEqual (HtmlWriterState.Tag, html.WriterState);

				// make sure that we can't write an attribute value yet
				Assert.Throws<InvalidOperationException> (() => html.WriteAttributeValue ("attrValue"));
				Assert.Throws<InvalidOperationException> (() => html.WriteAttributeValue ("attrValue".ToCharArray (), 0, 9));

				html.WriteAttributeName (HtmlAttributeId.Class);
				Assert.AreEqual (HtmlWriterState.Attribute, html.WriterState);

				html.WriteAttributeValue ("paragraph");
				Assert.AreEqual (HtmlWriterState.Tag, html.WriterState);

				html.WriteText ("special characters in this text should get encoded: <>'&\n");
				html.WriteMarkupText ("special characters should not get encoded: &lt;&gt;");
				Assert.AreEqual (HtmlWriterState.Default, html.WriterState);

				html.WriteEndTag (HtmlTagId.P);

				html.WriteEndTag (HtmlTagId.Body);
				html.WriteEndTag ("html");
			}

			Assert.AreEqual (expected, actual.ToString ());
		}