haora 0.0.2 → 0.0.3

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: 0ef2d689a29a331f842146a0a18d86975a8d61ef
4
- data.tar.gz: 0a029f909c6be28e2c2e9cbabce6b53a9e7cfa01
3
+ metadata.gz: ddd1a2d1274b551373f6976d215271c9a72f1858
4
+ data.tar.gz: ce8b10a80fdeb3459d2558eb5b9c86cc623dc840
5
5
  SHA512:
6
- metadata.gz: f66929443442a39fc3655bea04e151c093569ccafe935f8c962c362d2c9becb518891d30dd5a023eea0f1121dfe0d266a2c2b104012460b8574ae9ea534ba2d4
7
- data.tar.gz: fd831c44e0e26d049bf2dfe59d74edeeebae753a38ac4b370a9f6abf8d96a753556a09f7004e03523eed26ac5446843b9616cccef6fd9bc65f4184b9e4b41ec6
6
+ metadata.gz: 881997389e63129d3b34c686a88b205771d6a05cfe0d2c373437c67f7d5b8f261f7c1d28149d8177e58de3be03679786c4c173694d4a464e8e7c40d8767c9553
7
+ data.tar.gz: 40596f11a030a6bd9a5a7415e00caa7d39245295c3278ccd363f0d6f4bc91545ec548e46fec6e5e155c5cce968db8c311d92f93731104763d27dbedcb2a34264
data/bin/haora CHANGED
@@ -25,12 +25,30 @@ command :add do |c|
25
25
  c.flag :e, :end
26
26
  c.action do |global_actions, options, args|
27
27
  file_name = global_actions[:file]
28
- date = global_actions[:date]
29
- start = options[:begin]
30
- stop = options[:end]
31
- project = options[:project]
32
- text = args[0]
33
- Haora::Service.for(file_name).add_task(date: date, start: start, stop: stop, project: project, text: text)
28
+ params = {
29
+ :date => global_actions[:date],
30
+ :start => options[:begin],
31
+ :stop => options[:end],
32
+ :project => options[:project],
33
+ :text => args[0]
34
+ }
35
+ Haora::Service.for(file_name).add_task(params)
36
+ end
37
+ end
38
+
39
+ desc 'Finish the last task of a day'
40
+ command :finish do |c|
41
+ c.flag :p, :project
42
+ c.flag :e, :end
43
+ c.action do |global_actions, options, args|
44
+ file_name = global_actions[:file]
45
+ params = {
46
+ :date => global_actions[:date],
47
+ :stop => options[:end],
48
+ :project => options[:project],
49
+ :text => args[0]
50
+ }
51
+ Haora::Service.for(file_name).finish(params)
34
52
  end
35
53
  end
36
54
 
data/lib/haora/day.rb CHANGED
@@ -15,14 +15,23 @@ module Haora
15
15
 
16
16
  def <<(task)
17
17
  tasks << task
18
+ tasks.sort!
19
+ self
18
20
  end
19
21
 
20
22
  def ==(other)
21
- date == other.date
23
+ @date == other.date
22
24
  end
23
25
 
24
26
  def <=>(other)
25
- date <=> other.date
27
+ @date <=> other.date
28
+ end
29
+
30
+ def finish(params = {})
31
+ last = tasks.last
32
+ last.stop_at(params[:stop] || Timestamp.now)
33
+ last.project = params[:project] if params[:project]
34
+ last.text = params[:text] if params[:text]
26
35
  end
27
36
 
28
37
  def to_s
@@ -39,9 +48,12 @@ module Haora
39
48
 
40
49
  def self.now
41
50
  if ENV['NOW'] # for testing
42
- Time.parse(ENV['NOW'])
51
+ /(\d?\d):(\d\d)/.match(ENV['NOW']) do |m|
52
+ {:hour => m[1].to_i, :minute => m[2].to_i}
53
+ end
43
54
  else
44
- Time.now
55
+ now = Time.now
56
+ {:hour => now.hour, :minute => now.min}
45
57
  end
46
58
  end
47
59
 
data/lib/haora/task.rb CHANGED
@@ -4,12 +4,36 @@ module Haora
4
4
  attr_reader :start, :stop, :project, :text
5
5
 
6
6
  def initialize(params)
7
- @start = params[:start] ? Timestamp.new(params[:start]) : Timestamp.now
8
- @stop = params[:stop] ? Timestamp.new(params[:stop]) : nil
7
+ @start = params[:start] ? Timestamp.new(literal: params[:start]) : Timestamp.now
8
+ @stop = params[:stop] ? Timestamp.new(literal: params[:stop]) : nil
9
9
  @project = Project.by(name: params[:project])
10
10
  @text = params[:text] || ''
11
11
  end
12
12
 
13
+ def project=(project)
14
+ if project.is_a? String
15
+ @project = Project.by(name: project)
16
+ else
17
+ @project = project
18
+ end
19
+ end
20
+
21
+ def text=(text)
22
+ @text = text ||''
23
+ end
24
+
25
+ def <=>(other)
26
+ @start.to_minutes <=> other.start.to_minutes
27
+ end
28
+
29
+ def stop_at(timestamp)
30
+ if timestamp.is_a? String
31
+ @stop = Timestamp.new(literal: timestamp)
32
+ else
33
+ @stop = timestamp
34
+ end
35
+ end
36
+
13
37
  def to_s
14
38
  '%s - %s : %s : %s' % [@start, @stop, @project.name, @text]
15
39
  end
@@ -3,18 +3,17 @@ module Haora
3
3
  class Timestamp
4
4
  attr_reader :hour, :minute
5
5
 
6
- def initialize(*params)
7
- if params.size == 1 && params.first.is_a?(String)
8
- @hour, @minute = parse_timestamp_literal(params.first)
9
- elsif params.size == 2 && (params.all? { |p| p.is_a?(Integer) })
10
- @hour, @minute = params.first(2)
6
+ def initialize(params)
7
+ if params.has_key?(:literal)
8
+ @hour, @minute = parse_timestamp_literal(params[:literal])
9
+ elsif params.has_key?(:hour) && params.has_key?(:minute)
10
+ @hour, @minute = params[:hour], params[:minute]
11
11
  end
12
- raise ArgumentError if invalid?
12
+ invalid?
13
13
  end
14
14
 
15
15
  def self.now
16
- now = Day.now
17
- Timestamp.new(now.hour, now.min)
16
+ Timestamp.new(Day.now)
18
17
  end
19
18
 
20
19
  private
data/lib/haora/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Haora
2
2
 
3
- VERSION = '0.0.2'
3
+ VERSION = '0.0.3'
4
4
 
5
5
  end
data/lib/haora.rb CHANGED
@@ -23,6 +23,12 @@ module Haora
23
23
  }
24
24
  end
25
25
 
26
+ def finish(params)
27
+ apply {
28
+ @workbook[params[:date]].finish(params)
29
+ }
30
+ end
31
+
26
32
  def list(date = nil)
27
33
  day = @workbook[date]
28
34
  StandardDayRenderer.new.render(day)
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.2
4
+ version: 0.0.3
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-18 00:00:00.000000000 Z
11
+ date: 2017-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gli