Skip to content

Commit 4852742

Browse files
committed
clipboard2log update
1 parent 0b9a75d commit 4852742

File tree

1 file changed

+54
-37
lines changed

1 file changed

+54
-37
lines changed

misc/wip/clipboard2log

Lines changed: 54 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,66 @@
11
#!/usr/bin/perl
2-
my $name = '';
3-
my ($sec, $min, $hr, $mday, $month, $year, $wday, $yday, $isdst) = localtime(time());
4-
my $time = '00:00';
2+
use strict;
3+
use warnings;
54

6-
$year += 1900;
7-
$month += 1;
8-
9-
my @lines_raw;
10-
while(<>){
11-
chomp;
12-
push @lines_raw, $_;
13-
}
145
my @lines;
15-
for(my $i = 0; $i < @lines_raw; $i++){
16-
if($lines_raw[$i] eq ''
17-
and length($lines_raw[$i+1])
18-
and $lines_raw[$i+2] =~ /^\[[0-9]+:[0-9]+\]\s*$/)
19-
{
20-
push @lines, $lines_raw[$i + 1] . " " . $lines_raw[$i + 2];
21-
$i += 2;
22-
}
23-
else
24-
{
25-
push @lines, $lines_raw[$i];
26-
}
6+
while (<>){
7+
s/\s+(\d)/\n$1/g;
8+
my @parts = split /\n/;
9+
push @lines, @parts;
2710
}
2811

12+
# --------
13+
14+
sub parsewhen {
15+
# 09:42
16+
my $w = $_[0];
17+
die "parse when $w" unless /^(\d+):(\d+)\s*$/;
18+
return $1 * 60 + $2;
19+
}
20+
21+
my($name, $emoji, $when);
22+
my $lastwhen = 0;
23+
my $offset = 0;
24+
my @formatted;
25+
2926
for(@lines){
30-
if(/^$/){
31-
next;
32-
}
27+
chomp;
28+
if(/^([A-Z].*)\s*(:.*:)/){
29+
$name = $1;
30+
$emoji = $2;
31+
}elsif(/^\d+:\d+$/){
32+
$when = $_;
33+
34+
my $parsed = parsewhen($when);
3335

34-
if(/(([a-zA-Z0-9_].*) )?\[([0-9]+:[0-9]+)\]\s*$/){
35-
if (length($2)) {
36-
$name = $2;
36+
if($parsed < $lastwhen){
37+
# assume next day
38+
$offset++;
3739
}
38-
$time = $3;
39-
next;
40-
}
4140

42-
if($name eq ''){
43-
die "empty name, text: $_";
41+
$lastwhen = $parsed;
42+
43+
}elsif(length){
44+
s/^\s*//;
45+
46+
my $msg = sprintf "%s:00: %s: %s", $when, $name, $_;
47+
push @formatted, { "msg" => $msg, offset => $offset };
4448
}
49+
}
50+
51+
# --------
52+
53+
sub getdate {
54+
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime();
55+
return ($year + 1900, $mon + 1, $mday);
56+
}
57+
58+
my ($y, $m, $d) = getdate(); # (2020, 10, 8);
59+
for(@formatted){
60+
my $msg = $_->{msg};
61+
my $localoffset = $_->{offset};
4562

46-
my $text = $_;
47-
printf("%04d-%02d-%02d %s:00: %s: %s\n",
48-
$year, $month, $mday, $time, $name, $text);
63+
# FIXME: wrong way round
64+
my $d_adj = $d + $offset - $localoffset;
65+
print "$y-$m-$d_adj $msg\n";
4966
}

0 commit comments

Comments
 (0)