haora 0.0.3 → 0.0.4

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