gyunyu 0.1.0 → 0.2.0

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.
@@ -7,14 +7,60 @@ simple RTM app for CLI made with Ruby
7
7
  * Ruby ( tested with Ruby 1.9.2 )
8
8
  * read permission of RTM API
9
9
 
10
+ == Install
11
+
12
+ $ gem install gyunyu
13
+
14
+ == How to use
15
+
16
+ $ gyunyu
17
+ Usage: gyunyu [options]
18
+ -l, --list LIST
19
+ -f, --filter FILTER
20
+ -d, --field FIELD
21
+ -o, --format FORMAT
22
+ $ gyunyu -f 'dueWithin:"1 week"'
23
+ list,task_id,name,due
24
+ 家,227119591,可燃ゴミ,2012-01-10 08:00:00 +0900
25
+ 家,226594887,可燃ゴミ,2012-01-06 08:00:00 +0900
26
+ 家,226034564,資源回収ゴミ,2012-01-08 00:00:00 +0900
27
+ ...
28
+
29
+ == Filter Howto
30
+
31
+ $ gyunyu -l 仕事 -l 個人
32
+ # => list:仕事 and list:個人
33
+
34
+ $ gyunyu -l 仕事 -f due:today
35
+ # => list:仕事 and due:today
36
+
37
+ On 2012-01-05,
38
+
39
+ $ gyunyu -l 個人 -c today
40
+ # => list:個人 and dueAfter:2012-01-04T23:59:59Z and dueBefore:2012-01-05T24:00:00Z
41
+
42
+ Even if you live in a timezone other than UTC, you get true today's task list !
43
+
44
+ == Field Howto
45
+
46
+ $ gyunyu -d name -d due
47
+ list,name,due
48
+ ...
49
+
50
+ same above
51
+
52
+ $ gyunyu -d name,due
53
+ list,name,due
54
+ ...
55
+
10
56
  == Supported
11
57
 
12
58
  * store API token ( and reuse )
13
- * only `export' command. supported formats are CSV, JSON, YAML.
59
+ * only `export' command. supported formats are CSV, JSON, YAML. ( default is CSV )
14
60
 
15
61
  == Not Supported
16
62
 
17
- * Tags and notes for csv exporting
63
+ * Tags and notes for csv exporting ( dumped as YAML inline format )
18
64
  * Convert Date to (ISO 8601 + UTC) in search filter. Currently search results are out of alignment.
19
65
  * Default filter
20
66
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{gyunyu}
8
- s.version = "0.1.0"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = [%q{wtnabe}]
12
- s.date = %q{2012-01-04}
12
+ s.date = %q{2012-01-06}
13
13
  s.description = %q{now available export command}
14
14
  s.email = %q{wtnabe@gmail.com}
15
15
  s.executables = [%q{gyunyu}]
@@ -31,6 +31,7 @@ Gem::Specification.new do |s|
31
31
  "lib/gyunyu/app.rb",
32
32
  "lib/gyunyu/command.rb",
33
33
  "lib/gyunyu/command/export/app.rb",
34
+ "lib/gyunyu/command/export/custom_filter.rb",
34
35
  "lib/gyunyu/command/export/format/csv.rb",
35
36
  "lib/gyunyu/command/export/format/json.rb",
36
37
  "lib/gyunyu/command/export/format/yaml.rb",
@@ -38,6 +39,7 @@ Gem::Specification.new do |s|
38
39
  "lib/gyunyu/expander.rb",
39
40
  "lib/gyunyu/token.rb",
40
41
  "spec/app/.gitkeep",
42
+ "spec/app/command/export/custom_filter_spec.rb",
41
43
  "spec/app/command/export/option_spec.rb",
42
44
  "spec/app/command_spec.rb",
43
45
  "spec/app/expander_spec.rb",
@@ -33,7 +33,7 @@ module Gyunyu
33
33
  #
34
34
  def format_module
35
35
  format = option.format.to_s.capitalize
36
- Module.nesting[1].const_get('Format').const_get(format)
36
+ Format.const_get(format)
37
37
  end
