taskwarrior-web 1.0.13 → 1.0.14
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/CHANGELOG.md +6 -0
- data/lib/taskwarrior-web/helpers.rb +10 -9
- data/lib/taskwarrior-web/model/config.rb +24 -1
- data/spec/app/helpers_spec.rb +24 -12
- data/taskwarrior-web.gemspec +1 -1
- metadata +24 -24
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## v1.0.14 (11/22/12)
|
2
|
+
|
3
|
+
* Fixed a bug when colorizing tasks based on "due" setting.
|
4
|
+
* Fixed bugs that may result from differences between Taskwarrior's date format
|
5
|
+
strings and those of Ruby.
|
6
|
+
|
1
7
|
## v1.0.13 (11/22/12)
|
2
8
|
|
3
9
|
* Added support for `task-web.filter.badge` option to control the Fluid badge
|
@@ -1,20 +1,21 @@
|
|
1
|
+
require 'active_support/core_ext/date/calculations'
|
2
|
+
|
1
3
|
module TaskwarriorWeb::App::Helpers
|
2
4
|
|
3
5
|
def format_date(timestamp)
|
4
|
-
format = TaskwarriorWeb::Config.dateformat || 'm
|
5
|
-
|
6
|
-
Time.parse(timestamp).strftime(subbed)
|
6
|
+
format = TaskwarriorWeb::Config.dateformat || '%-m/%-d/%Y'
|
7
|
+
Time.parse(timestamp).strftime(format)
|
7
8
|
end
|
8
9
|
|
9
10
|
def colorize_date(timestamp)
|
10
11
|
return if timestamp.nil?
|
11
|
-
due_def = TaskwarriorWeb::Config.due
|
12
|
-
|
12
|
+
due_def = (TaskwarriorWeb::Config.due || 7).to_i
|
13
|
+
date = Date.parse(timestamp)
|
13
14
|
case true
|
14
|
-
when
|
15
|
-
when
|
16
|
-
when
|
17
|
-
else 'regular'
|
15
|
+
when Date.today == date then 'warning' # today
|
16
|
+
when Date.today > date then 'error' # overdue
|
17
|
+
when Date.today.advance(:days => due_def) >= date then 'success' # within the "due" range
|
18
|
+
else 'regular' # just a regular task
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
@@ -2,6 +2,25 @@ require 'parseconfig'
|
|
2
2
|
require 'versionomy'
|
3
3
|
|
4
4
|
module TaskwarriorWeb::Config
|
5
|
+
# A list of date formats, with Taskwarrior's on the left and the Ruby
|
6
|
+
# equivalent on the right.
|
7
|
+
DATEFORMATS = {
|
8
|
+
'm' => '%-m', # minimal-digit month, for example 1 or 12
|
9
|
+
'd' => '%-d', # minimal-digit day, for example 1 or 30
|
10
|
+
'y' => '%y', # two-digit year, for example 09
|
11
|
+
'D' => '%d', # two-digit day, for example 01 or 30
|
12
|
+
'M' => '%m', # two-digit month, for example 01 or 12
|
13
|
+
'Y' => '%Y', # four-digit year, for example 2009
|
14
|
+
'a' => '%a', # short name of weekday, for example Mon or Wed
|
15
|
+
'A' => '%A', # long name of weekday, for example Monday or Wednesday
|
16
|
+
'b' => '%b', # short name of month, for example Jan or Aug
|
17
|
+
'B' => '%B', # long name of month, for example January or August
|
18
|
+
'V' => '%U', # weeknumber, for example 03 or 37
|
19
|
+
'H' => '%H', # two-digit hour, for example 03 or 11
|
20
|
+
'N' => '%M', # two-digit minutes, for example 05 or 42
|
21
|
+
'S' => '%S', # two-digit seconds, for example 07 or 47
|
22
|
+
}
|
23
|
+
|
5
24
|
def self.version
|
6
25
|
@version ||= Versionomy.parse(`task _version`.strip)
|
7
26
|
end
|
@@ -14,7 +33,11 @@ module TaskwarriorWeb::Config
|
|
14
33
|
self.file[prop]
|
15
34
|
end
|
16
35
|
|
36
|
+
def self.dateformat
|
37
|
+
self.file['dateformat'].gsub(/(\w)/, DATEFORMATS) unless self.file['dateformat'].nil?
|
38
|
+
end
|
39
|
+
|
17
40
|
def self.method_missing(method)
|
18
|
-
self.file[method]
|
41
|
+
self.file[method.to_s]
|
19
42
|
end
|
20
43
|
end
|
data/spec/app/helpers_spec.rb
CHANGED
@@ -16,19 +16,22 @@ describe TaskwarriorWeb::App::Helpers do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'should format various dates and times to the default format' do
|
19
|
-
helpers.format_date('2012-01-11 12:23:00').should == '
|
20
|
-
helpers.format_date('2012-01-11').should == '
|
19
|
+
helpers.format_date('2012-01-11 12:23:00').should == '1/11/2012'
|
20
|
+
helpers.format_date('2012-01-11').should == '1/11/2012'
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
context 'with a specified date format' do
|
25
|
-
|
26
|
-
TaskwarriorWeb::Config.should_receive(:dateformat).any_number_of_times.and_return('d
|
25
|
+
it 'should format dates using the specified format' do
|
26
|
+
TaskwarriorWeb::Config.should_receive(:dateformat).any_number_of_times.and_return('%d/%-m/%Y')
|
27
|
+
helpers.format_date('2012-12-11 12:23:00').should == '11/12/2012'
|
28
|
+
helpers.format_date('2012-12-11').should == '11/12/2012'
|
27
29
|
end
|
28
30
|
|
29
|
-
it 'should
|
30
|
-
|
31
|
-
helpers.format_date('2012-01-11').should == '11/
|
31
|
+
it 'should convert Taskwarrior formats to Ruby formats correctly' do
|
32
|
+
TaskwarriorWeb::Config.should_receive(:file).any_number_of_times.and_return({'dateformat' => 'd/m/Y'})
|
33
|
+
helpers.format_date('2012-01-11 12:23:00').should == '11/1/2012'
|
34
|
+
helpers.format_date('2012-12-02 12:23:00').should == '2/12/2012'
|
32
35
|
end
|
33
36
|
end
|
34
37
|
end
|
@@ -46,19 +49,28 @@ describe TaskwarriorWeb::App::Helpers do
|
|
46
49
|
TaskwarriorWeb::Config.should_receive(:due).any_number_of_times.and_return(3)
|
47
50
|
end
|
48
51
|
|
49
|
-
it 'should return "
|
50
|
-
helpers.colorize_date(Time.now.to_s).should eq('
|
52
|
+
it 'should return "warning" when a given date is today' do
|
53
|
+
helpers.colorize_date(Time.now.to_s).should eq('warning')
|
51
54
|
end
|
52
55
|
|
53
|
-
it 'should return "
|
56
|
+
it 'should return "error" when a date is before today' do
|
54
57
|
helpers.colorize_date(Time.at(0).to_s).should eq('error')
|
55
58
|
end
|
56
59
|
|
57
|
-
it 'should return "
|
60
|
+
it 'should return "success" when a date is within the specified range' do
|
58
61
|
TaskwarriorWeb::Config.should_receive(:due).any_number_of_times.and_return(5)
|
59
|
-
helpers.colorize_date(Date.tomorrow.to_s).should eq('
|
62
|
+
helpers.colorize_date(Date.tomorrow.to_s).should eq('success')
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context 'with no due setting specified' do
|
67
|
+
before do
|
68
|
+
TaskwarriorWeb::Config.should_receive(:due).any_number_of_times.and_return(nil)
|
60
69
|
end
|
61
70
|
|
71
|
+
it 'should use the default setting of 7 days' do
|
72
|
+
helpers.colorize_date(Date.tomorrow.to_s).should eq('success')
|
73
|
+
end
|
62
74
|
end
|
63
75
|
end
|
64
76
|
|
data/taskwarrior-web.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taskwarrior-web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.14
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-11-22 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
16
|
-
requirement: &
|
16
|
+
requirement: &70303595592080 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70303595592080
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: thin
|
27
|
-
requirement: &
|
27
|
+
requirement: &70303595590940 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70303595590940
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: parseconfig
|
38
|
-
requirement: &
|
38
|
+
requirement: &70303595590320 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70303595590320
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: vegas
|
49
|
-
requirement: &
|
49
|
+
requirement: &70303595589220 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70303595589220
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rinku
|
60
|
-
requirement: &
|
60
|
+
requirement: &70303595588600 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70303595588600
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: versionomy
|
71
|
-
requirement: &
|
71
|
+
requirement: &70303595587840 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70303595587840
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: activesupport
|
82
|
-
requirement: &
|
82
|
+
requirement: &70303595587380 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70303595587380
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: sinatra-simple-navigation
|
93
|
-
requirement: &
|
93
|
+
requirement: &70303595586840 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70303595586840
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: rake
|
104
|
-
requirement: &
|
104
|
+
requirement: &70303595580440 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70303595580440
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: rack-test
|
115
|
-
requirement: &
|
115
|
+
requirement: &70303595579780 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70303595579780
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: rspec
|
126
|
-
requirement: &
|
126
|
+
requirement: &70303595579240 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ! '>='
|
@@ -131,7 +131,7 @@ dependencies:
|
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *70303595579240
|
135
135
|
description: This gem provides a graphical frontend for the Taskwarrior task manager.
|
136
136
|
It is based on Sinatra.
|
137
137
|
email:
|
@@ -219,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
219
219
|
version: '0'
|
220
220
|
segments:
|
221
221
|
- 0
|
222
|
-
hash:
|
222
|
+
hash: -2980071334250491530
|
223
223
|
requirements: []
|
224
224
|
rubyforge_project: taskwarrior-web
|
225
225
|
rubygems_version: 1.8.11
|