diff options
| author | Ben Murdoch <benm@google.com> | 2011-05-05 14:36:32 +0100 | 
|---|---|---|
| committer | Ben Murdoch <benm@google.com> | 2011-05-10 15:38:30 +0100 | 
| commit | f05b935882198ccf7d81675736e3aeb089c5113a (patch) | |
| tree | 4ea0ca838d9ef1b15cf17ddb3928efb427c7e5a1 /Tools/Scripts/update-iexploder-cssproperties | |
| parent | 60fbdcc62bced8db2cb1fd233cc4d1e4ea17db1b (diff) | |
| download | external_webkit-f05b935882198ccf7d81675736e3aeb089c5113a.zip external_webkit-f05b935882198ccf7d81675736e3aeb089c5113a.tar.gz external_webkit-f05b935882198ccf7d81675736e3aeb089c5113a.tar.bz2  | |
Merge WebKit at r74534: Initial merge by git.
Change-Id: I6ccd1154fa1b19c2ec2a66878eb675738735f1eb
Diffstat (limited to 'Tools/Scripts/update-iexploder-cssproperties')
| -rwxr-xr-x | Tools/Scripts/update-iexploder-cssproperties | 129 | 
1 files changed, 129 insertions, 0 deletions
diff --git a/Tools/Scripts/update-iexploder-cssproperties b/Tools/Scripts/update-iexploder-cssproperties new file mode 100755 index 0000000..1a9c0d6 --- /dev/null +++ b/Tools/Scripts/update-iexploder-cssproperties @@ -0,0 +1,129 @@ +#!/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/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", "htdocs", split("/", $iexploderPath)); +    $webcorePath = File::Spec->catfile(sourceDir(), "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); +} +  | 
