Fw: tidy: indents textarea contents

On Thu, Aug 03, 2000 at 05:50:11PM -0700, Joey Hess wrote:
> I don't think tidy should indent the contents of <textarea> tags if it is
> in auto-indent mode, because if it does at least some browsers (netscape)
> will include the indent in the text they display in the <textarea>.
> For example, compare this html:
> 
> <form action="foo">
> <textarea name="bar">this is a test</textarea>
> </form>
> 
> With what tidy turns it into, below. If both are loaded in netscape, the text
> will have a leading tab before it.
> 
> joey@kite:~/html/wiki>tidy --indent auto
> 
> Tidy (vers 30th April 2000) Parsing console input (stdin)
> <form action="foo">
> line 1 column 1 - Warning: inserting missing 'title' element
> 
> <textarea name="bar">this is a test</textarea>
> line 4 column 1 - Warning: missing </form>
> 
> "stdin" appears to be HTML 2.0
> 2 warnings/errors were found!
> 
> <!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
> <html>
>   <head>
>     <meta name="generator" content="HTML Tidy, see www.w3.org">
>     <title></title>
>   </head>
> 
>   <body>
>     <form action="foo">
>       <textarea name="bar">
>         this is a test
>       </textarea>
>     </form>
>   </body>
> </html>

The patch below makes Tidy output TEXTAREA contents with zero indent,
like this:

  <!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
  <html>
    <head>
      <meta name="generator" content="HTML Tidy, see www.w3.org">
      <title></title>
    </head>
  
    <body>
      <form action="foo">
  <textarea name="bar">
  this is a test
  </textarea>
      </form>
    </body>
  </html>

--- tidy4aug00.orig/pprint.c	Fri Aug  4 18:21:05 2000
+++ tidy4aug00/pprint.c	Mon Dec 18 21:50:50 2000
@@ -1261,6 +1261,24 @@
             if (IndentContent == no && node->next != null)
                 PFlushLine(fout, indent);
         }
+        else if (node->tag == tag_textarea && IndentContent)
+        {
+            PCondFlushLine(fout, indent);
+
+            indent = 0;
+            PCondFlushLine(fout, indent);
+            PPrintTag(lexer, fout, mode, indent, node);
+            PFlushLine(fout, indent);
+
+            for (content = node->content;
+                    content != null;
+                    content = content->next)
+                PPrintTree(fout, mode, indent, lexer, content);
+
+            PCondFlushLine(fout, indent);
+            PPrintEndTag(fout, mode, indent, node);
+            PFlushLine(fout, indent);
+        }
         else if (node->tag->model & CM_INLINE)
         {
             if (MakeClean)
@@ -1290,7 +1308,7 @@
 
             PPrintTag(lexer, fout, mode, indent, node);
 
-            /* indent content for SELECT, TEXTAREA, MAP, OBJECT and APPLET */
+            /* indent content for SELECT, MAP, OBJECT and APPLET */
 
             if (ShouldIndent(node))
             {


Thanks,

Matej

Received on Thursday, 21 December 2000 11:40:09 UTC