gyunyu 0.3.1 → 0.3.2
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.
- data/Rakefile +5 -3
- data/VERSION +1 -1
- data/gyunyu.gemspec +3 -1
- data/lib/gyunyu/command/export/app.rb +7 -4
- data/lib/gyunyu/command/export/format/csv.rb +12 -0
- data/lib/gyunyu/command/export/total_estimate.rb +41 -0
- data/spec/app/command/export/total_estimate_spec.rb +59 -0
- data/spec/spec_helper.rb +12 -4
- metadata +4 -2
data/Rakefile
CHANGED
@@ -31,9 +31,11 @@ RSpec::Core::RakeTask.new(:spec) do |spec|
|
|
31
31
|
spec.pattern = FileList['spec/**/*_spec.rb']
|
32
32
|
end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
namespace :spec do
|
35
|
+
desc 'Run Rspec & Create Coverage'
|
36
|
+
RSpec::Core::RakeTask.new(:coverage) do
|
37
|
+
ENV['COVERAGE'] = "true"
|
38
|
+
end
|
37
39
|
end
|
38
40
|
|
39
41
|
task :default => :spec
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
data/gyunyu.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "gyunyu"
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["wtnabe"]
|
@@ -36,6 +36,7 @@ Gem::Specification.new do |s|
|
|
36
36
|
"lib/gyunyu/command/export/format/json.rb",
|
37
37
|
"lib/gyunyu/command/export/format/yaml.rb",
|
38
38
|
"lib/gyunyu/command/export/option.rb",
|
39
|
+
"lib/gyunyu/command/export/total_estimate.rb",
|
39
40
|
"lib/gyunyu/expander.rb",
|
40
41
|
"lib/gyunyu/token.rb",
|
41
42
|
"spec/app/.gitkeep",
|
@@ -43,6 +44,7 @@ Gem::Specification.new do |s|
|
|
43
44
|
"spec/app/command/export/custom_filter_spec.rb",
|
44
45
|
"spec/app/command/export/format/csv_spec.rb",
|
45
46
|
"spec/app/command/export/option_spec.rb",
|
47
|
+
"spec/app/command/export/total_estimate_spec.rb",
|
46
48
|
"spec/app/command_spec.rb",
|
47
49
|
"spec/app/expander_spec.rb",
|
48
50
|
"spec/spec_helper.rb",
|
@@ -5,6 +5,9 @@ module Gyunyu
|
|
5
5
|
module Export
|
6
6
|
class App
|
7
7
|
TIME_FIELDS = %w( created modified due added completed deleted )
|
8
|
+
ESTIMATE_DAY = 'estimate(d)'
|
9
|
+
ESTIMATE_HOUR = 'estimate(h)'
|
10
|
+
ESTIMATE_MIN = 'estimate(m)'
|
8
11
|
|
9
12
|
def initialize
|
10
13
|
@argv ||= ARGV
|
@@ -21,7 +24,7 @@ module Gyunyu
|
|
21
24
|
def fields
|
22
25
|
['list'] + option.fields.map { |f|
|
23
26
|
if f == 'estimate'
|
24
|
-
|
27
|
+
[ESTIMATE_DAY, ESTIMATE_HOUR, ESTIMATE_MIN]
|
25
28
|
else
|
26
29
|
f
|
27
30
|
end
|
@@ -121,9 +124,9 @@ module Gyunyu
|
|
121
124
|
end
|
122
125
|
if f == 'estimate'
|
123
126
|
e = split_estimate( t[f] )
|
124
|
-
record[
|
125
|
-
record[
|
126
|
-
record[
|
127
|
+
record[ESTIMATE_DAY] = e.day
|
128
|
+
record[ESTIMATE_HOUR] = e.hour
|
129
|
+
record[ESTIMATE_MIN] = e.min
|
127
130
|
else
|
128
131
|
record[f] = val
|
129
132
|
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
+
require File.dirname(__FILE__) + '/../total_estimate'
|
3
|
+
|
2
4
|
if RUBY_VERSION < '1.9'
|
3
5
|
require 'fastercsv'
|
4
6
|
else
|
@@ -16,7 +18,11 @@ module Gyunyu
|
|
16
18
|
@num_notes = nil
|
17
19
|
|
18
20
|
class << self
|
21
|
+
include Export::TotalEstimate
|
22
|
+
|
19
23
|
def export( tasks, fields )
|
24
|
+
sum_estimate( tasks, fields )
|
25
|
+
|
20
26
|
FasterCSV.generate { |csv|
|
21
27
|
tasks, fields = parse( tasks, fields )
|
22
28
|
csv << fields
|
@@ -35,6 +41,12 @@ module Gyunyu
|
|
35
41
|
t[f]
|
36
42
|
}.flatten
|
37
43
|
}
|
44
|
+
|
45
|
+
if @total_estimate
|
46
|
+
csv << fields.map { |f|
|
47
|
+
@total_estimate.has_key?(f) ? @total_estimate[f] : ''
|
48
|
+
}
|
49
|
+
end
|
38
50
|
}
|
39
51
|
end
|
40
52
|
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Gyunyu
|
2
|
+
module Command
|
3
|
+
module Export
|
4
|
+
module TotalEstimate
|
5
|
+
def sum_estimate( tasks, fields )
|
6
|
+
if have_estimate_fields?( fields )
|
7
|
+
sum = {}; estimate_fields.map { |f| sum[f] = 0 }
|
8
|
+
|
9
|
+
tasks.each { |t|
|
10
|
+
fields.grep(/\Aestimate/).each { |f|
|
11
|
+
sum[f] += t[f].to_i
|
12
|
+
}
|
13
|
+
}
|
14
|
+
@total_estimate = moveup_minute( sum )
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
#
|
19
|
+
# [param] Hash sum
|
20
|
+
# [return] Hash
|
21
|
+
#
|
22
|
+
def moveup_minute( sum )
|
23
|
+
movedup_hour = sum[App::ESTIMATE_MIN] / 60
|
24
|
+
sum[App::ESTIMATE_HOUR] += movedup_hour
|
25
|
+
sum[App::ESTIMATE_MIN] = sum[App::ESTIMATE_MIN] - movedup_hour * 60
|
26
|
+
sum
|
27
|
+
end
|
28
|
+
|
29
|
+
def have_estimate_fields?( fields )
|
30
|
+
estimate_fields & fields == estimate_fields
|
31
|
+
end
|
32
|
+
|
33
|
+
def estimate_fields
|
34
|
+
App.constants.map(&:to_s).grep(/\AESTIMATE/).map { |e|
|
35
|
+
App.const_get(e)
|
36
|
+
}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
3
|
+
|
4
|
+
describe Gyunyu::Command::Export::TotalEstimate do
|
5
|
+
include Gyunyu::Command::Export::TotalEstimate
|
6
|
+
|
7
|
+
let(:tasks) {
|
8
|
+
[
|
9
|
+
{ "list" => "個人",
|
10
|
+
"name" => "gyunyu開発",
|
11
|
+
"estimate(d)" => 0,
|
12
|
+
"estimate(h)" => 2,
|
13
|
+
"estimate(m)" => 45},
|
14
|
+
{ "list" => "家",
|
15
|
+
"name" => "小さな整理",
|
16
|
+
"estimate(d)" => 0,
|
17
|
+
"estimate(h)" => 0,
|
18
|
+
"estimate(m)" => 25},
|
19
|
+
{ "list" => "個人",
|
20
|
+
"name" => "ありがちanalyticsコード改善",
|
21
|
+
"estimate(d)" => 0,
|
22
|
+
"estimate(h)" => 0,
|
23
|
+
"estimate(m)" => 60}
|
24
|
+
]
|
25
|
+
}
|
26
|
+
|
27
|
+
describe 'sum_estimate' do
|
28
|
+
subject {
|
29
|
+
sum_estimate( tasks, %w{list name estimate(d) estimate(h) estimate(m)} )
|
30
|
+
}
|
31
|
+
it {
|
32
|
+
should == {
|
33
|
+
'estimate(d)' => 0,
|
34
|
+
'estimate(h)' => 4,
|
35
|
+
'estimate(m)' => 10
|
36
|
+
}
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
40
|
+
describe 'have_estimate_fields?' do
|
41
|
+
context 'name, due' do
|
42
|
+
subject {
|
43
|
+
have_estimate_fields?( %w( name due ) )
|
44
|
+
}
|
45
|
+
it {
|
46
|
+
should be_false
|
47
|
+
}
|
48
|
+
end
|
49
|
+
context 'name, estimate' do
|
50
|
+
subject {
|
51
|
+
have_estimate_fields?(%w{ name estimate(d) estimate(h) estimate(m) })
|
52
|
+
}
|
53
|
+
it {
|
54
|
+
should be_true
|
55
|
+
}
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,20 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
2
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
3
|
require 'rspec'
|
4
|
+
|
5
|
+
RSpec.configure do |config|
|
6
|
+
config.mock_with :rr
|
7
|
+
end
|
8
|
+
|
9
|
+
if ENV['COVERAGE']
|
10
|
+
require 'simplecov'
|
11
|
+
SimpleCov.start do
|
12
|
+
add_filter 'spec'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
4
16
|
require 'gyunyu'
|
5
17
|
|
6
18
|
# Requires supporting files with custom matchers and macros, etc,
|
7
19
|
# in ./support/ and its subdirectories.
|
8
20
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
9
|
-
|
10
|
-
RSpec.configure do |config|
|
11
|
-
config.mock_with :rr
|
12
|
-
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gyunyu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -182,6 +182,7 @@ files:
|
|
182
182
|
- lib/gyunyu/command/export/format/json.rb
|
183
183
|
- lib/gyunyu/command/export/format/yaml.rb
|
184
184
|
- lib/gyunyu/command/export/option.rb
|
185
|
+
- lib/gyunyu/command/export/total_estimate.rb
|
185
186
|
- lib/gyunyu/expander.rb
|
186
187
|
- lib/gyunyu/token.rb
|
187
188
|
- spec/app/.gitkeep
|
@@ -189,6 +190,7 @@ files:
|
|
189
190
|
- spec/app/command/export/custom_filter_spec.rb
|
190
191
|
- spec/app/command/export/format/csv_spec.rb
|
191
192
|
- spec/app/command/export/option_spec.rb
|
193
|
+
- spec/app/command/export/total_estimate_spec.rb
|
192
194
|
- spec/app/command_spec.rb
|
193
195
|
- spec/app/expander_spec.rb
|
194
196
|
- spec/spec_helper.rb
|
@@ -213,7 +215,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
213
215
|
version: '0'
|
214
216
|
segments:
|
215
217
|
- 0
|
216
|
-
hash:
|
218
|
+
hash: 328607615784605612
|
217
219
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
220
|
none: false
|
219
221
|
requirements:
|