~ubuntu-branches/ubuntu/maverick/webkit/maverick

« back to all changes in this revision

Viewing changes to WebKitTools/Scripts/SpacingHeuristics.pm

  • Committer: Bazaar Package Importer
  • Author(s): Mike Hommey
  • Date: 2007-08-19 15:54:12 UTC
  • Revision ID: james.westby@ubuntu.com-20070819155412-uxxg1h9plpghmtbi
Tags: upstream-0~svn25144
ImportĀ upstreamĀ versionĀ 0~svn25144

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/perl -w
 
2
 
 
3
# Copyright (C) 2006 Apple Computer, 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 Computer, 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
# Used for helping remove extra blank lines from files when processing.
 
30
# see split-class for an example usage (or other scripts in bugzilla)
 
31
 
 
32
BEGIN {
 
33
   use Exporter   ();
 
34
   our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
 
35
   $VERSION     = 1.00;
 
36
   @ISA         = qw(Exporter);
 
37
   @EXPORT      = qw(&resetSpacingHeuristics &isOnlyWhiteSpace &applySpacingHeuristicsAndPrint &setPreviousAllowedLine &setPreviousAllowedLine &printPendingEmptyLines &ignoringLine);
 
38
   %EXPORT_TAGS = ();
 
39
   @EXPORT_OK   = ();
 
40
}
 
41
 
 
42
our @EXPORT_OK;
 
43
 
 
44
my $justFoundEmptyLine = 0;
 
45
my $previousLineWasDisallowed = 0;
 
46
my $previousAllowedLine = "";
 
47
my $pendingEmptyLines = "";
 
48
 
 
49
sub resetSpacingHeuristics
 
50
{
 
51
    $justFoundEmptyLine = 0;
 
52
    $previousLineWasDisallowed = 0;
 
53
    $previousAllowedLine = "";
 
54
    $pendingEmptyLines = "";
 
55
}
 
56
 
 
57
sub isOnlyWhiteSpace
 
58
{
 
59
    my $line = shift;
 
60
    my $isOnlyWhiteSpace = ($line =~ m/^\s+$/);
 
61
    $pendingEmptyLines .= $line if ($isOnlyWhiteSpace);
 
62
    return $isOnlyWhiteSpace;
 
63
}
 
64
 
 
65
sub applySpacingHeuristicsAndPrint
 
66
{
 
67
    my ($out, $line) = @_;
 
68
    
 
69
    printPendingEmptyLines($out, $line);
 
70
    $previousLineWasDisallowed = 0;
 
71
    print $out $line;
 
72
}
 
73
 
 
74
sub setPreviousAllowedLine
 
75
{
 
76
    my $line = shift;
 
77
    $previousAllowedLine = $line;
 
78
}
 
79
 
 
80
sub printPendingEmptyLines
 
81
{
 
82
    my $out = shift;
 
83
    my $line = shift;
 
84
    if ($previousLineWasDisallowed) {
 
85
        if (!($pendingEmptyLines eq "") && !($previousAllowedLine =~ m/{\s*$/) && !($line =~ m/^\s*}/)) {
 
86
            $pendingEmptyLines = "\n";
 
87
        } else {
 
88
            $pendingEmptyLines = "";
 
89
        }
 
90
    }
 
91
    print $out $pendingEmptyLines;
 
92
    $pendingEmptyLines = "";
 
93
}
 
94
 
 
95
sub ignoringLine
 
96
{
 
97
    # my $line = shift; # ignoring input argument
 
98
    $previousLineWasDisallowed = 1;
 
99
}
 
100
 
 
101
1;
 
 
b'\\ No newline at end of file'