38
38
 
39
39
  #
@@ -46,7 +46,11 @@ module Gyunyu
46
46
 
47
47
  def run
48
48
  if @argv.size > 0
49
- export( build_filter )
49
+ if option.show_filter_list
50
+ puts CustomFilter.filter.keys.sort
51
+ else
52
+ export( build_filter )
53
+ end
50
54
  else
51
55
  puts option.parser
52
56
  end
@@ -60,10 +64,13 @@ module Gyunyu
60
64
  filters = []
61
65
 
62
66
  filters << option.lists.map { |l| "list:#{l}" }.join(' and ') if option.lists.size > 0
67
+ filters << CustomFilter.filter[option.custom_filter] if option.custom_filter
63
68
  filters << option.filter if option.filter
64
69
  filters << filter if filter
65
70
 
66
- '(' + filters.join(') and (') + ')'
71
+ f = '(' + filters.join(') and (') + ')'
72
+ STDERR.puts f
73
+ f
67
74
  end
68
75
 
69
76
  #
@@ -73,7 +80,7 @@ module Gyunyu
73
80
  def task_list( filter = nil )
74
81
  RTM::Tasks::GetList.new( token,
75
82
  nil,
76
- build_filter( filter ) ).invoke
83
+ filter ).invoke
77
84
  end
78
85
 
79
86
  #
@@ -92,28 +99,33 @@ module Gyunyu
92
99
  #
93
100
  def pickup_fields( filter = nil )
94
101
  tasks = []
