| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
|
|
2
|
|
|
|
|
|
|
package App::Asciio; |
|
3
|
|
|
|
|
|
|
|
|
4
|
|
|
|
|
|
|
$|++ ; |
|
5
|
|
|
|
|
|
|
|
|
6
|
4
|
|
|
4
|
|
29
|
use strict; use warnings; |
|
|
4
|
|
|
4
|
|
9
|
|
|
|
4
|
|
|
|
|
212
|
|
|
|
4
|
|
|
|
|
23
|
|
|
|
4
|
|
|
|
|
8
|
|
|
|
4
|
|
|
|
|
288
|
|
|
7
|
|
|
|
|
|
|
|
|
8
|
4
|
|
|
4
|
|
2724
|
use App::Asciio::Cross ; |
|
|
4
|
|
|
|
|
22
|
|
|
|
4
|
|
|
|
|
288
|
|
|
9
|
4
|
|
|
4
|
|
36
|
use App::Asciio::String ; |
|
|
4
|
|
|
|
|
8
|
|
|
|
4
|
|
|
|
|
280
|
|
|
10
|
4
|
|
|
4
|
|
26
|
use App::Asciio::Markup ; |
|
|
4
|
|
|
|
|
6
|
|
|
|
4
|
|
|
|
|
456
|
|
|
11
|
|
|
|
|
|
|
|
|
12
|
4
|
|
|
4
|
|
28
|
use Readonly ; |
|
|
4
|
|
|
|
|
8
|
|
|
|
4
|
|
|
|
|
5690
|
|
|
13
|
|
|
|
|
|
|
Readonly my $EXPORT_PLAIN_TEXT => 0 ; |
|
14
|
|
|
|
|
|
|
Readonly my $EXPORT_MARKUP => 1 ; |
|
15
|
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
#----------------------------------------------------------------------------- |
|
17
|
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
sub transform_elements_to_ascii_buffer |
|
19
|
|
|
|
|
|
|
{ |
|
20
|
0
|
|
|
0
|
0
|
0
|
my ($self, @elements) = @_ ; |
|
21
|
|
|
|
|
|
|
|
|
22
|
0
|
|
|
|
|
0
|
my $text = join("\n", $self->transform_elements_to_ascii_array(@elements)) . "\n" ; |
|
23
|
0
|
|
|
|
|
0
|
$text =~ s/^\n+|\n\K\n+$//g ; |
|
24
|
|
|
|
|
|
|
|
|
25
|
0
|
|
|
|
|
0
|
return($text) ; |
|
26
|
|
|
|
|
|
|
} |
|
27
|
|
|
|
|
|
|
|
|
28
|
|
|
|
|
|
|
#----------------------------------------------------------------------------- |
|
29
|
|
|
|
|
|
|
|
|
30
|
|
|
|
|
|
|
sub transform_elements_to_markup_buffer |
|
31
|
|
|
|
|
|
|
{ |
|
32
|
0
|
|
|
0
|
0
|
0
|
my ($self, @elements) = @_ ; |
|
33
|
|
|
|
|
|
|
|
|
34
|
0
|
|
|
|
|
0
|
my $text = join("\n", $self->transform_elements_to_markup(@elements)) . "\n" ; |
|
35
|
0
|
|
|
|
|
0
|
$text =~ s/^\n+|\n\K\n+$//g ; |
|
36
|
|
|
|
|
|
|
|
|
37
|
0
|
|
|
|
|
0
|
return($text) ; |
|
38
|
|
|
|
|
|
|
} |
|
39
|
|
|
|
|
|
|
|
|
40
|
|
|
|
|
|
|
#----------------------------------------------------------------------------- |
|
41
|
|
|
|
|
|
|
|
|
42
|
|
|
|
|
|
|
sub transform_elements_to_characters_array |
|
43
|
|
|
|
|
|
|
{ |
|
44
|
169
|
|
|
169
|
0
|
327
|
my ($self, $format, @elements) = @_ ; |
|
45
|
|
|
|
|
|
|
|
|
46
|
169
|
50
|
|
|
|
427
|
@elements = @{$self->{ELEMENTS}} unless @elements ; |
|
|
169
|
|
|
|
|
391
|
|
|
47
|
|
|
|
|
|
|
|
|
48
|
169
|
|
|
|
|
228
|
my @lines ; |
|
49
|
169
|
|
|
|
|
238
|
my (%markup_coordinate, %sub_markup_coordinate) ; |
|
50
|
|
|
|
|
|
|
|
|
51
|
169
|
|
|
|
|
307
|
for my $element (@elements) |
|
52
|
|
|
|
|
|
|
{ |
|
53
|
169
|
|
|
|
|
255
|
for my $strip (@{$element->get_stripes()}) |
|
|
169
|
|
|
|
|
670
|
|
|
54
|
|
|
|
|
|
|
{ |
|
55
|
917
|
|
|
|
|
1137
|
my $line_index = 0 ; |
|
56
|
|
|
|
|
|
|
|
|
57
|
917
|
|
|
|
|
2265
|
for my $sub_strip (split("\n", $strip->{TEXT})) |
|
58
|
|
|
|
|
|
|
{ |
|
59
|
1141
|
|
|
|
|
1528
|
my $origin_strip = $sub_strip ; |
|
60
|
1141
|
|
|
|
|
1847
|
my $y = $element->{Y} + $strip->{Y_OFFSET} + $line_index ; |
|
61
|
|
|
|
|
|
|
|
|
62
|
1141
|
|
|
|
|
2686
|
$sub_strip = $USE_MARKUP_CLASS->delete_markup_characters($sub_strip) ; |
|
63
|
|
|
|
|
|
|
|
|
64
|
1141
|
50
|
|
|
|
2987
|
if($format != $EXPORT_PLAIN_TEXT) |
|
65
|
|
|
|
|
|
|
{ |
|
66
|
0
|
|
|
|
|
0
|
%sub_markup_coordinate = $USE_MARKUP_CLASS->get_markup_coordinates($element->{X}, $origin_strip, $strip->{X_OFFSET}, $y) ; |
|
67
|
0
|
|
|
|
|
0
|
while (my ($key, $value) = each %sub_markup_coordinate) |
|
68
|
|
|
|
|
|
|
{ |
|
69
|
0
|
|
|
|
|
0
|
$markup_coordinate{$key} = ${value} ; |
|
70
|
|
|
|
|
|
|
} |
|
71
|
|
|
|
|
|
|
} |
|
72
|
|
|
|
|
|
|
|
|
73
|
1141
|
|
|
|
|
5675
|
my $character_index = 0 ; |
|
74
|
|
|
|
|
|
|
|
|
75
|
1141
|
|
|
|
|
2216
|
for my $character (split '', $sub_strip) |
|
76
|
|
|
|
|
|
|
{ |
|
77
|
1430
|
|
|
|
|
2258
|
my $x = $element->{X} + $strip->{X_OFFSET} + $character_index ; |
|
78
|
|
|
|
|
|
|
|
|
79
|
1430
|
50
|
33
|
|
|
4241
|
if($x >= 0 && $y >= 0) |
|
80
|
|
|
|
|
|
|
{ |
|
81
|
1430
|
50
|
|
|
|
2775
|
if($character =~ /\p{gc:Mn}/) |
|
82
|
|
|
|
|
|
|
{ |
|
83
|
0
|
|
|
|
|
0
|
push @{$lines[$y][$x-1]}, $character ; |
|
|
0
|
|
|
|
|
0
|
|
|
84
|
|
|
|
|
|
|
} |
|
85
|
|
|
|
|
|
|
else |
|
86
|
|
|
|
|
|
|
{ |
|
87
|
1430
|
|
|
|
|
4186
|
$lines[$y][$x] = [$character] ; |
|
88
|
|
|
|
|
|
|
} |
|
89
|
|
|
|
|
|
|
} |
|
90
|
|
|
|
|
|
|
|
|
91
|
1430
|
|
|
|
|
3110
|
my $character_length = unicode_length($character) ; |
|
92
|
1430
|
|
|
|
|
13349
|
$character_index += $character_length ; |
|
93
|
|
|
|
|
|
|
} |
|
94
|
|
|
|
|
|
|
|
|
95
|
1141
|
|
|
|
|
2317
|
$line_index++ ; |
|
96
|
|
|
|
|
|
|
} |
|
97
|
|
|
|
|
|
|
} |
|
98
|
|
|
|
|
|
|
} |
|
99
|
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
# If there is cross overlay, the characters of the cross need to be exported |
|
101
|
169
|
50
|
|
|
|
459
|
if($self->{USE_CROSS_MODE}) |
|
102
|
|
|
|
|
|
|
{ |
|
103
|
0
|
|
|
|
|
0
|
for(App::Asciio::Cross::get_cross_mode_overlays($self)) |
|
104
|
|
|
|
|
|
|
{ |
|
105
|
0
|
0
|
|
|
|
0
|
$lines[$_->[1]][$_->[0]] = [$_->[2]] if defined $lines[$_->[1]][$_->[0]] ; |
|
106
|
|
|
|
|
|
|
} |
|
107
|
|
|
|
|
|
|
} |
|
108
|
169
|
50
|
|
|
|
404
|
if($format != $EXPORT_PLAIN_TEXT) |
|
109
|
|
|
|
|
|
|
{ |
|
110
|
0
|
|
|
|
|
0
|
return $USE_MARKUP_CLASS->get_markup_characters_array(\%markup_coordinate, @lines) ; |
|
111
|
|
|
|
|
|
|
} |
|
112
|
169
|
|
|
|
|
1416
|
return @lines ; |
|
113
|
|
|
|
|
|
|
|
|
114
|
|
|
|
|
|
|
} |
|
115
|
|
|
|
|
|
|
|
|
116
|
|
|
|
|
|
|
#----------------------------------------------------------------------------- |
|
117
|
|
|
|
|
|
|
|
|
118
|
|
|
|
|
|
|
sub transform_elements_to_array |
|
119
|
|
|
|
|
|
|
{ |
|
120
|
169
|
|
|
169
|
0
|
1191
|
my ($self, $format, @elements) = @_ ; |
|
121
|
|
|
|
|
|
|
|
|
122
|
169
|
|
|
|
|
1385
|
my @lines = $self->transform_elements_to_characters_array($format, @elements) ; |
|
123
|
|
|
|
|
|
|
|
|
124
|
169
|
|
|
|
|
269
|
my @ascii ; |
|
125
|
|
|
|
|
|
|
|
|
126
|
169
|
|
|
|
|
342
|
for my $line (@lines) |
|
127
|
|
|
|
|
|
|
{ |
|
128
|
1605
|
100
|
|
|
|
1976
|
my $ascii_line = join('', map {defined $_ ? join('', @{$_}) : ' '} @{$line}) ; |
|
|
6736
|
|
|
|
|
11345
|
|
|
|
1230
|
|
|
|
|
3561
|
|
|
|
1605
|
|
|
|
|
4579
|
|
|
129
|
1605
|
50
|
|
|
|
3041
|
if(defined $ascii_line) |
|
130
|
|
|
|
|
|
|
{ |
|
131
|
1605
|
|
|
|
|
2600
|
my ($write_line, $char_len) = ('', 1) ; |
|
132
|
|
|
|
|
|
|
|
|
133
|
1605
|
|
|
|
|
3726
|
for my $character (split '', $ascii_line) |
|
134
|
|
|
|
|
|
|
{ |
|
135
|
6736
|
50
|
|
|
|
9261
|
if($char_len > 1) |
|
136
|
|
|
|
|
|
|
{ |
|
137
|
0
|
|
|
|
|
0
|
$char_len -= 1; |
|
138
|
|
|
|
|
|
|
} |
|
139
|
|
|
|
|
|
|
else |
|
140
|
|
|
|
|
|
|
{ |
|
141
|
|
|
|
|
|
|
# single char |
|
142
|
6736
|
|
|
|
|
10154
|
$char_len = unicode_length($character) ; |
|
143
|
6736
|
|
|
|
|
53710
|
$write_line .= $character; |
|
144
|
|
|
|
|
|
|
} |
|
145
|
|
|
|
|
|
|
} |
|
146
|
|
|
|
|
|
|
|
|
147
|
1605
|
|
|
|
|
3784
|
push @ascii, $write_line; |
|
148
|
|
|
|
|
|
|
} |
|
149
|
|
|
|
|
|
|
else |
|
150
|
|
|
|
|
|
|
{ |
|
151
|
0
|
|
|
|
|
0
|
push @ascii, $ascii_line ; |
|
152
|
|
|
|
|
|
|
} |
|
153
|
|
|
|
|
|
|
} |
|
154
|
|
|
|
|
|
|
|
|
155
|
169
|
|
|
|
|
5630
|
return(@ascii) ; |
|
156
|
|
|
|
|
|
|
} |
|
157
|
|
|
|
|
|
|
|
|
158
|
|
|
|
|
|
|
#----------------------------------------------------------------------------- |
|
159
|
|
|
|
|
|
|
|
|
160
|
|
|
|
|
|
|
sub transform_elements_to_ascii_array |
|
161
|
|
|
|
|
|
|
{ |
|
162
|
169
|
|
|
169
|
0
|
1108
|
my ($self, @elements) = @_ ; |
|
163
|
|
|
|
|
|
|
|
|
164
|
169
|
|
|
|
|
483
|
return($self->transform_elements_to_array($EXPORT_PLAIN_TEXT, @elements)); |
|
165
|
|
|
|
|
|
|
} |
|
166
|
|
|
|
|
|
|
|
|
167
|
|
|
|
|
|
|
#----------------------------------------------------------------------------- |
|
168
|
|
|
|
|
|
|
|
|
169
|
|
|
|
|
|
|
sub transform_elements_to_markup |
|
170
|
|
|
|
|
|
|
{ |
|
171
|
0
|
|
|
0
|
0
|
|
my ($self, @elements) = @_ ; |
|
172
|
|
|
|
|
|
|
|
|
173
|
0
|
|
|
|
|
|
return($self->transform_elements_to_array($EXPORT_MARKUP, @elements)); |
|
174
|
|
|
|
|
|
|
} |
|
175
|
|
|
|
|
|
|
#----------------------------------------------------------------------------- |
|
176
|
|
|
|
|
|
|
|
|
177
|
|
|
|
|
|
|
1 ; |