haora 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: ddd1a2d1274b551373f6976d215271c9a72f1858
4
- data.tar.gz: ce8b10a80fdeb3459d2558eb5b9c86cc623dc840
3
+ metadata.gz: 71868010980f691b42a132185e7203b94c79764b
4
+ data.tar.gz: c1da986fb12b723bb1d606905c6acdc0681b7655
5
5
  SHA512:
6
- metadata.gz: 881997389e63129d3b34c686a88b205771d6a05cfe0d2c373437c67f7d5b8f261f7c1d28149d8177e58de3be03679786c4c173694d4a464e8e7c40d8767c9553
7
- data.tar.gz: 40596f11a030a6bd9a5a7415e00caa7d39245295c3278ccd363f0d6f4bc91545ec548e46fec6e5e155c5cce968db8c311d92f93731104763d27dbedcb2a34264
6
+ metadata.gz: 071cc6e4cec4a3fe53cf20350d2c34656e4dbab3279aaec56bce5481a52bdd0b6370e109a9196d85b1e77e6a26b369f1c697edbd48114f9e0cc66a32e92730d8
7
+ data.tar.gz: e6fc745ed025ab5c69aaa8fc217fee56db24fb5330156d00bf2aed19d213d2f5a995196d158a7910c0229789328f6a853c6ea94ba0badfcaa21225ecaade9765
data/lib/haora/day.rb CHANGED
@@ -13,7 +13,14 @@ module Haora
13
13
  @tasks ||= []
14
14
  end
15
15
 
16
+ def hours
17
+ tasks.map { |t| t.duration }
18
+ .reduce { |acc, d| acc + d }
19
+ .hours
20
+ end
21
+
16
22
  def <<(task)
23
+ finish(stop: task.start) if tasks.last&.open?
17
24
  tasks << task
18
25
  tasks.sort!
19
26
  self
data/lib/haora/project.rb CHANGED
@@ -24,6 +24,10 @@ module Haora
24
24
  @projects.clear
25
25
  end
26
26
 
27
+ def noname?
28
+ @name&.empty?
29
+ end
30
+
27
31
  private
28
32
 
29
33
  def initialize(name)
@@ -4,7 +4,8 @@ module Haora
4
4
 
5
5
  def render(day)
6
6
  'Tasks of ' << rendered_date_of(day) << "\n" \
7
- << rendered(day.tasks)
7
+ << rendered(day.tasks) << "\n" \
8
+ << rendered_total(day)
8
9
  end
9
10
 
10
11
  private
@@ -21,10 +22,22 @@ module Haora
21
22
  tasks.map { |task| rendered_task(task) }.join("\n")
22
23
  end
23
24
 
25
+ def rendered_total(day)
26
+ if day.tasks.empty?
27
+ 'none'
28
+ else
29
+ ' Total = %5.2f' % day.hours
30
+ end
31
+ end
32
+
24
33
  def rendered_task(task)
25
34
  timespan = rendered_timespan(task.start, task.stop)
26
- duration = rendered_duration(task.start, task.stop)
27
- '%s = %s %s: %s' % [timespan, duration, task.project.name, task.text]
35
+ duration = rendered_duration(task)
36
+ if task.project.noname?
37
+ '%s = %s %s' % [timespan, duration, task.text]
38
+ else
39
+ '%s = %s %s: %s' % [timespan, duration, task.project.name, task.text]
40
+ end
28
41
  end
29
42
 
30
43
  def rendered_timespan(start, stop)
@@ -33,9 +46,8 @@ module Haora
33
46
  timespan
34
47
  end
35
48
 
36
- def rendered_duration(start, stop)
37
- stop = stop.nil? ? Timestamp.now : stop
38
- '%5.2f' % (stop - start).hours
49
+ def rendered_duration(task)
50
+ '%5.2f' % task.duration.hours
39
51
  end
40
52
 
41
53
  end
data/lib/haora/task.rb CHANGED
@@ -3,7 +3,7 @@ module Haora
3
3
  class Task
4
4
  attr_reader :start, :stop, :project, :text
5
5
 
6
- def initialize(params)
6
+ def initialize(params = {})
7
7
  @start = params[:start] ? Timestamp.new(literal: params[:start]) : Timestamp.now
8
8
  @stop = params[:stop] ? Timestamp.new(literal: params[:stop]) : nil
9
9
  @project = Project.by(name: params[:project])
@@ -22,6 +22,14 @@ module Haora
22
22
  @text = text ||''
23
23
  end
24
24
 
25
+ def open?
26
+ @stop.nil?
27
+ end
28
+
29
+ def duration
30
+ (@stop.nil? ? Timestamp.now : @stop) - @start
31
+ end
32
+
25
33
  def <=>(other)
26
34
  @start.to_minutes <=> other.start.to_minutes
27
35
  end
@@ -62,6 +62,10 @@ module Haora
62
62
  minutes / 60.0
63
63
  end
64
64
 
65
+ def +(other)
66
+ Duration.of_minutes(@minutes + other.minutes)
67
+ end
68
+
65
69
  def to_s
66
70
  '%d h %d m' % [parts[:hours], parts[:minutes]]
67
71
  end
data/lib/haora/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Haora
2
2
 
3
- VERSION = '0.0.3'
3
+ VERSION = '0.0.4'
4
4
 
5
5
  end
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.0.3
4
+ version: 0.0.4
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-02-20 00:00:00.000000000 Z
11
+ date: 2017-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gli