<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[55658] trunk/WebKitTools</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/55658">55658</a></dd>
<dt>Author</dt> <dd>zecke@webkit.org</dd>
<dt>Date</dt> <dd>2010-03-08 00:16:54 -0800 (Mon, 08 Mar 2010)</dd>
</dl>

<h3>Log Message</h3>
<pre>[iexploder] Automatically update htmltags.in and htmlattrs.in too

https://bugs.webkit.org/show_bug.cgi?id=33755

Change the update-iexploder-cssproperites script to update
the htmlattrs.in and htmltags.in of WebKitTools/iExploder/htdocs
automatically as well.

Change the reading and writing code to work with parameters
and extend the method that is parsing the .in files to handle
the HTMLTagNames.in and the HTMLAttributeNames.in files.

Remove custom code to determine the revision of files with a
utility of VCUtils.pm to determine the revision of the directory
these files are located in. This will also work with git checkout.

* Scripts/update-iexploder-cssproperties:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkWebKitToolsChangeLog">trunk/WebKitTools/ChangeLog</a></li>
<li><a href="#trunkWebKitToolsScriptsupdateiexplodercssproperties">trunk/WebKitTools/Scripts/update-iexploder-cssproperties</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkWebKitToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/WebKitTools/ChangeLog (55657 => 55658)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebKitTools/ChangeLog        2010-03-08 08:13:58 UTC (rev 55657)
+++ trunk/WebKitTools/ChangeLog        2010-03-08 08:16:54 UTC (rev 55658)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2010-03-08  Holger Hans Peter Freyther  &lt;zecke@selfish.org&gt;
+
+        Reviewed by Darin Adler.
+
+        [iexploder] Automatically update htmltags.in and htmlattrs.in too
+        https://bugs.webkit.org/show_bug.cgi?id=33755
+
+        Change the update-iexploder-cssproperites script to update
+        the htmlattrs.in and htmltags.in of WebKitTools/iExploder/htdocs
+        automatically as well.
+
+        Change the reading and writing code to work with parameters
+        and extend the method that is parsing the .in files to handle
+        the HTMLTagNames.in and the HTMLAttributeNames.in files.
+
+        Remove custom code to determine the revision of files with a
+        utility of VCUtils.pm to determine the revision of the directory
+        these files are located in. This will also work with git checkout.
+
+        * Scripts/update-iexploder-cssproperties:
+
</ins><span class="cx"> 2010-03-07  Shinichiro Hamaji  &lt;hamaji@chromium.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Reviewed by Eric Seidel.
</span></span></pre></div>
<a id="trunkWebKitToolsScriptsupdateiexplodercssproperties"></a>
<div class="modfile"><h4>Modified: trunk/WebKitTools/Scripts/update-iexploder-cssproperties (55657 => 55658)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebKitTools/Scripts/update-iexploder-cssproperties        2010-03-08 08:13:58 UTC (rev 55657)
+++ trunk/WebKitTools/Scripts/update-iexploder-cssproperties        2010-03-08 08:16:54 UTC (rev 55658)
</span><span class="lines">@@ -1,6 +1,7 @@
</span><span class="cx"> #!/usr/bin/perl
</span><span class="cx"> 
</span><span class="cx"> # Copyright (C) 2007 Apple Inc.  All rights reserved.
</span><ins>+# Copyright (C) 2010 Holger Hans Peter Freyther
</ins><span class="cx"> #
</span><span class="cx"> # Redistribution and use in source and binary forms, with or without
</span><span class="cx"> # modification, are permitted provided that the following conditions
</span><span class="lines">@@ -26,87 +27,103 @@
</span><span class="cx"> # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
</span><span class="cx"> # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx"> 
</span><del>-# This script updates WebKitTools/iExploder/htdocs/cssproperties.in based on
-# WebCore/css/CSSPropertyNames.in.
</del><ins>+# This script updates WebKitTools/iExploder/htdocs/*.in based on
+# WebCore/css/CSSPropertyNames.in, WebCore/html/HTMLTagNames.in
+# and WebCore/html/HTMLAttributeNames.in
</ins><span class="cx"> 
</span><span class="cx"> use warnings;
</span><span class="cx"> use strict;
</span><span class="cx"> 
</span><span class="cx"> use FindBin;
</span><span class="cx"> use lib $FindBin::Bin;
</span><ins>+use VCSUtils;
</ins><span class="cx"> use webkitdirs;
</span><span class="cx"> 
</span><span class="cx"> use File::Spec;
</span><span class="cx"> 
</span><del>-sub generateSectionFromCSSPropertyNamesFile();
-sub readiExploderFile();
-sub svnRevision($);
-sub writeiExploderFile();
</del><ins>+sub generateEntityListFromFile($);
+sub readiExploderFile($);
+sub update($$);
+sub writeiExploderFile($@);
</ins><span class="cx"> 
</span><del>-my $iExploderFile = File::Spec-&gt;catfile(sourceDir(), split(&quot;/&quot;, &quot;WebKitTools/iExploder/htdocs/cssproperties.in&quot;));
-my $cssPropertyNamesFile = File::Spec-&gt;catfile(sourceDir(), split(&quot;/&quot;, &quot;WebCore/css/CSSPropertyNames.in&quot;));
-
-my @sections = readiExploderFile();
-$sections[0] = generateSectionFromCSSPropertyNamesFile();
-writeiExploderFile();
-
-print `svn stat $iExploderFile`;
</del><ins>+update(&quot;cssproperties.in&quot;, &quot;css/CSSPropertyNames.in&quot;);
+update(&quot;htmlattrs.in&quot;, &quot;html/HTMLAttributeNames.in&quot;);
+update(&quot;htmltags.in&quot;, &quot;html/HTMLTagNames.in&quot;);
</ins><span class="cx"> print &quot;Successfully updated!\n&quot;;
</span><span class="cx"> 
</span><span class="cx"> exit 0;
</span><span class="cx"> 
</span><del>-sub generateSectionFromCSSPropertyNamesFile()
</del><ins>+sub generateEntityListFromFile($)
</ins><span class="cx"> {
</span><del>-    my $revision = svnRevision($cssPropertyNamesFile);
-    my $path = File::Spec-&gt;abs2rel($cssPropertyNamesFile, sourceDir());
</del><ins>+    my ($filename) = @_;
+
+    my $revision = svnRevisionForDirectory(dirname($filename));
+    my $path = File::Spec-&gt;abs2rel($filename, sourceDir());
</ins><span class="cx">     my $result = &quot;# From WebKit svn r&quot; . $revision . &quot; (&quot; . $path . &quot;)\n&quot;;
</span><span class="cx"> 
</span><del>-    my @properties = ();
</del><ins>+    my @entities = ();
+    my $in_namespace = 0;
</ins><span class="cx"> 
</span><del>-    open(IN, $cssPropertyNamesFile) || die &quot;$!&quot;;
</del><ins>+    open(IN, $filename) || die &quot;$!&quot;;
</ins><span class="cx">     while (my $l = &lt;IN&gt;) {
</span><span class="cx">         chomp $l;
</span><ins>+        if ($l =~ m/^namespace=\&quot;/) {
+            $in_namespace = 1;
+        } elsif ($in_namespace &amp;&amp; $l =~ m/^$/) {
+            $in_namespace = 0;
+        }
+
+        next if $in_namespace;
</ins><span class="cx">         next if $l =~ m/^\s*#/ || $l =~ m/^\s*$/;
</span><del>-        push(@properties, $l);
</del><ins>+
+        # For HTML Tags that can have additional information
+        if ($l =~ m/ /) {
+            my @split = split / /, $l;
+            $l = $split[0]
+        }
+
+        push(@entities, $l);
</ins><span class="cx">     }
</span><span class="cx">     close(IN);
</span><span class="cx"> 
</span><del>-    $result .= join(&quot;\n&quot;, sort { $a cmp $b } @properties) . &quot;\n\n&quot;;
</del><ins>+    $result .= join(&quot;\n&quot;, sort { $a cmp $b } @entities) . &quot;\n\n&quot;;
</ins><span class="cx"> 
</span><span class="cx">     return $result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-sub readiExploderFile()
</del><ins>+sub readiExploderFile($)
</ins><span class="cx"> {
</span><ins>+    my ($filename) = @_;
+
</ins><span class="cx">     my @sections = ();
</span><span class="cx">     local $/ = &quot;\n\n&quot;;
</span><span class="cx"> 
</span><del>-    open(IN, $iExploderFile) || die &quot;$!&quot;;
</del><ins>+    open(IN, $filename) || die &quot;$!&quot;;
</ins><span class="cx">     @sections = &lt;IN&gt;;
</span><span class="cx">     close(IN);
</span><span class="cx"> 
</span><span class="cx">     return @sections;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-sub svnRevision($)
</del><ins>+sub update($$)
</ins><span class="cx"> {
</span><del>-    my ($file) = @_;
-    my $revision = &quot;&quot;;
</del><ins>+    my ($iexploderPath, $webcorePath) = @_;
</ins><span class="cx"> 
</span><del>-    open INFO, &quot;svn info '$file' |&quot; or die;
-    while (&lt;INFO&gt;) {
-        if (/^Revision: (.+)/) {
-            $revision = $1;
-        }
-    }
-    close INFO;
</del><ins>+    $iexploderPath = File::Spec-&gt;catfile(sourceDir(), &quot;WebKitTools&quot;, &quot;iExploder&quot;, &quot;htdocs&quot;, split(&quot;/&quot;, $iexploderPath));
+    $webcorePath = File::Spec-&gt;catfile(sourceDir(), &quot;WebCore&quot;, split(&quot;/&quot;, $webcorePath));
</ins><span class="cx"> 
</span><del>-    return $revision ? $revision : &quot;UNKNOWN&quot;;
</del><ins>+    my @sections = readiExploderFile($iexploderPath);
+    $sections[0] = generateEntityListFromFile($webcorePath);
+    writeiExploderFile($iexploderPath, @sections);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-sub writeiExploderFile()
</del><ins>+
+sub writeiExploderFile($@)
</ins><span class="cx"> {
</span><del>-    open(OUT, &quot;&gt; $iExploderFile&quot;) || die &quot;$!&quot;;
</del><ins>+    my ($filename, @sections) = @_;
+
+    open(OUT, &quot;&gt; $filename&quot;) || die &quot;$!&quot;;
</ins><span class="cx">     print OUT join(&quot;&quot;, @sections);
</span><span class="cx">     close(OUT);
</span><span class="cx"> }
</span><ins>+
</ins></span></pre>
</div>
</div>

</body>
</html>