line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
##################################################################### |
2
|
|
|
|
|
|
|
# |
3
|
|
|
|
|
|
|
# The Perl::Tidy::IndentationItem class supplies items which contain |
4
|
|
|
|
|
|
|
# how much whitespace should be used at the start of a line |
5
|
|
|
|
|
|
|
# |
6
|
|
|
|
|
|
|
##################################################################### |
7
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
package Perl::Tidy::IndentationItem; |
9
|
39
|
|
|
39
|
|
311
|
use strict; |
|
39
|
|
|
|
|
100
|
|
|
39
|
|
|
|
|
1789
|
|
10
|
39
|
|
|
39
|
|
258
|
use warnings; |
|
39
|
|
|
|
|
153
|
|
|
39
|
|
|
|
|
4507
|
|
11
|
|
|
|
|
|
|
our $VERSION = '20230909'; |
12
|
|
|
|
|
|
|
|
13
|
0
|
|
|
|
|
0
|
BEGIN { |
14
|
|
|
|
|
|
|
|
15
|
|
|
|
|
|
|
# Array index names |
16
|
|
|
|
|
|
|
# Do not combine with other BEGIN blocks (c101). |
17
|
39
|
|
|
39
|
|
58259
|
my $i = 0; |
18
|
|
|
|
|
|
|
use constant { |
19
|
39
|
|
|
|
|
6857
|
_spaces_ => $i++, |
20
|
|
|
|
|
|
|
_level_ => $i++, |
21
|
|
|
|
|
|
|
_ci_level_ => $i++, |
22
|
|
|
|
|
|
|
_available_spaces_ => $i++, |
23
|
|
|
|
|
|
|
_closed_ => $i++, |
24
|
|
|
|
|
|
|
_comma_count_ => $i++, |
25
|
|
|
|
|
|
|
_lp_item_index_ => $i++, |
26
|
|
|
|
|
|
|
_have_child_ => $i++, |
27
|
|
|
|
|
|
|
_recoverable_spaces_ => $i++, |
28
|
|
|
|
|
|
|
_align_seqno_ => $i++, |
29
|
|
|
|
|
|
|
_marked_ => $i++, |
30
|
|
|
|
|
|
|
_stack_depth_ => $i++, |
31
|
|
|
|
|
|
|
_K_begin_line_ => $i++, |
32
|
|
|
|
|
|
|
_arrow_count_ => $i++, |
33
|
|
|
|
|
|
|
_standard_spaces_ => $i++, |
34
|
|
|
|
|
|
|
_K_extra_space_ => $i++, |
35
|
39
|
|
|
39
|
|
309
|
}; |
|
39
|
|
|
|
|
140
|
|
36
|
|
|
|
|
|
|
} ## end BEGIN |
37
|
|
|
|
|
|
|
|
38
|
|
|
|
|
|
|
sub AUTOLOAD { |
39
|
|
|
|
|
|
|
|
40
|
|
|
|
|
|
|
# Catch any undefined sub calls so that we are sure to get |
41
|
|
|
|
|
|
|
# some diagnostic information. This sub should never be called |
42
|
|
|
|
|
|
|
# except for a programming error. |
43
|
0
|
|
|
0
|
|
0
|
our $AUTOLOAD; |
44
|
0
|
0
|
|
|
|
0
|
return if ( $AUTOLOAD =~ /\bDESTROY$/ ); |
45
|
0
|
|
|
|
|
0
|
my ( $pkg, $fname, $lno ) = caller(); |
46
|
0
|
|
|
|
|
0
|
my $my_package = __PACKAGE__; |
47
|
0
|
|
|
|
|
0
|
print {*STDERR} <<EOM; |
|
0
|
|
|
|
|
0
|
|
48
|
|
|
|
|
|
|
====================================================================== |
49
|
|
|
|
|
|
|
Error detected in package '$my_package', version $VERSION |
50
|
|
|
|
|
|
|
Received unexpected AUTOLOAD call for sub '$AUTOLOAD' |
51
|
|
|
|
|
|
|
Called from package: '$pkg' |
52
|
|
|
|
|
|
|
Called from File '$fname' at line '$lno' |
53
|
|
|
|
|
|
|
This error is probably due to a recent programming change |
54
|
|
|
|
|
|
|
====================================================================== |
55
|
|
|
|
|
|
|
EOM |
56
|
0
|
|
|
|
|
0
|
exit 1; |
57
|
|
|
|
|
|
|
} ## end sub AUTOLOAD |
58
|
|
|
|
|
|
|
|
59
|
|
|
|
0
|
|
|
sub DESTROY { |
60
|
|
|
|
|
|
|
|
61
|
|
|
|
|
|
|
# required to avoid call to AUTOLOAD in some versions of perl |
62
|
|
|
|
|
|
|
} |
63
|
|
|
|
|
|
|
|
64
|
|
|
|
|
|
|
sub new { |
65
|
|
|
|
|
|
|
|
66
|
|
|
|
|
|
|
# Create an 'indentation_item' which describes one level of leading |
67
|
|
|
|
|
|
|
# whitespace when the '-lp' indentation is used. |
68
|
608
|
|
|
608
|
0
|
4063
|
my ( $class, %input_hash ) = @_; |
69
|
|
|
|
|
|
|
|
70
|
|
|
|
|
|
|
# DEFINITIONS: |
71
|
|
|
|
|
|
|
# spaces => # total leading white spaces |
72
|
|
|
|
|
|
|
# level => # the indentation 'level' |
73
|
|
|
|
|
|
|
# ci_level => # the 'continuation level' |
74
|
|
|
|
|
|
|
# available_spaces => # how many left spaces available |
75
|
|
|
|
|
|
|
# # for this level |
76
|
|
|
|
|
|
|
# closed => # index where we saw closing '}' |
77
|
|
|
|
|
|
|
# comma_count => # how many commas at this level? |
78
|
|
|
|
|
|
|
# lp_item_index => # index in output batch list |
79
|
|
|
|
|
|
|
# have_child => # any dependents? |
80
|
|
|
|
|
|
|
# recoverable_spaces => # how many spaces to the right |
81
|
|
|
|
|
|
|
# # we would like to move to get |
82
|
|
|
|
|
|
|
# # alignment (negative if left) |
83
|
|
|
|
|
|
|
# align_seqno => # if we are aligning with an opening structure, |
84
|
|
|
|
|
|
|
# # this is its seqno |
85
|
|
|
|
|
|
|
# marked => # if visited by corrector logic |
86
|
|
|
|
|
|
|
# K_begin_line => # first token index K of this level |
87
|
|
|
|
|
|
|
# arrow_count => # how many =>'s |
88
|
|
|
|
|
|
|
|
89
|
608
|
|
|
|
|
1424
|
my $self = []; |
90
|
608
|
|
|
|
|
1407
|
$self->[_spaces_] = $input_hash{spaces}; |
91
|
608
|
|
|
|
|
1096
|
$self->[_level_] = $input_hash{level}; |
92
|
608
|
|
|
|
|
961
|
$self->[_ci_level_] = $input_hash{ci_level}; |
93
|
608
|
|
|
|
|
1007
|
$self->[_available_spaces_] = $input_hash{available_spaces}; |
94
|
608
|
|
|
|
|
1165
|
$self->[_closed_] = -1; |
95
|
608
|
|
|
|
|
1079
|
$self->[_comma_count_] = 0; |
96
|
608
|
|
|
|
|
1128
|
$self->[_lp_item_index_] = $input_hash{lp_item_index}; |
97
|
608
|
|
|
|
|
1022
|
$self->[_have_child_] = 0; |
98
|
608
|
|
|
|
|
1054
|
$self->[_recoverable_spaces_] = 0; |
99
|
608
|
|
|
|
|
1079
|
$self->[_align_seqno_] = $input_hash{align_seqno}; |
100
|
608
|
|
|
|
|
1235
|
$self->[_marked_] = 0; |
101
|
608
|
|
|
|
|
1230
|
$self->[_K_begin_line_] = $input_hash{K_begin_line}; |
102
|
608
|
|
|
|
|
982
|
$self->[_arrow_count_] = 0; |
103
|
608
|
|
|
|
|
1052
|
$self->[_standard_spaces_] = $input_hash{standard_spaces}; |
104
|
608
|
|
|
|
|
1355
|
$self->[_K_extra_space_] = $input_hash{K_extra_space}; |
105
|
|
|
|
|
|
|
|
106
|
608
|
|
|
|
|
1117
|
bless $self, $class; |
107
|
608
|
|
|
|
|
2066
|
return $self; |
108
|
|
|
|
|
|
|
} ## end sub new |
109
|
|
|
|
|
|
|
|
110
|
|
|
|
|
|
|
sub permanently_decrease_available_spaces { |
111
|
|
|
|
|
|
|
|
112
|
|
|
|
|
|
|
# make a permanent reduction in the available indentation spaces |
113
|
|
|
|
|
|
|
# at one indentation item. NOTE: if there are child nodes, their |
114
|
|
|
|
|
|
|
# total SPACES must be reduced by the caller. |
115
|
|
|
|
|
|
|
|
116
|
285
|
|
|
285
|
0
|
545
|
my ( $item, $spaces_needed ) = @_; |
117
|
285
|
|
|
|
|
537
|
my $available_spaces = $item->get_available_spaces(); |
118
|
285
|
100
|
|
|
|
599
|
my $deleted_spaces = |
119
|
|
|
|
|
|
|
( $available_spaces > $spaces_needed ) |
120
|
|
|
|
|
|
|
? $spaces_needed |
121
|
|
|
|
|
|
|
: $available_spaces; |
122
|
|
|
|
|
|
|
|
123
|
|
|
|
|
|
|
# Fixed for c085; a zero value must remain unchanged unless the closed |
124
|
|
|
|
|
|
|
# flag has been set. |
125
|
285
|
|
|
|
|
685
|
my $closed = $item->get_closed(); |
126
|
285
|
100
|
100
|
|
|
1092
|
$item->decrease_available_spaces($deleted_spaces) |
127
|
|
|
|
|
|
|
if ( $available_spaces != 0 || $closed >= 0 ); |
128
|
285
|
|
|
|
|
648
|
$item->decrease_SPACES($deleted_spaces); |
129
|
285
|
|
|
|
|
678
|
$item->set_recoverable_spaces(0); |
130
|
|
|
|
|
|
|
|
131
|
285
|
|
|
|
|
728
|
return $deleted_spaces; |
132
|
|
|
|
|
|
|
} ## end sub permanently_decrease_available_spaces |
133
|
|
|
|
|
|
|
|
134
|
|
|
|
|
|
|
sub tentatively_decrease_available_spaces { |
135
|
|
|
|
|
|
|
|
136
|
|
|
|
|
|
|
# We are asked to tentatively delete $spaces_needed of indentation |
137
|
|
|
|
|
|
|
# for an indentation item. We may want to undo this later. NOTE: if |
138
|
|
|
|
|
|
|
# there are child nodes, their total SPACES must be reduced by the |
139
|
|
|
|
|
|
|
# caller. |
140
|
71
|
|
|
71
|
0
|
175
|
my ( $item, $spaces_needed ) = @_; |
141
|
71
|
|
|
|
|
167
|
my $available_spaces = $item->get_available_spaces(); |
142
|
71
|
100
|
|
|
|
207
|
my $deleted_spaces = |
143
|
|
|
|
|
|
|
( $available_spaces > $spaces_needed ) |
144
|
|
|
|
|
|
|
? $spaces_needed |
145
|
|
|
|
|
|
|
: $available_spaces; |
146
|
71
|
|
|
|
|
270
|
$item->decrease_available_spaces($deleted_spaces); |
147
|
71
|
|
|
|
|
235
|
$item->decrease_SPACES($deleted_spaces); |
148
|
71
|
|
|
|
|
217
|
$item->increase_recoverable_spaces($deleted_spaces); |
149
|
71
|
|
|
|
|
172
|
return $deleted_spaces; |
150
|
|
|
|
|
|
|
} ## end sub tentatively_decrease_available_spaces |
151
|
|
|
|
|
|
|
|
152
|
|
|
|
|
|
|
sub get_spaces { |
153
|
6462
|
|
|
6462
|
0
|
13179
|
return $_[0]->[_spaces_]; |
154
|
|
|
|
|
|
|
} |
155
|
|
|
|
|
|
|
|
156
|
|
|
|
|
|
|
sub get_standard_spaces { |
157
|
25
|
|
|
25
|
0
|
51
|
return $_[0]->[_standard_spaces_]; |
158
|
|
|
|
|
|
|
} |
159
|
|
|
|
|
|
|
|
160
|
|
|
|
|
|
|
sub get_marked { |
161
|
3065
|
|
|
3065
|
0
|
6927
|
return $_[0]->[_marked_]; |
162
|
|
|
|
|
|
|
} |
163
|
|
|
|
|
|
|
|
164
|
|
|
|
|
|
|
sub set_marked { |
165
|
608
|
|
|
608
|
0
|
1033
|
my ( $self, $value ) = @_; |
166
|
608
|
50
|
|
|
|
1181
|
if ( defined($value) ) { |
167
|
608
|
|
|
|
|
910
|
$self->[_marked_] = $value; |
168
|
|
|
|
|
|
|
} |
169
|
608
|
|
|
|
|
1026
|
return $self->[_marked_]; |
170
|
|
|
|
|
|
|
} ## end sub set_marked |
171
|
|
|
|
|
|
|
|
172
|
|
|
|
|
|
|
sub get_available_spaces { |
173
|
1018
|
|
|
1018
|
0
|
1982
|
return $_[0]->[_available_spaces_]; |
174
|
|
|
|
|
|
|
} |
175
|
|
|
|
|
|
|
|
176
|
|
|
|
|
|
|
sub decrease_SPACES { |
177
|
885
|
|
|
885
|
0
|
1388
|
my ( $self, $value ) = @_; |
178
|
885
|
50
|
|
|
|
1571
|
if ( defined($value) ) { |
179
|
885
|
|
|
|
|
1225
|
$self->[_spaces_] -= $value; |
180
|
|
|
|
|
|
|
} |
181
|
885
|
|
|
|
|
1514
|
return $self->[_spaces_]; |
182
|
|
|
|
|
|
|
} ## end sub decrease_SPACES |
183
|
|
|
|
|
|
|
|
184
|
|
|
|
|
|
|
sub decrease_available_spaces { |
185
|
356
|
|
|
356
|
0
|
643
|
my ( $self, $value ) = @_; |
186
|
|
|
|
|
|
|
|
187
|
356
|
50
|
|
|
|
704
|
if ( defined($value) ) { |
188
|
356
|
|
|
|
|
566
|
$self->[_available_spaces_] -= $value; |
189
|
|
|
|
|
|
|
} |
190
|
356
|
|
|
|
|
540
|
return $self->[_available_spaces_]; |
191
|
|
|
|
|
|
|
} ## end sub decrease_available_spaces |
192
|
|
|
|
|
|
|
|
193
|
|
|
|
|
|
|
sub get_align_seqno { |
194
|
608
|
|
|
608
|
0
|
1355
|
return $_[0]->[_align_seqno_]; |
195
|
|
|
|
|
|
|
} |
196
|
|
|
|
|
|
|
|
197
|
|
|
|
|
|
|
sub get_recoverable_spaces { |
198
|
300
|
|
|
300
|
0
|
1060
|
return $_[0]->[_recoverable_spaces_]; |
199
|
|
|
|
|
|
|
} |
200
|
|
|
|
|
|
|
|
201
|
|
|
|
|
|
|
sub set_recoverable_spaces { |
202
|
445
|
|
|
445
|
0
|
783
|
my ( $self, $value ) = @_; |
203
|
445
|
50
|
|
|
|
913
|
if ( defined($value) ) { |
204
|
445
|
|
|
|
|
724
|
$self->[_recoverable_spaces_] = $value; |
205
|
|
|
|
|
|
|
} |
206
|
445
|
|
|
|
|
749
|
return $self->[_recoverable_spaces_]; |
207
|
|
|
|
|
|
|
} ## end sub set_recoverable_spaces |
208
|
|
|
|
|
|
|
|
209
|
|
|
|
|
|
|
sub increase_recoverable_spaces { |
210
|
71
|
|
|
71
|
0
|
153
|
my ( $self, $value ) = @_; |
211
|
71
|
50
|
|
|
|
175
|
if ( defined($value) ) { |
212
|
71
|
|
|
|
|
157
|
$self->[_recoverable_spaces_] += $value; |
213
|
|
|
|
|
|
|
} |
214
|
71
|
|
|
|
|
123
|
return $self->[_recoverable_spaces_]; |
215
|
|
|
|
|
|
|
} ## end sub increase_recoverable_spaces |
216
|
|
|
|
|
|
|
|
217
|
|
|
|
|
|
|
sub get_ci_level { |
218
|
0
|
|
|
0
|
0
|
0
|
return $_[0]->[_ci_level_]; |
219
|
|
|
|
|
|
|
} |
220
|
|
|
|
|
|
|
|
221
|
|
|
|
|
|
|
sub get_level { |
222
|
0
|
|
|
0
|
0
|
0
|
return $_[0]->[_level_]; |
223
|
|
|
|
|
|
|
} |
224
|
|
|
|
|
|
|
|
225
|
|
|
|
|
|
|
sub get_spaces_level_ci { |
226
|
1306
|
|
|
1306
|
0
|
2158
|
my $self = shift; |
227
|
1306
|
|
|
|
|
4666
|
return [ $self->[_spaces_], $self->[_level_], $self->[_ci_level_] ]; |
228
|
|
|
|
|
|
|
} |
229
|
|
|
|
|
|
|
|
230
|
|
|
|
|
|
|
sub get_lp_item_index { |
231
|
62
|
|
|
62
|
0
|
156
|
return $_[0]->[_lp_item_index_]; |
232
|
|
|
|
|
|
|
} |
233
|
|
|
|
|
|
|
|
234
|
|
|
|
|
|
|
sub get_K_begin_line { |
235
|
717
|
|
|
717
|
0
|
1523
|
return $_[0]->[_K_begin_line_]; |
236
|
|
|
|
|
|
|
} |
237
|
|
|
|
|
|
|
|
238
|
|
|
|
|
|
|
sub get_K_extra_space { |
239
|
28
|
|
|
28
|
0
|
66
|
return $_[0]->[_K_extra_space_]; |
240
|
|
|
|
|
|
|
} |
241
|
|
|
|
|
|
|
|
242
|
|
|
|
|
|
|
sub set_have_child { |
243
|
498
|
|
|
498
|
0
|
924
|
my ( $self, $value ) = @_; |
244
|
498
|
50
|
|
|
|
1059
|
if ( defined($value) ) { |
245
|
498
|
|
|
|
|
793
|
$self->[_have_child_] = $value; |
246
|
|
|
|
|
|
|
} |
247
|
498
|
|
|
|
|
909
|
return $self->[_have_child_]; |
248
|
|
|
|
|
|
|
} ## end sub set_have_child |
249
|
|
|
|
|
|
|
|
250
|
|
|
|
|
|
|
sub get_have_child { |
251
|
69
|
|
|
69
|
0
|
187
|
return $_[0]->[_have_child_]; |
252
|
|
|
|
|
|
|
} |
253
|
|
|
|
|
|
|
|
254
|
|
|
|
|
|
|
sub set_arrow_count { |
255
|
608
|
|
|
608
|
0
|
1072
|
my ( $self, $value ) = @_; |
256
|
608
|
50
|
|
|
|
1245
|
if ( defined($value) ) { |
257
|
608
|
|
|
|
|
974
|
$self->[_arrow_count_] = $value; |
258
|
|
|
|
|
|
|
} |
259
|
608
|
|
|
|
|
1056
|
return $self->[_arrow_count_]; |
260
|
|
|
|
|
|
|
} ## end sub set_arrow_count |
261
|
|
|
|
|
|
|
|
262
|
|
|
|
|
|
|
sub get_arrow_count { |
263
|
68
|
|
|
68
|
0
|
143
|
return $_[0]->[_arrow_count_]; |
264
|
|
|
|
|
|
|
} |
265
|
|
|
|
|
|
|
|
266
|
|
|
|
|
|
|
sub set_comma_count { |
267
|
608
|
|
|
608
|
0
|
1041
|
my ( $self, $value ) = @_; |
268
|
608
|
50
|
|
|
|
1245
|
if ( defined($value) ) { |
269
|
608
|
|
|
|
|
956
|
$self->[_comma_count_] = $value; |
270
|
|
|
|
|
|
|
} |
271
|
608
|
|
|
|
|
1094
|
return $self->[_comma_count_]; |
272
|
|
|
|
|
|
|
} ## end sub set_comma_count |
273
|
|
|
|
|
|
|
|
274
|
|
|
|
|
|
|
sub get_comma_count { |
275
|
68
|
|
|
68
|
0
|
157
|
return $_[0]->[_comma_count_]; |
276
|
|
|
|
|
|
|
} |
277
|
|
|
|
|
|
|
|
278
|
|
|
|
|
|
|
sub set_closed { |
279
|
608
|
|
|
608
|
0
|
1108
|
my ( $self, $value ) = @_; |
280
|
608
|
50
|
|
|
|
1275
|
if ( defined($value) ) { |
281
|
608
|
|
|
|
|
995
|
$self->[_closed_] = $value; |
282
|
|
|
|
|
|
|
} |
283
|
608
|
|
|
|
|
1102
|
return $self->[_closed_]; |
284
|
|
|
|
|
|
|
} ## end sub set_closed |
285
|
|
|
|
|
|
|
|
286
|
|
|
|
|
|
|
sub get_closed { |
287
|
1142
|
|
|
1142
|
0
|
2518
|
return $_[0]->[_closed_]; |
288
|
|
|
|
|
|
|
} |
289
|
|
|
|
|
|
|
1; |