3
# Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
5
# Redistribution and use in source and binary forms, with or without
6
# modification, are permitted provided that the following conditions
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.
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.
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)
34
our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
37
@EXPORT = qw(&resetSpacingHeuristics &isOnlyWhiteSpace &applySpacingHeuristicsAndPrint &setPreviousAllowedLine &setPreviousAllowedLine &printPendingEmptyLines &ignoringLine);
44
my $justFoundEmptyLine = 0;
45
my $previousLineWasDisallowed = 0;
46
my $previousAllowedLine = "";
47
my $pendingEmptyLines = "";
49
sub resetSpacingHeuristics
51
$justFoundEmptyLine = 0;
52
$previousLineWasDisallowed = 0;
53
$previousAllowedLine = "";
54
$pendingEmptyLines = "";
60
my $isOnlyWhiteSpace = ($line =~ m/^\s+$/);
61
$pendingEmptyLines .= $line if ($isOnlyWhiteSpace);
62
return $isOnlyWhiteSpace;
65
sub applySpacingHeuristicsAndPrint
67
my ($out, $line) = @_;
69
printPendingEmptyLines($out, $line);
70
$previousLineWasDisallowed = 0;
74
sub setPreviousAllowedLine
77
$previousAllowedLine = $line;
80
sub printPendingEmptyLines
84
if ($previousLineWasDisallowed) {
85
if (!($pendingEmptyLines eq "") && !($previousAllowedLine =~ m/{\s*$/) && !($line =~ m/^\s*}/)) {
86
$pendingEmptyLines = "\n";
88
$pendingEmptyLines = "";
91
print $out $pendingEmptyLines;
92
$pendingEmptyLines = "";
97
# my $line = shift; # ignoring input argument
98
$previousLineWasDisallowed = 1;
b'\\ No newline at end of file'