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 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: