taskwarrior-web 1.0.9 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,12 @@
1
+ ## v1.0.10 (11/20/12)
2
+
3
+ * Adding ability to specify a filter for the task listing. See [the wiki][1]
4
+ for more information.
5
+ * Added the SimpleNavigation library for navigation, and moved a bunch of stuff
6
+ to ActiveSupport.
7
+
8
+ [1]: http://github.com/theunraveler/taskwarrior-web/wiki/Filters-for-the-task-listing-page
9
+
1
10
  ## v1.0.9 (11/19/12)
2
11
 
3
12
  * Fixed bug on projects listing page where projects with no pending tasks were
@@ -2,13 +2,15 @@ $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
3
 
4
4
  require 'rubygems'
5
+ require 'active_support/core_ext/object/blank'
6
+ require 'active_support/core_ext/string/inflections'
5
7
 
6
8
  module TaskwarriorWeb
7
9
  autoload :App, 'taskwarrior-web/app'
8
10
  autoload :Helpers, 'taskwarrior-web/helpers'
9
- autoload :Task, 'taskwarrior-web/task'
10
- autoload :Config, 'taskwarrior-web/config'
11
- autoload :Command, 'taskwarrior-web/command'
11
+ autoload :Task, 'taskwarrior-web/model/task'
12
+ autoload :Config, 'taskwarrior-web/model/config'
13
+ autoload :Command, 'taskwarrior-web/model/command'
12
14
  autoload :CommandBuilder, 'taskwarrior-web/services/builder'
13
15
  autoload :Runner, 'taskwarrior-web/services/runner'
14
16
  autoload :Parser, 'taskwarrior-web/services/parser'
@@ -5,6 +5,7 @@ require 'erb'
5
5
  require 'time'
6
6
  require 'rinku'
7
7
  require 'digest'
8
+ require 'sinatra/simple-navigation'
8
9
 
9
10
  class TaskwarriorWeb::App < Sinatra::Base
10
11
  autoload :Helpers, 'taskwarrior-web/helpers'
@@ -14,6 +15,10 @@ class TaskwarriorWeb::App < Sinatra::Base
14
15
  set :app_file, __FILE__
15
16
  set :public_folder, File.dirname(__FILE__) + '/public'
16
17
  set :views, File.dirname(__FILE__) + '/views'
18
+
19
+ # Helpers
20
+ helpers Helpers
21
+ register Sinatra::SimpleNavigation
17
22
 
18
23
  def protected!
19
24
  response['WWW-Authenticate'] = %(Basic realm="Taskworrior Web") and throw(:halt, [401, "Not authorized\n"]) and return unless authorized?
@@ -31,9 +36,6 @@ class TaskwarriorWeb::App < Sinatra::Base
31
36
  protected! if TaskwarriorWeb::Config.property('task-web.user')
32
37
  end
33
38
 
34
- # Helpers
35
- helpers Helpers
36
-
37
39
  # Redirects
38
40
  get '/' do
39
41
  redirect '/tasks/pending'
@@ -46,8 +48,12 @@ class TaskwarriorWeb::App < Sinatra::Base
46
48
  get '/tasks/:status/?' do
47
49
  pass unless ['pending', 'waiting', 'completed', 'deleted'].include?(params[:status])
48
50
  @title = "Tasks"
49
- @subnav = subnav('tasks')
50
- @tasks = TaskwarriorWeb::Task.find_by_status(params[:status]).sort_by! { |x| [x.priority.nil?.to_s, x.priority.to_s, x.due.nil?.to_s, x.due.to_s, x.project.to_s] }
51
+ if params[:status] == 'pending' && filter = TaskwarriorWeb::Config.property('task-web.filter')
52
+ @tasks = TaskwarriorWeb::Task.query(:description => filter)
53
+ else
54
+ @tasks = TaskwarriorWeb::Task.find_by_status(params[:status])
55
+ end
56
+ @tasks.sort_by! { |x| [x.priority.nil?.to_s, x.priority.to_s, x.due.nil?.to_s, x.due.to_s, x.project.to_s] }
51
57
  erb :listing
52
58
  end
53
59
 
@@ -65,7 +71,7 @@ class TaskwarriorWeb::App < Sinatra::Base
65
71
  redirect '/tasks'
66
72
  end
67
73
 
68
- @messages = @task.errors.map { |error| { :severity => 'alert-error', :message => error } }
74
+ @messages = @task._errors.map { |error| { :severity => 'alert-error', :message => error } }
69
75
  call! env.merge('REQUEST_METHOD' => 'GET', 'PATH_INFO' => '/tasks/new')
70
76
  end
71
77
 
@@ -76,7 +82,6 @@ class TaskwarriorWeb::App < Sinatra::Base
76
82
 
77
83
  get '/projects/overview/?' do
78
84
  @title = 'Projects'
79
- @subnav = subnav('projects')
80
85
  @tasks = TaskwarriorWeb::Task.query('status.not' => :deleted, 'project.not' => '')
81
86
  .sort_by! { |x| [x.priority.nil?.to_s, x.priority.to_s, x.due.nil?.to_s, x.due.to_s] }
82
87
  .group_by { |x| x.project.to_s }
@@ -85,7 +90,6 @@ class TaskwarriorWeb::App < Sinatra::Base
85
90
  end
86
91
 
87
92
  get '/projects/:name/?' do
88
- @subnav = subnav('projects')
89
93
  subbed = params[:name].gsub('--', '.')
90
94
  @tasks = TaskwarriorWeb::Task.query('status.not' => 'deleted', :project => subbed)
91
95
  .sort_by! { |x| [x.priority.nil?.to_s, x.priority.to_s, x.due.nil?.to_s, x.due.to_s] }
@@ -99,7 +103,12 @@ class TaskwarriorWeb::App < Sinatra::Base
99
103
  end
100
104
 
101
105
  get '/ajax/count/?' do
102
- TaskwarriorWeb::Task.count(:status => :pending).to_s
106
+ if filter = TaskwarriorWeb::Config.property('task-web.filter')
107
+ total = TaskwarriorWeb::Task.query(:description => filter).count
108
+ else
109
+ total = TaskwarriorWeb::Task.count(:status => :pending)
110
+ end
111
+ total.to_s
103
112
  end
104
113
 
105
114
  post '/ajax/task-complete/:id/?' do
@@ -0,0 +1,18 @@
1
+ SimpleNavigation::Configuration.run do |navigation|
2
+ navigation.selected_class = 'active'
3
+
4
+ navigation.items do |primary|
5
+ primary.dom_class = 'nav'
6
+ primary.item :tasks, 'Tasks', '/tasks' do |tasks|
7
+ tasks.dom_class = 'nav nav-pills'
8
+ tasks.item :pending, "Pending <span class=\"badge\"></span>", '/tasks/pending'
9
+ tasks.item :waiting, 'Waiting', '/tasks/waiting'
10
+ tasks.item :completed, 'Completed', '/tasks/completed'
11
+ tasks.item :deleted, 'Deleted', '/tasks/deleted'
12
+ end
13
+ primary.item :projects, 'Projects', '/projects' do |projects|
14
+ projects.dom_class = 'nav nav-pills'
15
+ projects.item :overview, 'Overview', '/projects/overview'
16
+ end
17
+ end
18
+ end
@@ -23,30 +23,7 @@ module TaskwarriorWeb::App::Helpers
23
23
  item.gsub('.', '--')
24
24
  end
25
25
 
26
- def idify(item)
27
- return if item.nil?
28
- linkify(item).gsub(' ', '-').gsub("'", '').downcase
29
- end
30
-
31
26
  def auto_link(text)
32
27
  Rinku.auto_link(text, :all, 'target="_blank"')
33
28
  end
34
-
35
- def subnav(type)
36
- case type
37
- when 'tasks'
38
- { '/tasks/pending' => "Pending <span class=\"badge\">#{TaskwarriorWeb::Task.count(:status => :pending)}</span>",
39
- '/tasks/waiting' => "Waiting",
40
- '/tasks/completed' => "Completed",
41
- '/tasks/deleted' => 'Deleted'
42
- }
43
- when 'projects'
44
- {
45
- '/projects/overview' => 'Overview'
46
- }
47
- else
48
- { }
49
- end
50
- end
51
-
52
29
  end
@@ -7,7 +7,7 @@ module TaskwarriorWeb
7
7
 
8
8
  attr_accessor :entry, :project, :priority, :uuid, :description, :status,
9
9
  :due, :start, :end, :tags, :depends, :wait, :annotations,
10
- :errors
10
+ :_errors
11
11
  alias :annotate= :annotations=
12
12
 
13
13
  ####################################
@@ -17,7 +17,10 @@ module TaskwarriorWeb
17
17
  def initialize(attributes = {})
18
18
  attributes.each do |attr, value|
19
19
  send("#{attr}=", value) if respond_to?(attr.to_sym)
20
- end
20
+ end
21
+
22
+ @_errors = []
23
+ @tags = [] if @tags.nil?
21
24
  end
22
25
 
23
26
  def save!
@@ -29,21 +32,17 @@ module TaskwarriorWeb
29
32
  end
30
33
 
31
34
  # Make sure that the tags are an array.
32
- def tags
33
- @tags ? @tags : []
34
- end
35
35
  def tags=(value)
36
36
  @tags = value.is_a?(String) ? value.split(/\W+/).reject(&:empty?) : value
37
37
  end
38
38
 
39
39
  def is_valid?
40
- self.errors = []
41
- self.errors << 'You must provide a description' if self.description.nil? || self.description.empty?
42
- self.errors.empty?
40
+ @_errors << 'You must provide a description' if self.description.blank?
41
+ @_errors.empty?
43
42
  end
44
43
 
45
44
  def to_hash
46
- Hash[instance_variables.map { |var| [var[1..-1].to_sym, instance_variable_get(var)] }]
45
+ Hash[instance_variables.select { |var| !var.to_s.start_with?('@_') }.map { |var| [var[1..-1].to_sym, instance_variable_get(var)] }]
47
46
  end
48
47
 
49
48
  ##################################
@@ -5,6 +5,7 @@ $(document).ready(function() {
5
5
 
6
6
  // Fluid-specific stuff.
7
7
  refreshDockBadge();
8
+ refreshSubnavCount();
8
9
 
9
10
  // Hack to account for navbar when clicking anchor links.
10
11
  $('#sidebar .nav li a').click(function(event) {
@@ -1,13 +1,7 @@
1
1
  <div class="page-header" id="subnav-bar">
2
2
  <h1 class="pull-left"><%= @title %></h1>
3
- <% if @subnav %>
4
3
  <nav class="subnav pull-right">
5
- <ul class="nav nav-pills">
6
- <% @subnav.each do |path, text| %>
7
- <li<%= ' class="active"' if @current_page.index(path) == 0 %>><a href="<%= path %>"><%= text %></a></li>
8
- <% end %>
9
- </ul>
10
- <% end %>
4
+ <%= render_navigation :level => 2 %>
11
5
  </nav>
12
6
  <div class="clear"></div>
13
7
  </div>
@@ -1,12 +1,7 @@
1
1
  <div class="navbar navbar-fixed-top">
2
2
  <div class="navbar-inner"><div class="container">
3
3
  <a href="/" class="brand">Taskwarrior Web</a>
4
- <% tabs = { '/tasks' => 'Tasks', '/projects' => 'Projects' } %>
5
- <ul class="nav">
6
- <% tabs.each do |path, text| %>
7
- <li<%= ' class="active"' if @current_page.index(path) == 0 %>><a href="<%= path %>"><%= text %></a></li>
8
- <% end %>
9
- </ul>
4
+ <%= render_navigation :level => 1 %>
10
5
  <ul class="nav pull-right">
11
6
  <li>
12
7
  <a href="/tasks/new">
@@ -3,7 +3,7 @@
3
3
  <ul class="nav nav-list" data-spy="affix" data-offset-top="125">
4
4
  <% @tasks.keys.each do |project| %>
5
5
  <li>
6
- <a href="#project-<%= idify(project) %>"><i class="icon-chevron-right"></i> <%= project %></a>
6
+ <a href="#project-<%= project.parameterize %>"><i class="icon-chevron-right"></i> <%= project %></a>
7
7
  </li>
8
8
  <% end %>
9
9
  </ul>
@@ -13,7 +13,7 @@
13
13
  <div id="listing">
14
14
  <% @tasks.each do |proj, tasks| %>
15
15
  <% doneness = (tasks.select { |t| t.status == 'completed' }.count.to_f / tasks.count.to_f) * 100 %>
16
- <section class="project-container" id="project-<%= idify(proj) %>">
16
+ <section class="project-container" id="project-<%= proj.parameterize %>">
17
17
  <h2 class="project <%= doneness == 100 ? 'done' : 'pending' %>">
18
18
  <%= proj %>&nbsp;
19
19
  <a href="/projects/<%= linkify(proj) %>"><i class="icon-circle-arrow-right"></i></a>
@@ -12,6 +12,7 @@ describe TaskwarriorWeb::App do
12
12
 
13
13
  before do
14
14
  TaskwarriorWeb::Config.should_receive(:property).with('task-web.user').any_number_of_times.and_return(nil)
15
+ TaskwarriorWeb::Config.should_receive(:property).with('task-web.filter').any_number_of_times.and_return(nil)
15
16
  TaskwarriorWeb::Runner.should_receive(:run).any_number_of_times.and_return('{}')
16
17
  end
17
18
 
@@ -61,11 +61,5 @@ describe TaskwarriorWeb::App::Helpers do
61
61
  helpers.auto_link('hello')
62
62
  end
63
63
  end
64
-
65
- describe '#subnav' do
66
- it 'should be empty for an unrecognized type' do
67
- helpers.subnav('something').should be_empty
68
- end
69
- end
70
64
  end
71
65
 
@@ -1,5 +1,5 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper'
2
- require 'taskwarrior-web/command'
2
+ require 'taskwarrior-web/model/command'
3
3
 
4
4
  describe TaskwarriorWeb::Command do
5
5
  describe '#initialize' do
@@ -1,5 +1,5 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper'
2
- require 'taskwarrior-web/config'
2
+ require 'taskwarrior-web/model/config'
3
3
  require 'ostruct'
4
4
 
5
5
  describe TaskwarriorWeb::Config do
@@ -1,5 +1,5 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper'
2
- require 'taskwarrior-web/task'
2
+ require 'taskwarrior-web/model/task'
3
3
 
4
4
  describe TaskwarriorWeb::Task do
5
5
  RSpec::Mocks::setup(TaskwarriorWeb::Runner)
@@ -1,5 +1,5 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper'
2
- require 'taskwarrior-web/command'
2
+ require 'taskwarrior-web/model/command'
3
3
 
4
4
  describe TaskwarriorWeb::CommandBuilder::Base do
5
5
  describe '#task_command' do
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper'
2
2
  require 'taskwarrior-web/services/builder/v1'
3
- require 'taskwarrior-web/command'
3
+ require 'taskwarrior-web/model/command'
4
4
  require 'ostruct'
5
5
 
6
6
  describe TaskwarriorWeb::CommandBuilder::V1 do
@@ -1,6 +1,7 @@
1
1
  require 'sinatra'
2
2
  require 'rack/test'
3
3
  require 'rspec'
4
+ require 'simple_navigation'
4
5
 
5
6
  # Simplecov
6
7
  require 'simplecov'
@@ -16,3 +17,5 @@ RSpec.configure do |config|
16
17
  config.mock_with :rspec
17
18
  config.include(RSpec::Mocks::Methods)
18
19
  end
20
+
21
+ SimpleNavigation.config_file_paths << File.dirname(__FILE__) + '/../lib/taskwarrior-web/config'
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "taskwarrior-web"
6
- s.version = '1.0.9'
6
+ s.version = '1.0.10'
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Jake Bell"]
9
9
  s.email = ["jake@theunraveler.com"]
@@ -21,6 +21,8 @@ Gem::Specification.new do |s|
21
21
  s.add_dependency('vegas')
22
22
  s.add_dependency('rinku')
23
23
  s.add_dependency('versionomy')
24
+ s.add_dependency('activesupport')
25
+ s.add_dependency('sinatra-simple-navigation')
24
26
 
25
27
  s.add_development_dependency('rake')
26
28
  s.add_development_dependency('rack-test')
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.9
4
+ version: 1.0.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-19 00:00:00.000000000 Z
12
+ date: 2012-11-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
16
- requirement: &70214969400280 !ruby/object:Gem::Requirement
16
+ requirement: &70364966614320 !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: *70214969400280
24
+ version_requirements: *70364966614320
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: thin
27
- requirement: &70214969399720 !ruby/object:Gem::Requirement
27
+ requirement: &70364966613720 !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: *70214969399720
35
+ version_requirements: *70364966613720
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: parseconfig
38
- requirement: &70214969399240 !ruby/object:Gem::Requirement
38
+ requirement: &70364966613280 !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: *70214969399240
46
+ version_requirements: *70364966613280
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: vegas
49
- requirement: &70214969398760 !ruby/object:Gem::Requirement
49
+ requirement: &70364966612800 !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: *70214969398760
57
+ version_requirements: *70364966612800
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rinku
60
- requirement: &70214969398260 !ruby/object:Gem::Requirement
60
+ requirement: &70364966612360 !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: *70214969398260
68
+ version_requirements: *70364966612360
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: versionomy
71
- requirement: &70214969397720 !ruby/object:Gem::Requirement
71
+ requirement: &70364966611800 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,32 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70214969397720
79
+ version_requirements: *70364966611800
80
+ - !ruby/object:Gem::Dependency
81
+ name: activesupport
82
+ requirement: &70364966611080 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: *70364966611080
91
+ - !ruby/object:Gem::Dependency
92
+ name: sinatra-simple-navigation
93
+ requirement: &70364966610460 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: *70364966610460
80
102
  - !ruby/object:Gem::Dependency
81
103
  name: rake
82
- requirement: &70214969397240 !ruby/object:Gem::Requirement
104
+ requirement: &70364966609880 !ruby/object:Gem::Requirement
83
105
  none: false
84
106
  requirements:
85
107
  - - ! '>='
@@ -87,10 +109,10 @@ dependencies:
87
109
  version: '0'
88
110
  type: :development
89
111
  prerelease: false
90
- version_requirements: *70214969397240
112
+ version_requirements: *70364966609880
91
113
  - !ruby/object:Gem::Dependency
92
114
  name: rack-test
93
- requirement: &70214969396600 !ruby/object:Gem::Requirement
115
+ requirement: &70364966609200 !ruby/object:Gem::Requirement
94
116
  none: false
95
117
  requirements:
96
118
  - - ! '>='
@@ -98,10 +120,10 @@ dependencies:
98
120
  version: '0'
99
121
  type: :development
100
122
  prerelease: false
101
- version_requirements: *70214969396600
123
+ version_requirements: *70364966609200
102
124
  - !ruby/object:Gem::Dependency
103
125
  name: rspec
104
- requirement: &70214969395900 !ruby/object:Gem::Requirement
126
+ requirement: &70364966608700 !ruby/object:Gem::Requirement
105
127
  none: false
106
128
  requirements:
107
129
  - - ! '>='
@@ -109,7 +131,7 @@ dependencies:
109
131
  version: '0'
110
132
  type: :development
111
133
  prerelease: false
112
- version_requirements: *70214969395900
134
+ version_requirements: *70364966608700
113
135
  description: This gem provides a graphical frontend for the Taskwarrior task manager.
114
136
  It is based on Sinatra.
115
137
  email:
@@ -131,9 +153,11 @@ files:
131
153
  - config.ru
132
154
  - lib/taskwarrior-web.rb
133
155
  - lib/taskwarrior-web/app.rb
134
- - lib/taskwarrior-web/command.rb
135
- - lib/taskwarrior-web/config.rb
156
+ - lib/taskwarrior-web/config/navigation.rb
136
157
  - lib/taskwarrior-web/helpers.rb
158
+ - lib/taskwarrior-web/model/command.rb
159
+ - lib/taskwarrior-web/model/config.rb
160
+ - lib/taskwarrior-web/model/task.rb
137
161
  - lib/taskwarrior-web/public/css/bootstrap-responsive.min.css
138
162
  - lib/taskwarrior-web/public/css/bootstrap.min.css
139
163
  - lib/taskwarrior-web/public/css/datepicker.css
@@ -154,7 +178,6 @@ files:
154
178
  - lib/taskwarrior-web/services/parser/csv.rb
155
179
  - lib/taskwarrior-web/services/parser/json.rb
156
180
  - lib/taskwarrior-web/services/runner.rb
157
- - lib/taskwarrior-web/task.rb
158
181
  - lib/taskwarrior-web/views/404.erb
159
182
  - lib/taskwarrior-web/views/_subnav.erb
160
183
  - lib/taskwarrior-web/views/_topbar.erb
@@ -166,9 +189,9 @@ files:
166
189
  - spec/app/app_spec.rb
167
190
  - spec/app/helpers_spec.rb
168
191
  - spec/files/taskrc
169
- - spec/models/command_spec.rb
170
- - spec/models/config_spec.rb
171
- - spec/models/task_spec.rb
192
+ - spec/model/command_spec.rb
193
+ - spec/model/config_spec.rb
194
+ - spec/model/task_spec.rb
172
195
  - spec/services/builder/base_spec.rb
173
196
  - spec/services/builder/v1_spec.rb
174
197
  - spec/services/builder_spec.rb
@@ -196,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
196
219
  version: '0'
197
220
  segments:
198
221
  - 0
199
- hash: -561964061204943881
222
+ hash: 1101487011083302650
200
223
  requirements: []
201
224
  rubyforge_project: taskwarrior-web
202
225
  rubygems_version: 1.8.11
@@ -207,9 +230,9 @@ test_files:
207
230
  - spec/app/app_spec.rb
208
231
  - spec/app/helpers_spec.rb
209
232
  - spec/files/taskrc
210
- - spec/models/command_spec.rb
211
- - spec/models/config_spec.rb
212
- - spec/models/task_spec.rb
233
+ - spec/model/command_spec.rb
234
+ - spec/model/config_spec.rb
235
+ - spec/model/task_spec.rb
213
236
  - spec/services/builder/base_spec.rb
214
237
  - spec/services/builder/v1_spec.rb
215
238
  - spec/services/builder_spec.rb