95
- task_list( filter ).each { |l|
96
- list_name = find_list( l['id'] ).name
97
- tasks += Gyunyu::Expander.taskseries( l['taskseries'] ).map { |t|
98
- record = {'list' => list_name}
99
- option.fields.each { |f|
100
- val = if TIME_FIELDS.include?( f )
101
- localtime( t[f] )
102
- else
103
- t[f]
104
- end
105
- if f == 'estimate'
106
- e = split_estimate( t[f] )
107
- record['estimate(d)'] = e.day
108
- record['estimate(h)'] = e.hour
109
- record['estimate(m)'] = e.min
110
- else
111
- record[f] = val
112
- end
102
+
103
+ result = task_list( filter )
104
+ if result.respond_to? :each
105
+ result.each { |l|
106
+ list_name = find_list( l['id'] ).name
107
+ tasks += Gyunyu::Expander.taskseries( l['taskseries'] ).map { |t|
108
+ record = {'list' => list_name}
109
+ option.fields.each { |f|
110
+ val = if TIME_FIELDS.include?( f )
111
+ localtime( t[f] )
112
+ else
113
+ t[f]
114
+ end
115
+ if f == 'estimate'
116
+ e = split_estimate( t[f] )
117
+ record['estimate(d)'] = e.day
118
+ record['estimate(h)'] = e.hour
119
+ record['estimate(m)'] = e.min
120
+ else
121
+ record[f] = val
122
+ end
123
+ }
124
+ record
113
125
  }
114
- record
115
126
  }
116
- }
127
+ end
128
+
117
129
  tasks
118
130
  end
119
131
 
@@ -0,0 +1,152 @@
1
+ module Gyunyu
2
+ module Command
3
+ module Export
4
+ module CustomFilter
5
+ START_SECOND = 'T23:59:59Z'
6
+ LAST_SECOND = 'T24:00:00Z'
7
+
8
+ class << self
9
+ def today
10
+ Date.today
11
+ end
12
+
13
+ def filter
14
+ filter = {}
15
+
16
+ %w( yesterday today tomorrow last_week this_week next_week
17
+ last_month this_month next_month ).each { |term|
18
+ due = [
19
+ "dueAfter:" + send("from_#{term}"),
20
+ "dueBefore:" + send("until_#{term}")
21
+ ].join( ' and ' )
22
+ filter[term] = due
23
+ filter["#{term}_yet"] = due + incomplete
24
+ }
25
+
26
+ filter
27
+ end
28
+
29
+ def last_sunday
30
+ if today.sunday?
31
+ today - 7
32
+ else
33
+ proc { |d|
34
+ until d.sunday?
35
+ d -= 1
36
+ end
37
+ d
38
+ }.call(today)
39
+ end
40
+ end
41
+
42
+ def next_sunday
43
+ if today.sunday?
44
+ today + 7
45
+ else
46
+ proc { |d|
47
+ until d.sunday?
48
+ d += 1
49
+ end
50
+ d
51
+ }.call(today)
52
+ end
53
+ end
54
+
55
+ def from_yesterday
56
+ (today - 2).to_s + START_SECOND
57
+ end
58
+
59
+ def until_yesterday
60
+ (today - 1).to_s + LAST_SECOND
61
+ end
62
+
63
+ def from_today
64
+ (today - 1).to_s + START_SECOND
65
+ end
66
+
67
+ def until_today
68
+ today.to_s + LAST_SECOND
69
+ end
70
+
71
+ def from_tomorrow
72
+ today.to_s + START_SECOND
73
+ end
74
+
75
+ def until_tomorrow
76
+ (today + 1).to_s + LAST_SECOND
77
+ end
78
+
79
+ def from_last_week
80
+ if today.sunday?
81
+ (last_sunday - 1).to_s + START_SECOND
82
+ else
83
+ (last_sunday - 8).to_s + START_SECOND
84
+ end
85
+ end
86
+
87
+ def until_last_week
88
+ if today.sunday?
89
+ (today - 1).to_s + LAST_SECOND
90
+ else
91
+ (last_sunday - 1).to_s + LAST_SECOND
92
+ end
93
+ end
94
+
95
+ def from_this_week
96
+ if today.sunday?
97
+ (today - 1).to_s + START_SECOND
98
+ else
99
+ (last_sunday - 1).to_s + START_SECOND
100
+ end
101
+ end
102
+
103
+ def until_this_week
104
+ (next_sunday - 1).to_s + LAST_SECOND
105
+ end
106
+
107
+ def from_next_week
108
+ (next_sunday - 1).to_s + START_SECOND
109
+ end
110
+
111
+ def until_next_week
112
+ (next_sunday + 6).to_s + LAST_SECOND
113
+ end
114
+
115
+ def from_last_month
116
+ d = today << 2
117
+ Date.new( d.year, d.mon, -1 ).to_s + START_SECOND
118
+ end
119
+
120
+ def until_last_month
121
+ d = today << 1
122
+ Date.new( d.year, d.mon, -1 ).to_s + LAST_SECOND
123
+ end
124
+
125
+ def from_this_month
126
+ d = today << 1
127
+ Date.new( d.year, d.mon, -1 ).to_s + START_SECOND
128
+ end
129
+
130
+ def until_this_month
131
+ d = today
132
+ Date.new( d.year, d.mon, -1 ).to_s + LAST_SECOND
133
+ end
134
+
135
+ def from_next_month
136
+ d = today
137
+ Date.new( d.year, d.mon, -1 ).to_s + START_SECOND
138
+ end
139
+
140
+ def until_next_month
141
+ d = today >> 1
142
+ Date.new( d.year, d.mon, -1 ).to_s + LAST_SECOND
143
+ end
144
+
145
+ def incomplete
146
+ ' and status:incomplete'
147
+ end
148
+ end
149
+ end
150
+ end
151
+ end
152
+ end
@@ -6,18 +6,21 @@ module Gyunyu
6
6
  module Export
7
7
  class Option
8
8
  class FormatNotFound < StandardError; end
9
+ class CustomFilterNotFound < StandardError; end
9
10
 
10
11
  FIELD_SEP = ','
11
12
 
12
13
  def initialize( argv = [] )
13
- @lists = []
14
- @filter = nil
15
- @fields = []
16
- @format = :csv
14
+ @lists = []
15
+ @filter = nil
16
+ @custom_filter = nil
17
+ @fields = []
18
+ @format = :csv
19
+ @show_filter_list = false
17
20
 
18
21
  parser.parse( argv )
19
22
  end
20
- attr_reader :lists, :filter, :fields, :format
23
+ attr_reader :lists, :filter, :custom_filter, :fields, :format, :show_filter_list
21
24
 
22
25
  def fields
23
26
  if @fields.size > 0
@@ -37,6 +40,17 @@ module Gyunyu
37
40
  opt.on('-f', '--filter FILTER') { |filter|
38
41
  @filter = filter if filter.size > 0
39
42
  }
43
+ opt.on('-c', '--custom-filter FILTER') { |filter|
44
+ mod = Module.nesting[1].const_get('CustomFilter')
45
+ if mod.filter.has_key?( filter )
46
+ @custom_filter = filter
47
+ else
48
+ raise CustomFilterNotFound
49
+ end
50
+ }
51
+ opt.on('-s', '--custom-filter-list') { |c|
52
+ @show_filter_list = true
53
+ }
40
54
  opt.on('-d', '--field FIELD') { |field|
41
55
  if field.include?( FIELD_SEP )
42
56
  @fields = field.split( FIELD_SEP )
@@ -0,0 +1,319 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe Gyunyu::Command::Export::CustomFilter do
4
+ mod = Gyunyu::Command::Export::CustomFilter
5
+
6
+ define_method :force_weekday do
7
+ mod.class_eval {
8
+ def self.today
9
+ Date.parse('2012-01-05')
10
+ end
11
+ }
12
+ end
13
+
14
+ define_method :force_sunday do
15
+ mod.class_eval {
16
+ def self.today
17
+ Date.parse('2012-01-01')
18
+ end
19
+ }
20
+ end
21
+
22
+ before {
23
+ force_weekday
24
+ }
25
+
26
+ describe 'today' do
27
+ subject {
28
+ mod.today
29
+ }
30
+ it {
31
+ should == Date.parse('2012-01-05')
32
+ }
33
+ end
34
+
35
+ describe 'last_sunday' do
36
+ context 'weekdy 2012-01-05' do
37
+ subject {
38
+ mod.last_sunday
39
+ }
40
+ it {
41
+ should == Date.parse('2012-01-01')
42
+ }
43
+ end
44
+ context 'sunday 2012-01-01' do
45
+ before {
46
+ force_sunday
47
+ }
48
+ subject {
49
+ mod.last_sunday
50
+ }
51
+ it {
52
+ should == Date.parse('2011-12-25')
53
+ }
54
+ end
55
+ end
56
+
57
+ describe 'next_sunday' do
58
+ context 'weekday 2012-01-05' do
59
+ subject {
60
+ mod.next_sunday
61
+ }
62
+ it {
63
+ should == Date.parse('2012-01-08')
64
+ }
65
+ end
66
+ context 'sunday 2012-01-01' do
67
+ before {
68
+ force_sunday
69
+ }
70
+ subject {
71
+ mod.next_sunday
72
+ }
73
+ it {
74
+ should == Date.parse('2012-01-08')
75
+ }
76
+ end
77
+ end
78
+
79
+ describe 'from_yesterday' do
80
+ subject {
81
+ mod.from_yesterday
82
+ }
83
+ it {
84
+ should == '2012-01-03T23:59:59Z'
85
+ }
86
+ end
87
+
88
+ describe 'until_yesterday' do
89
+ subject {
90
+ mod.until_yesterday
91
+ }
92
+ it {
93
+ should == '2012-01-04T24:00:00Z'
94
+ }
95
+ end
96
+
97
+ describe 'from_today' do
98
+ subject {
99
+ mod.from_today
100
+ }
101
+ it {
102
+ should == '2012-01-04T23:59:59Z'
103
+ }
104
+ end
105
+
106
+ describe 'until_today' do
107
+ subject {
108
+ mod.until_today
109
+ }
110
+ it {
111
+ should == '2012-01-05T24:00:00Z'
112
+ }
113
+ end
114
+
115
+ describe 'from_tomorrow' do
116
+ subject {
117
+ mod.from_tomorrow
118
+ }
119
+ it {
120
+ should == '2012-01-05T23:59:59Z'
121
+ }
122
+ end
123
+
124
+ describe 'until_tomorrow' do
125
+ subject {
126
+ mod.until_tomorrow
127
+ }
128
+ it {
129
+ should == '2012-01-06T24:00:00Z'
130
+ }
131
+ end
132
+
133
+ describe 'from_last_week' do
134
+ context 'weekday 2012-01-05' do
135
+ subject {
136
+ mod.from_last_week
137
+ }
138
+ it {
139
+ should == '2011-12-24T23:59:59Z'
140
+ }
141
+ end
142
+ context 'sunday 2012-01-01' do
143
+ before {
144
+ force_sunday
145
+ }
146
+ subject {
147
+ mod.from_last_week
148
+ }
149
+ it {
150
+ should == '2011-12-24T23:59:59Z'
151
+ }
152
+ end
153
+ end
154
+
155
+ describe 'until_last_week' do
156
+ context 'weekday 2012-01-05' do
157
+ subject {
158
+ mod.until_last_week
159
+ }
160
+ it {
161
+ should == '2011-12-31T24:00:00Z'
162
+ }
163
+ end
164
+ context 'sunday 2011-01-01' do
165
+ before {
166
+ force_sunday
167
+ }
168
+ subject {
169
+ mod.until_last_week
170
+ }
171
+ it {
172
+ should == '2011-12-31T24:00:00Z'
173
+ }
174
+ end
175
+ end
176
+
177
+ describe 'from_this_week' do
178
+ context 'weekday 2012-01-05' do
179
+ subject {
180
+ mod.from_this_week
181
+ }
182
+ it {
183
+ should == '2011-12-31T23:59:59Z'
184
+ }
185
+ end
186
+ context 'sunday 2012-01-01' do
187
+ before {
188
+ force_sunday
189
+ }
190
+ subject {
191
+ mod.from_this_week
192
+ }
193
+ it {
194
+ should == '2011-12-31T23:59:59Z'
195
+ }
196
+ end
197
+ end
198
+
199
+ describe 'until_this_week' do
200
+ context 'weekday 2012-01-05' do
201
+ subject {
202
+ mod.until_this_week
203
+ }
204
+ it {
205
+ should == '2012-01-07T24:00:00Z'
206
+ }
207
+ end
208
+ context 'sunday 2012-01-01' do
209
+ before {
210
+ force_sunday
211
+ }
212
+ subject {
213
+ mod.until_this_week
214
+ }
215
+ it {
216
+ should == '2012-01-07T24:00:00Z'
217
+ }
218
+ end
219
+ end
220
+
221
+ describe 'from_next_week' do
222
+ context 'weekday 2012-01-05' do
223
+ subject {
224
+ mod.from_next_week
225
+ }
226
+ it {
227
+ should == '2012-01-07T23:59:59Z'
228
+ }
229
+ end
230
+ context 'sunday 2012-01-01' do
231
+ before {
232
+ force_sunday
233
+ }
234
+ subject {
235
+ mod.from_next_week
236
+ }
237
+ it {
238
+ should == '2012-01-07T23:59:59Z'
239
+ }
240
+ end
241
+ end
242
+
243
+ describe 'until_next_week' do
244
+ context 'weekday 2012-01-05' do
245
+ subject {
246
+ mod.until_next_week
247
+ }
248
+ it {
249
+ should == '2012-01-14T24:00:00Z'
250
+ }
251
+ end
252
+ context 'sunday 2012-01-01' do
253
+ before {
254
+ force_sunday
255
+ }
256
+ subject {
257
+ mod.until_next_week
258
+ }
259
+ it {
260
+ should == '2012-01-14T24:00:00Z'
261
+ }
262
+ end
263
+ end
264
+
265
+ describe 'from_last_month' do
266
+ subject {
267
+ mod.from_last_month
268
+ }
269
+ it {
270
+ should == '2011-11-30T23:59:59Z'
271
+ }
272
+ end
273
+
274
+ describe 'until_last_month' do
275
+ subject {
276
+ mod.until_last_month
277
+ }
278
+ it {
279
+ should == '2011-12-31T24:00:00Z'
280
+ }
281
+ end
282
+
283
+ describe 'from_this_month' do
284
+ subject {
285
+ mod.from_this_month
286
+ }
287
+ it {
288
+ should == '2011-12-31T23:59:59Z'
289
+ }
290
+ end
291
+
292
+ describe 'until_this_month' do
293
+ subject {
294
+ mod.until_this_month
295
+ }
296
+ it {
297
+ should == '2012-01-31T24:00:00Z'
298
+ }
299
+ end
300
+
301
+ describe 'from_next_month' do
302
+ subject {
303
+ mod.from_next_month
304
+ }
305
+ it {
306
+ should == '2012-01-31T23:59:59Z'
307
+ }
308
+ end
309
+
310
+ describe 'until_next_month' do
311
+ subject {
312
+ mod.until_next_month
313
+ }
314
+ it {
315
+ should == '2012-02-29T24:00:00Z'
316
+ }
317
+ end
318
+ end
319
+
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.1.0
4
+ version: 0.2.0
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-01-04 00:00:00.000000000Z
12
+ date: 2012-01-06 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rtmilk
16
- requirement: &3044910 !ruby/object:Gem::Requirement
16
+ requirement: &3042960 !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: *3044910
24
+ version_requirements: *3042960
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: xml-simple
27
- requirement: &3044640 !ruby/object:Gem::Requirement
27
+ requirement: &3042710 !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: *3044640
35
+ version_requirements: *3042710
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rtm-time
38
- requirement: &3044090 !ruby/object:Gem::Requirement
38
+ requirement: &3042410 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.2.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *3044090
46
+ version_requirements: *3042410
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &3043850 !ruby/object:Gem::Requirement
49
+ requirement: &3042170 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 2.3.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *3043850
57
+ version_requirements: *3042170
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: bundler
60
- requirement: &3043570 !ruby/object:Gem::Requirement
60
+ requirement: &3041880 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.0.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *3043570
68
+ version_requirements: *3041880
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: jeweler
71
- requirement: &3043300 !ruby/object:Gem::Requirement
71
+ requirement: &3041620 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.6.4
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *3043300
79
+ version_requirements: *3041620
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: yard
82
- requirement: &3043060 !ruby/object:Gem::Requirement
82
+ requirement: &3041380 !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: *3043060
90
+ version_requirements: *3041380
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rcov
93
- requirement: &3042770 !ruby/object:Gem::Requirement
93
+ requirement: &3041140 !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: *3042770
101
+ version_requirements: *3041140
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: rr
104
- requirement: &3042510 !ruby/object:Gem::Requirement
104
+ requirement: &3040840 !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: *3042510
112
+ version_requirements: *3040840
113
113
  description: now available export command
114
114
  email: wtnabe@gmail.com
115
115
  executables:
@@ -132,6 +132,7 @@ files:
132
132
  - lib/gyunyu/app.rb
133
133
  - lib/gyunyu/command.rb
134
134
  - lib/gyunyu/command/export/app.rb
135
+ - lib/gyunyu/command/export/custom_filter.rb
135
136
  - lib/gyunyu/command/export/format/csv.rb
136
137
  - lib/gyunyu/command/export/format/json.rb
137
138
  - lib/gyunyu/command/export/format/yaml.rb
@@ -139,6 +140,7 @@ files:
139
140
  - lib/gyunyu/expander.rb
140
141
  - lib/gyunyu/token.rb
141
142
  - spec/app/.gitkeep
143
+ - spec/app/command/export/custom_filter_spec.rb
142
144
  - spec/app/command/export/option_spec.rb
143
145
  - spec/app/command_spec.rb
144
146
  - spec/app/expander_spec.rb
@@ -162,7 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
162
164
  version: '0'
163
165
  segments:
164
166
  - 0
165
- hash: -70186575
167
+ hash: 1021094161
166
168
  required_rubygems_version: !ruby/object:Gem::Requirement
167
169
  none: false
168
170
  requirements: