| #!/usr/bin/perl |
| |
| # Copyright (C) 2007 Apple Inc. All rights reserved. |
| # Copyright (C) 2010 Holger Hans Peter Freyther |
| # |
| # Redistribution and use in source and binary forms, with or without |
| # modification, are permitted provided that the following conditions |
| # are met: |
| # |
| # 1. Redistributions of source code must retain the above copyright |
| # notice, this list of conditions and the following disclaimer. |
| # 2. Redistributions in binary form must reproduce the above copyright |
| # notice, this list of conditions and the following disclaimer in the |
| # documentation and/or other materials provided with the distribution. |
| # 3. Neither the name of Apple Inc. ("Apple") nor the names of |
| # its contributors may be used to endorse or promote products derived |
| # from this software without specific prior written permission. |
| # |
| # THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY |
| # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| # DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY |
| # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| # This script updates Tools/iExploder/iExploder-1.3.2/htdocs/*.in based on |
| # WebCore/css/CSSPropertyNames.in, WebCore/html/HTMLTagNames.in |
| # and WebCore/html/HTMLAttributeNames.in |
| |
| use warnings; |
| use strict; |
| |
| use FindBin; |
| use lib $FindBin::Bin; |
| use VCSUtils; |
| use webkitdirs; |
| |
| use File::Spec; |
| |
| sub generateEntityListFromFile($); |
| sub readiExploderFile($); |
| sub update($$); |
| sub writeiExploderFile($@); |
| |
| update("cssproperties.in", "css/CSSPropertyNames.in"); |
| update("htmlattrs.in", "html/HTMLAttributeNames.in"); |
| update("htmltags.in", "html/HTMLTagNames.in"); |
| print "Successfully updated!\n"; |
| |
| exit 0; |
| |
| sub generateEntityListFromFile($) |
| { |
| my ($filename) = @_; |
| |
| my $revision = svnRevisionForDirectory(dirname($filename)); |
| my $path = File::Spec->abs2rel($filename, sourceDir()); |
| my $result = "# From WebKit svn r" . $revision . " (" . $path . ")\n"; |
| |
| my @entities = (); |
| my $in_namespace = 0; |
| |
| open(IN, $filename) || die "$!"; |
| while (my $l = <IN>) { |
| chomp $l; |
| if ($l =~ m/^namespace=\"/) { |
| $in_namespace = 1; |
| } elsif ($in_namespace && $l =~ m/^$/) { |
| $in_namespace = 0; |
| } |
| |
| next if $in_namespace; |
| next if $l =~ m/^\s*#/ || $l =~ m/^\s*$/; |
| |
| # For HTML Tags that can have additional information |
| if ($l =~ m/ /) { |
| my @split = split / /, $l; |
| $l = $split[0] |
| } |
| |
| push(@entities, $l); |
| } |
| close(IN); |
| |
| $result .= join("\n", sort { $a cmp $b } @entities) . "\n\n"; |
| |
| return $result; |
| } |
| |
| sub readiExploderFile($) |
| { |
| my ($filename) = @_; |
| |
| my @sections = (); |
| local $/ = "\n\n"; |
| |
| open(IN, $filename) || die "$!"; |
| @sections = <IN>; |
| close(IN); |
| |
| return @sections; |
| } |
| |
| sub update($$) |
| { |
| my ($iexploderPath, $webcorePath) = @_; |
| |
| $iexploderPath = File::Spec->catfile(sourceDir(), "Tools", "iExploder", "iExploder-1.3.2", "htdocs", split("/", $iexploderPath)); |
| $webcorePath = File::Spec->catfile(sourceDir(), "Source", "WebCore", split("/", $webcorePath)); |
| |
| my @sections = readiExploderFile($iexploderPath); |
| $sections[0] = generateEntityListFromFile($webcorePath); |
| writeiExploderFile($iexploderPath, @sections); |
| } |
| |
| |
| sub writeiExploderFile($@) |
| { |
| my ($filename, @sections) = @_; |
| |
| open(OUT, "> $filename") || die "$!"; |
| print OUT join("", @sections); |
| close(OUT); |
| } |
| |