haora 0.1.0 → 0.1.1
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/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
|
- - ">="
|