1 #!/usr/bin/perl 2 3 # Copyright (C) 2007 Apple Inc. All rights reserved. 4 # 5 # Redistribution and use in source and binary forms, with or without 6 # modification, are permitted provided that the following conditions 7 # are met: 8 # 9 # 1. Redistributions of source code must retain the above copyright 10 # notice, this list of conditions and the following disclaimer. 11 # 2. Redistributions in binary form must reproduce the above copyright 12 # notice, this list of conditions and the following disclaimer in the 13 # documentation and/or other materials provided with the distribution. 14 # 3. Neither the name of Apple Inc. ("Apple") nor the names of 15 # its contributors may be used to endorse or promote products derived 16 # from this software without specific prior written permission. 17 # 18 # THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 19 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 # DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 22 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 24 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 25 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 29 # This script updates WebKitTools/iExploder/htdocs/cssproperties.in based on 30 # WebCore/css/CSSPropertyNames.in. 31 32 use warnings; 33 use strict; 34 35 use FindBin; 36 use lib $FindBin::Bin; 37 use webkitdirs; 38 39 use File::Spec; 40 41 sub generateSectionFromCSSPropertyNamesFile(); 42 sub readiExploderFile(); 43 sub svnRevision($); 44 sub writeiExploderFile(); 45 46 my $iExploderFile = File::Spec->catfile(sourceDir(), split("/", "WebKitTools/iExploder/htdocs/cssproperties.in")); 47 my $cssPropertyNamesFile = File::Spec->catfile(sourceDir(), split("/", "WebCore/css/CSSPropertyNames.in")); 48 49 my @sections = readiExploderFile(); 50 $sections[0] = generateSectionFromCSSPropertyNamesFile(); 51 writeiExploderFile(); 52 53 print `svn stat $iExploderFile`; 54 print "Successfully updated!\n"; 55 56 exit 0; 57 58 sub generateSectionFromCSSPropertyNamesFile() 59 { 60 my $revision = svnRevision($cssPropertyNamesFile); 61 my $path = File::Spec->abs2rel($cssPropertyNamesFile, sourceDir()); 62 my $result = "# From WebKit svn r" . $revision . " (" . $path . ")\n"; 63 64 my @properties = (); 65 66 open(IN, $cssPropertyNamesFile) || die "$!"; 67 while (my $l = <IN>) { 68 chomp $l; 69 next if $l =~ m/^\s*#/ || $l =~ m/^\s*$/; 70 push(@properties, $l); 71 } 72 close(IN); 73 74 $result .= join("\n", sort { $a cmp $b } @properties) . "\n\n"; 75 76 return $result; 77 } 78 79 sub readiExploderFile() 80 { 81 my @sections = (); 82 local $/ = "\n\n"; 83 84 open(IN, $iExploderFile) || die "$!"; 85 @sections = <IN>; 86 close(IN); 87 88 return @sections; 89 } 90 91 sub svnRevision($) 92 { 93 my ($file) = @_; 94 my $revision = ""; 95 96 open INFO, "svn info '$file' |" or die; 97 while (<INFO>) { 98 if (/^Revision: (.+)/) { 99 $revision = $1; 100 } 101 } 102 close INFO; 103 104 return $revision ? $revision : "UNKNOWN"; 105 } 106 107 sub writeiExploderFile() 108 { 109 open(OUT, "> $iExploderFile") || die "$!"; 110 print OUT join("", @sections); 111 close(OUT); 112 } 113