taskwarrior-web 1.0.8 → 1.0.9
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/README.md +5 -1
- data/lib/taskwarrior-web/app.rb +14 -41
- data/lib/taskwarrior-web/helpers.rb +1 -1
- data/lib/taskwarrior-web/public/css/datepicker.css +230 -112
- data/lib/taskwarrior-web/public/js/application.js +2 -1
- data/lib/taskwarrior-web/public/js/bootstrap-datepicker.js +570 -135
- data/lib/taskwarrior-web/{command_builders → services/builder}/base.rb +3 -3
- data/lib/taskwarrior-web/{command_builders → services/builder}/v1.rb +1 -2
- data/lib/taskwarrior-web/{command_builders → services/builder}/v2.rb +0 -0
- data/lib/taskwarrior-web/{command_builder.rb → services/builder.rb} +3 -3
- data/lib/taskwarrior-web/{parser → services/parser}/csv.rb +0 -0
- data/lib/taskwarrior-web/{parser → services/parser}/json.rb +0 -0
- data/lib/taskwarrior-web/{parser.rb → services/parser.rb} +2 -2
- data/lib/taskwarrior-web/{runner.rb → services/runner.rb} +0 -0
- data/lib/taskwarrior-web/task.rb +11 -1
- data/lib/taskwarrior-web/views/projects.erb +31 -33
- data/lib/taskwarrior-web/views/task_form.erb +4 -4
- data/lib/taskwarrior-web.rb +3 -3
- data/spec/app/app_spec.rb +68 -1
- data/spec/app/helpers_spec.rb +6 -0
- data/spec/models/task_spec.rb +20 -0
- data/spec/{models/command_builders → services/builder}/base_spec.rb +19 -2
- data/spec/{models/command_builders → services/builder}/v1_spec.rb +7 -4
- data/spec/{models/command_builder_spec.rb → services/builder_spec.rb} +1 -1
- data/spec/services/parser_spec.rb +14 -0
- data/spec/{models → services}/runner_spec.rb +1 -1
- data/taskwarrior-web.gemspec +1 -1
- metadata +39 -39
- data/spec/models/command_builders/v2_spec.rb +0 -0
@@ -22,8 +22,9 @@ module TaskwarriorWeb::CommandBuilder::Base
|
|
22
22
|
def task_command
|
23
23
|
if TASK_COMMANDS.has_key?(@command.to_sym)
|
24
24
|
@command_string = TASK_COMMANDS[@command.to_sym].clone
|
25
|
+
return self
|
25
26
|
else
|
26
|
-
raise InvalidCommandError
|
27
|
+
raise TaskwarriorWeb::CommandBuilder::InvalidCommandError
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
@@ -31,9 +32,8 @@ module TaskwarriorWeb::CommandBuilder::Base
|
|
31
32
|
if @id
|
32
33
|
@command_string.gsub!(':id', "uuid:#{@id.to_s}")
|
33
34
|
return self
|
34
|
-
else
|
35
|
-
raise TaskwarriorWeb::CommandBuilder::MissingTaskIDError
|
36
35
|
end
|
36
|
+
raise TaskwarriorWeb::CommandBuilder::MissingTaskIDError
|
37
37
|
end
|
38
38
|
|
39
39
|
def parse_params
|
@@ -19,9 +19,8 @@ module TaskwarriorWeb::CommandBuilder::V1
|
|
19
19
|
assign_id_from_uuid
|
20
20
|
@command_string.gsub!(':id', @id.to_s)
|
21
21
|
return self
|
22
|
-
else
|
23
|
-
raise TaskwarriorWeb::CommandBuilder::MissingTaskIDError
|
24
22
|
end
|
23
|
+
raise TaskwarriorWeb::CommandBuilder::MissingTaskIDError
|
25
24
|
end
|
26
25
|
|
27
26
|
def assign_id_from_uuid
|
File without changes
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module TaskwarriorWeb::CommandBuilder
|
2
|
-
autoload :Base, 'taskwarrior-web/
|
3
|
-
autoload :V1, 'taskwarrior-web/
|
4
|
-
autoload :V2, 'taskwarrior-web/
|
2
|
+
autoload :Base, 'taskwarrior-web/services/builder/base'
|
3
|
+
autoload :V1, 'taskwarrior-web/services/builder/v1'
|
4
|
+
autoload :V2, 'taskwarrior-web/services/builder/v2'
|
5
5
|
|
6
6
|
class InvalidCommandError < Exception; end
|
7
7
|
class MissingTaskIDError < Exception; end
|
File without changes
|
File without changes
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module TaskwarriorWeb::Parser
|
2
|
-
autoload :Json, 'taskwarrior-web/parser/json'
|
3
|
-
autoload :Csv, 'taskwarrior-web/parser/csv'
|
2
|
+
autoload :Json, 'taskwarrior-web/services/parser/json'
|
3
|
+
autoload :Csv, 'taskwarrior-web/services/parser/csv'
|
4
4
|
|
5
5
|
def self.parse(results)
|
6
6
|
if TaskwarriorWeb::Config.version > '1.9.2'
|
File without changes
|
data/lib/taskwarrior-web/task.rb
CHANGED
@@ -6,7 +6,8 @@ module TaskwarriorWeb
|
|
6
6
|
class Task
|
7
7
|
|
8
8
|
attr_accessor :entry, :project, :priority, :uuid, :description, :status,
|
9
|
-
:due, :start, :end, :tags, :depends, :wait, :annotations
|
9
|
+
:due, :start, :end, :tags, :depends, :wait, :annotations,
|
10
|
+
:errors
|
10
11
|
alias :annotate= :annotations=
|
11
12
|
|
12
13
|
####################################
|
@@ -28,10 +29,19 @@ module TaskwarriorWeb
|
|
28
29
|
end
|
29
30
|
|
30
31
|
# Make sure that the tags are an array.
|
32
|
+
def tags
|
33
|
+
@tags ? @tags : []
|
34
|
+
end
|
31
35
|
def tags=(value)
|
32
36
|
@tags = value.is_a?(String) ? value.split(/\W+/).reject(&:empty?) : value
|
33
37
|
end
|
34
38
|
|
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?
|
43
|
+
end
|
44
|
+
|
35
45
|
def to_hash
|
36
46
|
Hash[instance_variables.map { |var| [var[1..-1].to_sym, instance_variable_get(var)] }]
|
37
47
|
end
|
@@ -13,40 +13,38 @@
|
|
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
|
-
|
17
|
-
<
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
<div class="
|
23
|
-
|
24
|
-
|
25
|
-
<
|
26
|
-
<
|
27
|
-
<
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
<%
|
36
|
-
|
37
|
-
<
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
</tr>
|
43
|
-
<% end %>
|
16
|
+
<section class="project-container" id="project-<%= idify(proj) %>">
|
17
|
+
<h2 class="project <%= doneness == 100 ? 'done' : 'pending' %>">
|
18
|
+
<%= proj %>
|
19
|
+
<a href="/projects/<%= linkify(proj) %>"><i class="icon-circle-arrow-right"></i></a>
|
20
|
+
</h2>
|
21
|
+
<div class="progress progress-striped">
|
22
|
+
<div class="bar" style="width: <%= doneness.to_i %>%;"></div> <%= doneness.to_i %>%
|
23
|
+
</div>
|
24
|
+
<table class="table table-striped table-hover">
|
25
|
+
<thead>
|
26
|
+
<tr>
|
27
|
+
<th>Description</th>
|
28
|
+
<th>Due</th>
|
29
|
+
<th>Tags</th>
|
30
|
+
<th>Priority</th>
|
31
|
+
</tr>
|
32
|
+
</thead>
|
33
|
+
<tbody>
|
34
|
+
<% tasks.each do |task| %>
|
35
|
+
<% if task.status == 'pending' %>
|
36
|
+
<tr class="<%= colorize_date(task.due) %>">
|
37
|
+
<td><%= task.description %></td>
|
38
|
+
<td><%= format_date(task.due) unless task.due.nil? %></td>
|
39
|
+
<td><%= task.tags.join(', ') unless task.tags.nil? %></td>
|
40
|
+
<td><%= task.priority unless task.priority.nil? %></td>
|
41
|
+
</tr>
|
44
42
|
<% end %>
|
45
|
-
|
46
|
-
</
|
47
|
-
</
|
48
|
-
|
49
|
-
|
43
|
+
<% end %>
|
44
|
+
</tbody>
|
45
|
+
</table>
|
46
|
+
</section>
|
47
|
+
<hr class="section-separator" />
|
50
48
|
<% end %>
|
51
49
|
</div>
|
52
50
|
</div>
|
@@ -3,28 +3,28 @@
|
|
3
3
|
<div class="control-group">
|
4
4
|
<label for="task-description" class="control-label">Description</label>
|
5
5
|
<div class="controls">
|
6
|
-
<input type="textfield" id="task-description" name="task[description]" value="<%= @task
|
6
|
+
<input type="textfield" id="task-description" name="task[description]" value="<%= @task.description unless @task.nil? %>" />
|
7
7
|
</div>
|
8
8
|
</div>
|
9
9
|
|
10
10
|
<div class="control-group">
|
11
11
|
<label for="task-project" class="control-label">Project</label>
|
12
12
|
<div class="controls">
|
13
|
-
<input type="textfield" id="task-project" name="task[project]" value="<%= @task
|
13
|
+
<input type="textfield" id="task-project" name="task[project]" value="<%= @task.project unless @task.nil? %>" autocomplete="off" />
|
14
14
|
</div>
|
15
15
|
</div>
|
16
16
|
|
17
17
|
<div class="control-group">
|
18
18
|
<label for="task-due" class="control-label">Due Date</label>
|
19
19
|
<div class="controls">
|
20
|
-
<input class="date-picker" type="textfield" id="task-due" name="task[due]" value="<%= @task
|
20
|
+
<input class="date-picker" type="textfield" id="task-due" name="task[due]" value="<%= @task.due unless @task.nil? %>" data-date-format="<%= @date_format %>" />
|
21
21
|
</div>
|
22
22
|
</div>
|
23
23
|
|
24
24
|
<div class="control-group">
|
25
25
|
<label for="task-tags" class="control-label">Tags</label>
|
26
26
|
<div class="controls">
|
27
|
-
<input type="textfield" id="task-tags" name="task[tags]" value="<%= @task
|
27
|
+
<input type="textfield" id="task-tags" name="task[tags]" value="<%= @task.tags.join(', ') unless @task.nil? %>" autocomplete="off" />
|
28
28
|
<div class="description">Enter tags separated by commas or spaces (e.g. <em>each, word will,be a tag</em>)</div>
|
29
29
|
</div>
|
30
30
|
</div>
|
data/lib/taskwarrior-web.rb
CHANGED
@@ -8,10 +8,10 @@ module TaskwarriorWeb
|
|
8
8
|
autoload :Helpers, 'taskwarrior-web/helpers'
|
9
9
|
autoload :Task, 'taskwarrior-web/task'
|
10
10
|
autoload :Config, 'taskwarrior-web/config'
|
11
|
-
autoload :CommandBuilder, 'taskwarrior-web/command_builder'
|
12
11
|
autoload :Command, 'taskwarrior-web/command'
|
13
|
-
autoload :
|
14
|
-
autoload :
|
12
|
+
autoload :CommandBuilder, 'taskwarrior-web/services/builder'
|
13
|
+
autoload :Runner, 'taskwarrior-web/services/runner'
|
14
|
+
autoload :Parser, 'taskwarrior-web/services/parser'
|
15
15
|
|
16
16
|
class UnrecognizedTaskVersion < Exception; end
|
17
17
|
end
|
data/spec/app/app_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'taskwarrior-web'
|
|
3
3
|
|
4
4
|
set :environment, :test
|
5
5
|
|
6
|
-
describe
|
6
|
+
describe TaskwarriorWeb::App do
|
7
7
|
include Rack::Test::Methods
|
8
8
|
|
9
9
|
def app
|
@@ -37,6 +37,73 @@ describe "My App" do
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
+
describe 'GET /tasks/new' do
|
41
|
+
it 'should display a new task form' do
|
42
|
+
get '/tasks/new'
|
43
|
+
last_response.body.should =~ /form/
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should display a 200 status code' do
|
47
|
+
get '/tasks/new'
|
48
|
+
last_response.should be_ok
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe 'POST /tasks' do
|
53
|
+
context 'given a valid task' do
|
54
|
+
it 'should save the task' do
|
55
|
+
task = TaskwarriorWeb::Task.new({:description => 'Test task'})
|
56
|
+
task.should_receive(:save!).once
|
57
|
+
TaskwarriorWeb::Task.should_receive(:new).once.and_return(task)
|
58
|
+
post '/tasks', :task => {:description => 'Test task'}
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'should redirect to the task listing page' do
|
62
|
+
task = TaskwarriorWeb::Task.new
|
63
|
+
task.should_receive(:is_valid?).and_return(true)
|
64
|
+
task.should_receive(:save!)
|
65
|
+
TaskwarriorWeb::Task.should_receive(:new).once.and_return(task)
|
66
|
+
post '/tasks', :task => {}
|
67
|
+
follow_redirect!
|
68
|
+
last_request.url.should =~ /\/tasks$/
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'given an invalid task' do
|
73
|
+
it 'should not save the task' do
|
74
|
+
task = TaskwarriorWeb::Task.new
|
75
|
+
task.should_not_receive(:save!)
|
76
|
+
TaskwarriorWeb::Task.should_receive(:new).once.and_return(task)
|
77
|
+
post '/tasks', :task => {}
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'should render the task form' do
|
81
|
+
task = TaskwarriorWeb::Task.new({:tags => 'tag1, tag2'})
|
82
|
+
TaskwarriorWeb::Task.should_receive(:new).once.and_return(task)
|
83
|
+
post '/tasks', :task => {}
|
84
|
+
last_response.body.should =~ /form/
|
85
|
+
last_response.body.should =~ /tag1, tag2/
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'should display errors messages' do
|
89
|
+
task = TaskwarriorWeb::Task.new
|
90
|
+
TaskwarriorWeb::Task.should_receive(:new).once.and_return(task)
|
91
|
+
post '/tasks', :task => {}
|
92
|
+
last_response.body.should =~ /You must provide a description/
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe 'GET /ajax/projects' do
|
98
|
+
it 'should return a list of projects as JSON' do
|
99
|
+
command = TaskwarriorWeb::Command.new(:projects)
|
100
|
+
command.should_receive(:run).and_return("Project One\nProject Two")
|
101
|
+
TaskwarriorWeb::Command.should_receive(:new).with(:projects).and_return(command)
|
102
|
+
get '/ajax/projects'
|
103
|
+
last_response.body.should eq(['Project One', 'Project Two'].to_json)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
40
107
|
describe 'GET /ajax/count' do
|
41
108
|
it 'should return the current pending task count' do
|
42
109
|
TaskwarriorWeb::Task.should_receive(:count).and_return(15)
|
data/spec/app/helpers_spec.rb
CHANGED
data/spec/models/task_spec.rb
CHANGED
@@ -18,6 +18,26 @@ describe TaskwarriorWeb::Task do
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
describe '#save!' do
|
22
|
+
it 'should save the task' do
|
23
|
+
task = TaskwarriorWeb::Task.new
|
24
|
+
command = TaskwarriorWeb::Command.new(:add)
|
25
|
+
command.should_receive(:run).once
|
26
|
+
TaskwarriorWeb::Command.should_receive(:new).once.with(:add, nil, task.to_hash).and_return(command)
|
27
|
+
task.save!
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#complete!' do
|
32
|
+
it 'should complete the task' do
|
33
|
+
task = TaskwarriorWeb::Task.new({:uuid => 15})
|
34
|
+
command = TaskwarriorWeb::Command.new(:complete)
|
35
|
+
command.should_receive(:run).once
|
36
|
+
TaskwarriorWeb::Command.should_receive(:new).once.with(:complete, 15).and_return(command)
|
37
|
+
task.complete!
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
21
41
|
describe '.query' do
|
22
42
|
before do
|
23
43
|
@command = TaskwarriorWeb::Command.new(:query)
|
@@ -2,11 +2,28 @@ require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
2
|
require 'taskwarrior-web/command'
|
3
3
|
|
4
4
|
describe TaskwarriorWeb::CommandBuilder::Base do
|
5
|
+
describe '#task_command' do
|
6
|
+
it 'should throw and exception for invalid commands' do
|
7
|
+
command = TaskwarriorWeb::Command.new(:does_not_exist)
|
8
|
+
expect { command.task_command }.to raise_error(TaskwarriorWeb::CommandBuilder::InvalidCommandError)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
5
12
|
describe '#substitute_parts' do
|
6
13
|
before do
|
7
14
|
@command = TaskwarriorWeb::Command.new(:complete, 34588)
|
8
15
|
end
|
9
16
|
|
17
|
+
it 'should insert the task id into the command' do
|
18
|
+
@command.task_command.substitute_parts
|
19
|
+
@command.command_string.should =~ /uuid:34588/
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should return itself' do
|
23
|
+
@command.task_command
|
24
|
+
@command.task_command.substitute_parts.should eq(@command)
|
25
|
+
end
|
26
|
+
|
10
27
|
it 'should throw an error if the command has no task ID' do
|
11
28
|
@command.id = nil
|
12
29
|
expect { @command.substitute_parts }.to raise_error(TaskwarriorWeb::CommandBuilder::MissingTaskIDError)
|
@@ -15,9 +32,9 @@ describe TaskwarriorWeb::CommandBuilder::Base do
|
|
15
32
|
|
16
33
|
describe '#parse_params' do
|
17
34
|
it 'should create a string from the passed paramters' do
|
18
|
-
command = TaskwarriorWeb::Command.new(:query, nil, :test => 14, :none => :none, :hello => :hi)
|
35
|
+
command = TaskwarriorWeb::Command.new(:query, nil, :test => 14, :none => :none, :hello => :hi, :array => [:first, :second])
|
19
36
|
command.parse_params
|
20
|
-
command.params.should eq(' test:\"14\" none:\"none\" hello:\"hi\"')
|
37
|
+
command.params.should eq(' test:\"14\" none:\"none\" hello:\"hi\" array:\"first\" array:\"second\"')
|
21
38
|
end
|
22
39
|
|
23
40
|
it 'should prefix tags with the tag.indicator if specified' do
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
-
require 'taskwarrior-web/
|
2
|
+
require 'taskwarrior-web/services/builder/v1'
|
3
3
|
require 'taskwarrior-web/command'
|
4
4
|
require 'ostruct'
|
5
5
|
|
@@ -14,9 +14,12 @@ describe TaskwarriorWeb::CommandBuilder::V1 do
|
|
14
14
|
|
15
15
|
it 'should replace the :id string with the given task ID' do
|
16
16
|
TaskwarriorWeb::Task.should_receive(:query).and_return([OpenStruct.new(:uuid => 34588)])
|
17
|
-
@command.task_command
|
18
|
-
|
19
|
-
|
17
|
+
@command.task_command.substitute_parts.command_string.should eq('1 done')
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should throw an error if there is no id' do
|
21
|
+
command = TaskwarriorWeb::Command.new(:complete)
|
22
|
+
expect { command.substitute_parts }.to raise_error(TaskwarriorWeb::CommandBuilder::MissingTaskIDError)
|
20
23
|
end
|
21
24
|
end
|
22
25
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
require 'taskwarrior-web/services/parser'
|
3
|
+
|
4
|
+
describe TaskwarriorWeb::Parser do
|
5
|
+
describe '.parse' do
|
6
|
+
context 'when the task version is <= 1.9.2' do
|
7
|
+
it 'should parse output as CSV' do
|
8
|
+
TaskwarriorWeb::Config.should_receive(:version).and_return('1.0.0')
|
9
|
+
TaskwarriorWeb::Parser::Csv.should_receive(:parse).once.with('hello')
|
10
|
+
TaskwarriorWeb::Parser.parse('hello')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
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.9
|
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-
|
12
|
+
date: 2012-11-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
16
|
-
requirement: &
|
16
|
+
requirement: &70214969400280 !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: *70214969400280
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: thin
|
27
|
-
requirement: &
|
27
|
+
requirement: &70214969399720 !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: *70214969399720
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: parseconfig
|
38
|
-
requirement: &
|
38
|
+
requirement: &70214969399240 !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: *70214969399240
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: vegas
|
49
|
-
requirement: &
|
49
|
+
requirement: &70214969398760 !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: *70214969398760
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rinku
|
60
|
-
requirement: &
|
60
|
+
requirement: &70214969398260 !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: *70214969398260
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: versionomy
|
71
|
-
requirement: &
|
71
|
+
requirement: &70214969397720 !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: *70214969397720
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rake
|
82
|
-
requirement: &
|
82
|
+
requirement: &70214969397240 !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: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70214969397240
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rack-test
|
93
|
-
requirement: &
|
93
|
+
requirement: &70214969396600 !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: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70214969396600
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: rspec
|
104
|
-
requirement: &
|
104
|
+
requirement: &70214969395900 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70214969395900
|
113
113
|
description: This gem provides a graphical frontend for the Taskwarrior task manager.
|
114
114
|
It is based on Sinatra.
|
115
115
|
email:
|
@@ -132,15 +132,8 @@ files:
|
|
132
132
|
- lib/taskwarrior-web.rb
|
133
133
|
- lib/taskwarrior-web/app.rb
|
134
134
|
- lib/taskwarrior-web/command.rb
|
135
|
-
- lib/taskwarrior-web/command_builder.rb
|
136
|
-
- lib/taskwarrior-web/command_builders/base.rb
|
137
|
-
- lib/taskwarrior-web/command_builders/v1.rb
|
138
|
-
- lib/taskwarrior-web/command_builders/v2.rb
|
139
135
|
- lib/taskwarrior-web/config.rb
|
140
136
|
- lib/taskwarrior-web/helpers.rb
|
141
|
-
- lib/taskwarrior-web/parser.rb
|
142
|
-
- lib/taskwarrior-web/parser/csv.rb
|
143
|
-
- lib/taskwarrior-web/parser/json.rb
|
144
137
|
- lib/taskwarrior-web/public/css/bootstrap-responsive.min.css
|
145
138
|
- lib/taskwarrior-web/public/css/bootstrap.min.css
|
146
139
|
- lib/taskwarrior-web/public/css/datepicker.css
|
@@ -153,7 +146,14 @@ files:
|
|
153
146
|
- lib/taskwarrior-web/public/js/bootstrap-datepicker.js
|
154
147
|
- lib/taskwarrior-web/public/js/bootstrap.js
|
155
148
|
- lib/taskwarrior-web/public/js/jquery.min.js
|
156
|
-
- lib/taskwarrior-web/
|
149
|
+
- lib/taskwarrior-web/services/builder.rb
|
150
|
+
- lib/taskwarrior-web/services/builder/base.rb
|
151
|
+
- lib/taskwarrior-web/services/builder/v1.rb
|
152
|
+
- lib/taskwarrior-web/services/builder/v2.rb
|
153
|
+
- lib/taskwarrior-web/services/parser.rb
|
154
|
+
- lib/taskwarrior-web/services/parser/csv.rb
|
155
|
+
- lib/taskwarrior-web/services/parser/json.rb
|
156
|
+
- lib/taskwarrior-web/services/runner.rb
|
157
157
|
- lib/taskwarrior-web/task.rb
|
158
158
|
- lib/taskwarrior-web/views/404.erb
|
159
159
|
- lib/taskwarrior-web/views/_subnav.erb
|
@@ -166,14 +166,14 @@ files:
|
|
166
166
|
- spec/app/app_spec.rb
|
167
167
|
- spec/app/helpers_spec.rb
|
168
168
|
- spec/files/taskrc
|
169
|
-
- spec/models/command_builder_spec.rb
|
170
|
-
- spec/models/command_builders/base_spec.rb
|
171
|
-
- spec/models/command_builders/v1_spec.rb
|
172
|
-
- spec/models/command_builders/v2_spec.rb
|
173
169
|
- spec/models/command_spec.rb
|
174
170
|
- spec/models/config_spec.rb
|
175
|
-
- spec/models/runner_spec.rb
|
176
171
|
- spec/models/task_spec.rb
|
172
|
+
- spec/services/builder/base_spec.rb
|
173
|
+
- spec/services/builder/v1_spec.rb
|
174
|
+
- spec/services/builder_spec.rb
|
175
|
+
- spec/services/parser_spec.rb
|
176
|
+
- spec/services/runner_spec.rb
|
177
177
|
- spec/spec_helper.rb
|
178
178
|
- taskwarrior-web.gemspec
|
179
179
|
homepage: http://github.com/theunraveler/taskwarrior-web
|
@@ -196,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
196
|
version: '0'
|
197
197
|
segments:
|
198
198
|
- 0
|
199
|
-
hash: -
|
199
|
+
hash: -561964061204943881
|
200
200
|
requirements: []
|
201
201
|
rubyforge_project: taskwarrior-web
|
202
202
|
rubygems_version: 1.8.11
|
@@ -207,12 +207,12 @@ test_files:
|
|
207
207
|
- spec/app/app_spec.rb
|
208
208
|
- spec/app/helpers_spec.rb
|
209
209
|
- spec/files/taskrc
|
210
|
-
- spec/models/command_builder_spec.rb
|
211
|
-
- spec/models/command_builders/base_spec.rb
|
212
|
-
- spec/models/command_builders/v1_spec.rb
|
213
|
-
- spec/models/command_builders/v2_spec.rb
|
214
210
|
- spec/models/command_spec.rb
|
215
211
|
- spec/models/config_spec.rb
|
216
|
-
- spec/models/runner_spec.rb
|
217
212
|
- spec/models/task_spec.rb
|
213
|
+
- spec/services/builder/base_spec.rb
|
214
|
+
- spec/services/builder/v1_spec.rb
|
215
|
+
- spec/services/builder_spec.rb
|
216
|
+
- spec/services/parser_spec.rb
|
217
|
+
- spec/services/runner_spec.rb
|
218
218
|
- spec/spec_helper.rb
|