timelime 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/timelime +89 -8
- data/lib/timelime/axis.rb +24 -3
- data/lib/timelime/dump.rb +3 -1
- data/lib/timelime/parse.rb +1 -2
- data/lib/timelime/table.rb +58 -0
- data/lib/timelime/tags.rb +16 -2
- data/lib/timelime/time.rb +49 -3
- data/lib/timelime/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d954fb0c35cbf771a5ab7a25cb160835876cc72d2594aaaff06cf124625335c0
|
4
|
+
data.tar.gz: 1099b7d61d179e87af56b5a15fb40e8d4a98c18d0c1504b44c7857e7ee3c1602
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1add644820f7b655ffc8cc470773f099c32e4a64c29b061dddb79a0cdb8fecf2133e22f8b6eee05020b3198029b7b2facf273e6c4e990d10928a3bca40aa6c00
|
7
|
+
data.tar.gz: 4d0c758cdf67c4ed07d2d7c063538a81388188e2496c02f2af8d6ac54c9c2ac4a0976c441ef832c115cddbd1232a5f45081501cbc6daa27c9adf0fb74884af89
|
data/bin/timelime
CHANGED
@@ -18,6 +18,11 @@ ARGV.options do |opt|
|
|
18
18
|
exit
|
19
19
|
end
|
20
20
|
|
21
|
+
opt.on("-v", "--version", "print version") do
|
22
|
+
puts "timelime version: #{Timelime::VERSION}"
|
23
|
+
exit
|
24
|
+
end
|
25
|
+
|
21
26
|
opt.on("-f", "--file [PATH]", "include path recursively") do |path|
|
22
27
|
unless path.nil? or path.empty?
|
23
28
|
$options[:file] = $options[:file].to_a + [path]
|
@@ -34,13 +39,35 @@ ARGV.options do |opt|
|
|
34
39
|
end
|
35
40
|
end
|
36
41
|
|
37
|
-
|
38
|
-
|
42
|
+
opt.on("-t", "--tags-exc [@tag1 @tag2]", "process all but given tags") do |tags|
|
43
|
+
$options[:tagsExc] = $options[:tagsExc].to_a + [tags]
|
44
|
+
end
|
45
|
+
|
46
|
+
opt.on("-T", "--tags-inc [@tag1 @tag2]", "process only given tags") do |tags|
|
47
|
+
$options[:tagsInc] = $options[:tagsInc].to_a + [tags]
|
39
48
|
end
|
40
49
|
|
41
|
-
opt.on("-
|
50
|
+
opt.on("-r", "--range-process [x - y]", "process only events matching given range") do |range|
|
51
|
+
$options[:rangeP] = $options[:rangeP].to_a + [range]
|
52
|
+
end
|
53
|
+
|
54
|
+
opt.on("-R", "--range-display [x - y]", "display axis only within given range") do |range|
|
55
|
+
$options[:rangeD] = range
|
56
|
+
end
|
57
|
+
|
58
|
+
opt.on("-l", "--locate [STR]", "locate event across given files") do |str|
|
59
|
+
if str.nil?
|
60
|
+
next
|
61
|
+
end
|
62
|
+
$options[:locate] = $options[:locate].to_a + [str.downcase]
|
63
|
+
end
|
64
|
+
|
65
|
+
opt.on("-i", "--info [HEAD]", "print HEAD information") do |head|
|
66
|
+
if head.nil?
|
67
|
+
next
|
68
|
+
end
|
69
|
+
$options[:info] = $options[:info].to_a + [head]
|
42
70
|
end
|
43
|
-
=end
|
44
71
|
|
45
72
|
opt.parse!
|
46
73
|
|
@@ -49,18 +76,72 @@ end
|
|
49
76
|
tree = Timelime::Tree.new( $options[:file].to_a )
|
50
77
|
table = Timelime::Table.new
|
51
78
|
|
52
|
-
|
53
|
-
|
54
|
-
table.
|
79
|
+
$options[:rangeP].to_a.each do |time|
|
80
|
+
begin
|
81
|
+
table.time(time)
|
82
|
+
rescue
|
83
|
+
$stderr.puts "ERR: invalid time syntax: \"#{time}\""
|
84
|
+
exit 1
|
55
85
|
end
|
56
86
|
end
|
57
87
|
|
88
|
+
unless $options[:rangeD].nil?
|
89
|
+
begin
|
90
|
+
Timelime::Time.new($options[:rangeD])
|
91
|
+
rescue
|
92
|
+
$stderr.puts "ERR: invalid time syntax: \"#{$options[:rangeD]}\""
|
93
|
+
exit 1
|
94
|
+
end
|
95
|
+
end
|
58
96
|
|
59
|
-
|
97
|
+
[
|
98
|
+
$options[:tagsInc].to_a,
|
99
|
+
$options[:tagsExc].to_a,
|
100
|
+
].each_with_index do |tmp, mode|
|
101
|
+
tmp.each do |tags|
|
102
|
+
begin
|
103
|
+
table.tags(tags, mode)
|
104
|
+
rescue
|
105
|
+
$stderr.puts "ERR: invalid tags syntax: \"#{tags}\""
|
106
|
+
exit 1
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
tree.get do |file|
|
112
|
+
Timelime.parse(file) do |event, line|
|
113
|
+
|
114
|
+
unless table.push event
|
115
|
+
next
|
116
|
+
end
|
117
|
+
|
118
|
+
$options[:locate].to_a.each do |str|
|
119
|
+
if event.head.to_s.downcase.include? str
|
120
|
+
puts "#{event.head}: #{file} line #{line}"
|
121
|
+
break
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
$options[:info].to_a.each do |head|
|
126
|
+
if event.head.to_s == head
|
127
|
+
puts "#{event.time}"
|
128
|
+
puts "#{event.tags}"
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
134
|
+
|
135
|
+
end
|
136
|
+
|
137
|
+
if table.size == 0 or !$options[:locate].nil? or !$options[:info].nil?
|
60
138
|
exit
|
61
139
|
end
|
62
140
|
|
63
141
|
axis = Timelime::Axis.new(table)
|
142
|
+
unless $options[:rangeD].nil?
|
143
|
+
axis.time($options[:rangeD])
|
144
|
+
end
|
64
145
|
axis.generate $options[:precision]
|
65
146
|
|
66
147
|
puts
|
data/lib/timelime/axis.rb
CHANGED
@@ -5,6 +5,7 @@ module Timelime
|
|
5
5
|
attr_reader :buffer, :lines
|
6
6
|
|
7
7
|
@table
|
8
|
+
@time
|
8
9
|
@buffer
|
9
10
|
@begin
|
10
11
|
@length
|
@@ -14,6 +15,11 @@ module Timelime
|
|
14
15
|
@table = table
|
15
16
|
end
|
16
17
|
|
18
|
+
def time(t)
|
19
|
+
t = Timelime::Time.new(t)
|
20
|
+
@time = t.range!
|
21
|
+
end
|
22
|
+
|
17
23
|
def to_b
|
18
24
|
true
|
19
25
|
end
|
@@ -26,7 +32,11 @@ module Timelime
|
|
26
32
|
[], # L side
|
27
33
|
[], # R side
|
28
34
|
]
|
29
|
-
|
35
|
+
if @time.nil?
|
36
|
+
range = @table.range
|
37
|
+
else
|
38
|
+
range = @time.data
|
39
|
+
end
|
30
40
|
@begin = range[0]
|
31
41
|
@length = range[1] - range[0]
|
32
42
|
if @length == 0
|
@@ -52,7 +62,7 @@ module Timelime
|
|
52
62
|
def scale time
|
53
63
|
buf = time.data.map do |yr|
|
54
64
|
tmp = (1.0 * @lines * (yr - @begin) / @length).to_i
|
55
|
-
if tmp
|
65
|
+
if tmp == @lines
|
56
66
|
tmp = @lines - 1
|
57
67
|
end
|
58
68
|
tmp
|
@@ -64,7 +74,14 @@ module Timelime
|
|
64
74
|
it += 1
|
65
75
|
end
|
66
76
|
end
|
67
|
-
|
77
|
+
|
78
|
+
if @time.nil?
|
79
|
+
buf
|
80
|
+
else
|
81
|
+
buf.filter do |l|
|
82
|
+
l >= 0 and l < @lines
|
83
|
+
end
|
84
|
+
end
|
68
85
|
end
|
69
86
|
|
70
87
|
def label line
|
@@ -76,6 +93,10 @@ module Timelime
|
|
76
93
|
def squeeze event
|
77
94
|
|
78
95
|
todo = scale event.time
|
96
|
+
if todo.empty?
|
97
|
+
return
|
98
|
+
end
|
99
|
+
|
79
100
|
if ( event.time.size == 2)
|
80
101
|
side = 0
|
81
102
|
else
|
data/lib/timelime/dump.rb
CHANGED
data/lib/timelime/parse.rb
CHANGED
@@ -21,7 +21,7 @@ module Timelime
|
|
21
21
|
# new entry
|
22
22
|
if line.lstrip == line
|
23
23
|
if !buf.nil? and !err and buf.complete?
|
24
|
-
yield
|
24
|
+
yield(buf, number)
|
25
25
|
end
|
26
26
|
buf = Timelime::Event.new(line)
|
27
27
|
err = false
|
@@ -41,7 +41,6 @@ module Timelime
|
|
41
41
|
else
|
42
42
|
end
|
43
43
|
|
44
|
-
|
45
44
|
rescue
|
46
45
|
err = true
|
47
46
|
$stderr.puts "WARN: invalid definition: #{path} line #{number}"
|
data/lib/timelime/table.rb
CHANGED
@@ -4,10 +4,68 @@ module Timelime
|
|
4
4
|
|
5
5
|
def initialize
|
6
6
|
@data = []
|
7
|
+
@time = []
|
8
|
+
@tags = [
|
9
|
+
[], # include
|
10
|
+
[], # exclude
|
11
|
+
]
|
12
|
+
end
|
13
|
+
|
14
|
+
def time(t)
|
15
|
+
t = Timelime::Time.new(t)
|
16
|
+
@time += [t]
|
17
|
+
end
|
18
|
+
|
19
|
+
def tags(tags, mode)
|
20
|
+
tags = Timelime::Tags.new(tags)
|
21
|
+
@tags[mode] += [tags]
|
7
22
|
end
|
8
23
|
|
9
24
|
def push event
|
25
|
+
|
26
|
+
# check range
|
27
|
+
if @time.empty?
|
28
|
+
ok = true
|
29
|
+
else
|
30
|
+
ok = false
|
31
|
+
end
|
32
|
+
|
33
|
+
@time.each do |time|
|
34
|
+
if event.time.match? time
|
35
|
+
ok = true
|
36
|
+
break
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
unless ok
|
41
|
+
return false
|
42
|
+
end
|
43
|
+
|
44
|
+
# check tags
|
45
|
+
if @tags[0].empty?
|
46
|
+
ok = true
|
47
|
+
else
|
48
|
+
ok = false
|
49
|
+
end
|
50
|
+
|
51
|
+
@tags.each_with_index do |tmp, mode|
|
52
|
+
tmp.each do |tags|
|
53
|
+
if event.tags.has? tags
|
54
|
+
case mode
|
55
|
+
when 0; ok = true
|
56
|
+
when 1; return false
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
unless ok
|
63
|
+
return false
|
64
|
+
end
|
65
|
+
|
10
66
|
@data += [event]
|
67
|
+
return true
|
68
|
+
|
11
69
|
end
|
12
70
|
|
13
71
|
def get &block
|
data/lib/timelime/tags.rb
CHANGED
@@ -4,8 +4,11 @@ module Timelime
|
|
4
4
|
|
5
5
|
attr_reader :data
|
6
6
|
|
7
|
-
def initialize
|
7
|
+
def initialize raw = nil
|
8
8
|
@data = []
|
9
|
+
unless raw.nil?
|
10
|
+
push raw
|
11
|
+
end
|
9
12
|
end
|
10
13
|
|
11
14
|
def push raw
|
@@ -22,8 +25,19 @@ module Timelime
|
|
22
25
|
|
23
26
|
end
|
24
27
|
|
28
|
+
def has? tags
|
29
|
+
(@data & tags.data) == tags.data
|
30
|
+
end
|
31
|
+
|
25
32
|
def to_s
|
26
|
-
|
33
|
+
buf = ""
|
34
|
+
@data.each do |tag|
|
35
|
+
unless buf.empty?
|
36
|
+
buf += " "
|
37
|
+
end
|
38
|
+
buf += "@#{tag}"
|
39
|
+
end
|
40
|
+
buf
|
27
41
|
end
|
28
42
|
|
29
43
|
end
|
data/lib/timelime/time.rb
CHANGED
@@ -4,8 +4,11 @@ module Timelime
|
|
4
4
|
|
5
5
|
attr_reader :data
|
6
6
|
|
7
|
-
def initialize
|
7
|
+
def initialize raw = nil
|
8
8
|
@data = []
|
9
|
+
unless raw.nil?
|
10
|
+
push raw
|
11
|
+
end
|
9
12
|
end
|
10
13
|
|
11
14
|
def size
|
@@ -77,14 +80,57 @@ module Timelime
|
|
77
80
|
|
78
81
|
if @data.size == 2
|
79
82
|
if @data[0] > @data[1]
|
80
|
-
throw
|
83
|
+
throw :syntax
|
81
84
|
end
|
82
85
|
end
|
83
86
|
|
84
87
|
end
|
85
88
|
|
89
|
+
def range!
|
90
|
+
if size == 1
|
91
|
+
@data += [@data[0]]
|
92
|
+
end
|
93
|
+
self
|
94
|
+
end
|
95
|
+
|
96
|
+
def match? time
|
97
|
+
|
98
|
+
if size == 2
|
99
|
+
outer = self.data
|
100
|
+
inner = time.data
|
101
|
+
else
|
102
|
+
outer = time.data
|
103
|
+
inner = self.data
|
104
|
+
end
|
105
|
+
|
106
|
+
if outer[0] > inner[-1]
|
107
|
+
return false
|
108
|
+
elsif outer[-1] < inner[0]
|
109
|
+
return false
|
110
|
+
else
|
111
|
+
return true
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
|
86
116
|
def to_s
|
87
|
-
|
117
|
+
buf = ""
|
118
|
+
@data.each do |yr|
|
119
|
+
|
120
|
+
unless buf.empty?
|
121
|
+
buf += " - "
|
122
|
+
end
|
123
|
+
|
124
|
+
if yr >= 0
|
125
|
+
buf += yr.to_s
|
126
|
+
buf += " CE"
|
127
|
+
else
|
128
|
+
buf += (yr * -1).to_s
|
129
|
+
buf += " BCE"
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
133
|
+
buf
|
88
134
|
end
|
89
135
|
|
90
136
|
end
|
data/lib/timelime/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timelime
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- patztablook22
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-18 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: ''
|
14
14
|
email:
|