timelime 0.1.1 → 0.1.2

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: 87163ebf7ebd03945a2e8da4e22fcae1d56044b4a639b60c1862846824cb65c0
4
- data.tar.gz: 4a8001e069cce6faed6bdac488e98a504bcfde14d282bef08e20ee24b6353bd1
3
+ metadata.gz: a9c4553b5957aaaf6857cc57231d192b17f022c647cdc16e083cf447b563e078
4
+ data.tar.gz: 652fc40e0b06135bc8eca4920b92c0ca9a98228c333edcd01dfb8b7dd8f13fb0
5
5
  SHA512:
6
- metadata.gz: c45a00b5ccfd02c89b8993e42099dec6cbb43789eb427221ee0428f87821634ef34d9d0b8af63805f0d64f71183b776e3405e2bd3d12e5393bcb4c4998fe8a74
7
- data.tar.gz: e2474eef94d5d6d0b288d6464b21f85d2f0a80b2489badb3ea0c23db5e1aa9a97842bcde87471df822c77f3ebc6ff4ca927c1e964be0d05b8495f6a5ed6babb2
6
+ metadata.gz: 07a3249a867b8945833111f3d47525e352821f806019d2fa638da114e158babfbbc0c6722fff0ec6724f719ef8e049df1663d2c9ac6e8358d9e0a3dc09a28dd1
7
+ data.tar.gz: a3076a41a4fc1b0be4b795da40edf701bf2ea051aa6f8bb1e90922deaad5ad47611cd9f86608753940378bbcc6c3dfd89db3060c695d97596feca7241702babb
data/README.md CHANGED
@@ -1,2 +1,22 @@
1
1
  # timelime
2
2
  a ruby timeliner
3
+
4
+ # installation
5
+ run as root \
6
+ `gem install timelime`
7
+
8
+ # usage
9
+ `timelime --help`
10
+
11
+ # file syntax
12
+ `.md`-friendly:
13
+ ```md
14
+ # Some event
15
+ *X BCE - Y CE*
16
+ - comment
17
+ - comment
18
+ @tag1 @tag2
19
+
20
+ # Another event
21
+ ...
22
+ ```
@@ -1,18 +1,52 @@
1
1
  #! /usr/bin/ruby
2
2
 
3
3
  begin
4
+ require 'optparse'
4
5
  require 'timelime'
5
6
  rescue
6
7
  puts "lib require failed"
7
8
  exit 1
8
9
  end
9
10
 
10
- paths = ARGV
11
- if paths.size == 0
12
- paths += ["."]
11
+ $options = {}
12
+ ARGV.options do |opt|
13
+
14
+ opt.banner = "Usage: timelime options"
15
+
16
+ opt.on("-h", "--help", "print help") do
17
+ puts opt
18
+ exit
19
+ end
20
+
21
+ opt.on("-f", "--file [PATH]", "include path recursively") do |path|
22
+ unless path.nil? or path.empty?
23
+ $options[:file] = $options[:file].to_a + [path]
24
+ end
25
+ end
26
+
27
+ opt.on("-p", "--precision [NUM]", "timeline event precision") do |prec|
28
+ if prec.nil?
29
+ next
30
+ end
31
+ tmp = prec.to_i
32
+ if tmp.to_s == prec
33
+ $options[:precision] = tmp
34
+ end
35
+ end
36
+
37
+ =begin
38
+ opt.on("-T", "--tags-inc [TAG1,TA...]", "process only given tags") do |tags|
39
+ end
40
+
41
+ opt.on("-t", "--tags-exc [TAG1,TA...]", "process all but given tags") do |tags|
42
+ end
43
+ =end
44
+
45
+ opt.parse!
46
+
13
47
  end
14
48
 
15
- tree = Timelime::Tree.new(paths)
49
+ tree = Timelime::Tree.new( $options[:file].to_a )
16
50
  table = Timelime::Table.new
17
51
 
18
52
  tree.get do |file|
@@ -21,12 +55,13 @@ tree.get do |file|
21
55
  end
22
56
  end
23
57
 
58
+
24
59
  if table.size == 0
25
- puts "table is empty"
60
+ exit
26
61
  end
27
62
 
28
63
  axis = Timelime::Axis.new(table)
29
- axis.generate 3
64
+ axis.generate $options[:precision]
30
65
 
31
66
  puts
32
67
  Timelime::dump axis
@@ -14,7 +14,13 @@ module Timelime
14
14
  @table = table
15
15
  end
16
16
 
17
- def generate precision = 10
17
+ def to_b
18
+ true
19
+ end
20
+
21
+ def generate precision = nil
22
+
23
+ precision = precision.to_i
18
24
 
19
25
  @buffer = [
20
26
  [], # L side
@@ -23,7 +29,18 @@ module Timelime
23
29
  range = @table.range
24
30
  @begin = range[0]
25
31
  @length = range[1] - range[0]
32
+ if @length == 0
33
+ @length = 1
34
+ end
26
35
  size = @table.size
36
+
37
+ if precision == 0
38
+ precision = Math.log(@length).to_i
39
+ if precision == 0
40
+ precision = 1
41
+ end
42
+ end
43
+
27
44
  @lines = size * precision
28
45
 
29
46
  @table.get do |e|
@@ -6,6 +6,9 @@ module Timelime
6
6
 
7
7
  for c in 0...data[0].size
8
8
  for l in 0...data[0][c].size
9
+ if l - 1 < 0 or l + 1 >= data[0][c].size
10
+ next
11
+ end
9
12
  e = data[0][c][l]
10
13
  check = [e.to_s, "*"]
11
14
  above = data[0][c][l - 1].to_s
@@ -21,12 +24,10 @@ module Timelime
21
24
  data.map! do |s|
22
25
  s.map! do |c|
23
26
  c.map! do |e|
24
- if e.nil?
25
- nil
26
- elsif e.class == Timelime::Event
27
+ if e.class == Timelime::Event
27
28
  e.head
28
29
  else
29
- "*"
30
+ e
30
31
  end
31
32
  end
32
33
  end
@@ -59,16 +60,20 @@ module Timelime
59
60
 
60
61
  for s in 0..1
61
62
 
63
+ if s == 1
64
+ buf[-1] += " │ " + tab(axis.label(l), 6, 0) + " │ "
65
+ end
66
+
67
+ if data[s][l].nil?
68
+ next
69
+ end
70
+
62
71
  data[s][l].each_with_index do |txt, c|
63
72
 
64
73
  buf[-1] += tab(txt, tabs[s][c], s)
65
74
 
66
75
  end
67
76
 
68
- if s == 0
69
- buf[-1] += " │ " + tab(axis.label(l), 6, 0) + " │ "
70
- end
71
-
72
77
  end
73
78
 
74
79
  end
@@ -36,7 +36,7 @@ module Timelime
36
36
  case line[0]
37
37
  when "*"
38
38
  buf.time.push(line)
39
- when "#"
39
+ when "@"
40
40
  buf.tags.push(line)
41
41
  else
42
42
  end
@@ -44,8 +44,8 @@ module Timelime
44
44
 
45
45
  rescue
46
46
  err = true
47
- puts "WARN: invalid definition: #{path} line #{number}"
48
- puts " skipping to next entry"
47
+ $stderr.puts "WARN: invalid definition: #{path} line #{number}"
48
+ $stderr.puts " skipping to next entry"
49
49
  end
50
50
 
51
51
  end
@@ -12,7 +12,7 @@ module Timelime
12
12
 
13
13
  raw.split.each do |tag|
14
14
 
15
- unless tag[0] == "#" and tag.length > 1
15
+ unless tag[0] == "@" and tag.length > 1
16
16
  throw :syntax
17
17
  end
18
18
 
@@ -1,3 +1,3 @@
1
1
  module Timelime
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
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.1
4
+ version: 0.1.2
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-16 00:00:00.000000000 Z
11
+ date: 2020-07-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ''
14
14
  email: