haora 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/haora/io.rb +2 -6
- data/lib/haora/project.rb +1 -1
- data/lib/haora/renderer.rb +30 -23
- data/lib/haora/timestamp.rb +3 -3
- data/lib/haora/version.rb +1 -3
- data/lib/haora.rb +2 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 85ba46e866948e438e101cb4b2b89d9d3a68d732
|
4
|
+
data.tar.gz: f40ca3f38debc0fe0e4a8fd5abb431def1d7cb5d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d31a00d0f96b49b5794881362773a2580c05200b40918aa4ce8be63d613522f1d6155f721a3860b0fc7b92717d0defd7e6a9c1dae661e3e8d380f435cb60d986
|
7
|
+
data.tar.gz: e0f9bedcd560443a86ef65ea9dfbc9a1bf8ee20544e55a3b716e9847f41011882256b1e73af2008ef8fafdd971cb5486016f5f286b74f012c12d45ef07684096
|
data/lib/haora/io.rb
CHANGED
@@ -19,13 +19,9 @@ module Haora
|
|
19
19
|
|
20
20
|
module TextIOImporter
|
21
21
|
|
22
|
-
private
|
23
|
-
|
24
22
|
DAY_RE = /DAY (\d\d\d\d-\d\d-\d\d)/
|
25
|
-
TASK_RE = /(\d?\d:\d\d)-(\d
|
26
|
-
|
27
|
-
public
|
28
|
-
|
23
|
+
TASK_RE = /(\d?\d:\d\d)-(\d?\d:\d\d)?\|(.*)\|(.*)?/
|
24
|
+
|
29
25
|
def import(io)
|
30
26
|
@workbook = Workbook.new
|
31
27
|
io.each_line { |line|
|
data/lib/haora/project.rb
CHANGED
data/lib/haora/renderer.rb
CHANGED
@@ -1,26 +1,25 @@
|
|
1
1
|
module Haora
|
2
|
-
|
3
2
|
class Renderer
|
4
|
-
|
5
3
|
private
|
6
4
|
|
7
5
|
def rendered_timespan(start, stop)
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
start = start.to_s
|
7
|
+
start.prepend(' ') if start.length < 5
|
8
|
+
stop = stop.nil? ? ' now ' : stop.to_s
|
9
|
+
stop.prepend(' ') if stop.length < 5
|
10
|
+
format('%s - %s', start, stop)
|
11
11
|
end
|
12
12
|
|
13
13
|
def rendered_duration(hours)
|
14
|
-
'%5.2f'
|
14
|
+
format('%5.2f', hours)
|
15
15
|
end
|
16
|
-
|
17
16
|
end
|
18
17
|
|
19
18
|
class DayRenderer < Renderer
|
20
|
-
|
21
19
|
def render(day)
|
22
20
|
raise 'none' if day.tasks.empty?
|
23
|
-
%W(#{rendered_date_of(day)} #{rendered(day.tasks)} #{rendered_total(day)})
|
21
|
+
%W(#{rendered_date_of(day)} #{rendered(day.tasks)} #{rendered_total(day)})
|
22
|
+
.join("\n")
|
24
23
|
end
|
25
24
|
|
26
25
|
private
|
@@ -32,40 +31,48 @@ module Haora
|
|
32
31
|
end
|
33
32
|
|
34
33
|
def rendered(tasks)
|
35
|
-
tasks
|
34
|
+
tasks
|
35
|
+
.map { |task| rendered_task(task, tasks[tasks.index(task) + 1]) }
|
36
|
+
.join("\n")
|
36
37
|
end
|
37
38
|
|
38
39
|
def rendered_total(day)
|
39
|
-
day
|
40
|
-
|
41
|
-
|
42
|
-
|
40
|
+
day
|
41
|
+
.project_names
|
42
|
+
.collect { |name| rendered_project_total(name, day.duration(of_project: name)) }
|
43
|
+
.push(' Total = %5.2f' % day.hours)
|
44
|
+
.join("\n")
|
43
45
|
end
|
44
46
|
|
45
47
|
def rendered_project_total(name, duration)
|
46
|
-
total = '%s ='
|
47
|
-
'%s %5.2f'
|
48
|
+
total = format('%s =', name[0..12])
|
49
|
+
format('%s %5.2f', total.rjust(15), duration.hours)
|
48
50
|
end
|
49
51
|
|
50
52
|
def rendered_task(task, next_task)
|
51
53
|
timespan = rendered_timespan(task.start, task.stop)
|
52
54
|
duration = rendered_duration(task.duration.hours)
|
55
|
+
output = rendered_task_info(task, timespan, duration)
|
56
|
+
with_rendered_gap(task, next_task, output)
|
57
|
+
end
|
58
|
+
|
59
|
+
def rendered_task_info(task, timespan, duration)
|
53
60
|
if task.project.noname?
|
54
|
-
output = '%s = %s %s'
|
61
|
+
output = format('%s = %s %s',
|
62
|
+
timespan, duration, task.text)
|
55
63
|
else
|
56
|
-
output = '%s = %s %s: %s'
|
64
|
+
output = format('%s = %s %s: %s',
|
65
|
+
timespan, duration, task.project.name, task.text)
|
57
66
|
end
|
58
|
-
|
67
|
+
output
|
59
68
|
end
|
60
69
|
|
61
|
-
def
|
70
|
+
def with_rendered_gap(task, next_task, output)
|
62
71
|
unless next_task.nil?
|
63
72
|
gap = task.gap(to_next: next_task)
|
64
|
-
output << "\n %dm"
|
73
|
+
output << format("\n %dm", gap.minutes) unless gap.minutes.zero?
|
65
74
|
end
|
66
75
|
output
|
67
76
|
end
|
68
|
-
|
69
77
|
end
|
70
|
-
|
71
78
|
end
|
data/lib/haora/timestamp.rb
CHANGED
@@ -54,8 +54,8 @@ module Haora
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def parts
|
57
|
-
{:
|
58
|
-
|
57
|
+
{ hours: @minutes / 60,
|
58
|
+
minutes: @minutes % 60 }
|
59
59
|
end
|
60
60
|
|
61
61
|
def hours
|
@@ -71,7 +71,7 @@ module Haora
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def to_s
|
74
|
-
'%d h %d m'
|
74
|
+
format('%d h %d m', parts[:hours], parts[:minutes])
|
75
75
|
end
|
76
76
|
|
77
77
|
private
|
data/lib/haora/version.rb
CHANGED
data/lib/haora.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: haora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dirk Rademann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gli
|
@@ -116,7 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
116
|
requirements:
|
117
117
|
- - ">="
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version:
|
119
|
+
version: 2.3.3
|
120
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - ">="
|