timelime 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a9c4553b5957aaaf6857cc57231d192b17f022c647cdc16e083cf447b563e078
4
- data.tar.gz: 652fc40e0b06135bc8eca4920b92c0ca9a98228c333edcd01dfb8b7dd8f13fb0
3
+ metadata.gz: d954fb0c35cbf771a5ab7a25cb160835876cc72d2594aaaff06cf124625335c0
4
+ data.tar.gz: 1099b7d61d179e87af56b5a15fb40e8d4a98c18d0c1504b44c7857e7ee3c1602
5
5
  SHA512:
6
- metadata.gz: 07a3249a867b8945833111f3d47525e352821f806019d2fa638da114e158babfbbc0c6722fff0ec6724f719ef8e049df1663d2c9ac6e8358d9e0a3dc09a28dd1
7
- data.tar.gz: a3076a41a4fc1b0be4b795da40edf701bf2ea051aa6f8bb1e90922deaad5ad47611cd9f86608753940378bbcc6c3dfd89db3060c695d97596feca7241702babb
6
+ metadata.gz: 1add644820f7b655ffc8cc470773f099c32e4a64c29b061dddb79a0cdb8fecf2133e22f8b6eee05020b3198029b7b2facf273e6c4e990d10928a3bca40aa6c00
7
+ data.tar.gz: 4d0c758cdf67c4ed07d2d7c063538a81388188e2496c02f2af8d6ac54c9c2ac4a0976c441ef832c115cddbd1232a5f45081501cbc6daa27c9adf0fb74884af89
@@ -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
- =begin
38
- opt.on("-T", "--tags-inc [TAG1,TA...]", "process only given tags") do |tags|
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("-t", "--tags-exc [TAG1,TA...]", "process all but given tags") do |tags|
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
- tree.get do |file|
53
- Timelime.parse(file) do |event|
54
- table.push event
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
- if table.size == 0
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
@@ -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
- range = @table.range
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 >= @lines
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
- buf
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
@@ -25,7 +25,9 @@ module Timelime
25
25
  s.map! do |c|
26
26
  c.map! do |e|
27
27
  if e.class == Timelime::Event
28
- e.head
28
+ "[#{e.head}]"
29
+ elsif !e.nil? and e == "*"
30
+ "* "
29
31
  else
30
32
  e
31
33
  end
@@ -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 buf
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}"
@@ -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
@@ -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
- @data.to_s
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
@@ -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
- @data.to_s
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
@@ -1,3 +1,3 @@
1
1
  module Timelime
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
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.2
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-17 00:00:00.000000000 Z
11
+ date: 2020-07-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ''
14
14
  email: