doing 2.1.4pre → 2.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/.yardoc/checksums +14 -13
  3. data/.yardoc/object_types +0 -0
  4. data/.yardoc/objects/root.dat +0 -0
  5. data/.yardopts +1 -1
  6. data/CHANGELOG.md +37 -1
  7. data/Gemfile.lock +3 -1
  8. data/README.md +5 -1
  9. data/bin/doing +192 -95
  10. data/docs/_config.yml +1 -0
  11. data/{doc → docs/doc}/Array.html +63 -1
  12. data/docs/doc/BooleanTermParser/Clause.html +293 -0
  13. data/docs/doc/BooleanTermParser/Operator.html +172 -0
  14. data/docs/doc/BooleanTermParser/Query.html +417 -0
  15. data/docs/doc/BooleanTermParser/QueryParser.html +135 -0
  16. data/docs/doc/BooleanTermParser/QueryTransformer.html +124 -0
  17. data/docs/doc/BooleanTermParser.html +115 -0
  18. data/docs/doc/Doing/CLIFormat.html +131 -0
  19. data/{doc → docs/doc}/Doing/Color.html +2 -2
  20. data/{doc → docs/doc}/Doing/Completion.html +1 -1
  21. data/{doc → docs/doc}/Doing/Configuration.html +117 -12
  22. data/{doc → docs/doc}/Doing/Content.html +0 -0
  23. data/{doc → docs/doc}/Doing/Errors/DoingNoTraceError.html +1 -1
  24. data/{doc → docs/doc}/Doing/Errors/DoingRuntimeError.html +1 -1
  25. data/{doc → docs/doc}/Doing/Errors/DoingStandardError.html +1 -1
  26. data/{doc → docs/doc}/Doing/Errors/EmptyInput.html +1 -1
  27. data/{doc → docs/doc}/Doing/Errors/NoResults.html +1 -1
  28. data/{doc → docs/doc}/Doing/Errors/PluginException.html +1 -1
  29. data/{doc → docs/doc}/Doing/Errors/UserCancelled.html +1 -1
  30. data/{doc → docs/doc}/Doing/Errors/WrongCommand.html +1 -1
  31. data/{doc → docs/doc}/Doing/Errors.html +1 -1
  32. data/{doc → docs/doc}/Doing/Hooks.html +1 -1
  33. data/{doc → docs/doc}/Doing/Item.html +100 -73
  34. data/{doc → docs/doc}/Doing/Items.html +2 -2
  35. data/{doc → docs/doc}/Doing/LogAdapter.html +70 -1
  36. data/{doc → docs/doc}/Doing/Note.html +5 -134
  37. data/{doc → docs/doc}/Doing/Pager.html +1 -1
  38. data/{doc → docs/doc}/Doing/Plugins.html +431 -35
  39. data/{doc → docs/doc}/Doing/Prompt.html +1 -1
  40. data/{doc → docs/doc}/Doing/Section.html +1 -1
  41. data/docs/doc/Doing/TemplateString.html +713 -0
  42. data/docs/doc/Doing/Util/Backup.html +686 -0
  43. data/{doc → docs/doc}/Doing/Util.html +1 -1
  44. data/{doc → docs/doc}/Doing/WWID.html +5 -5
  45. data/{doc → docs/doc}/Doing/WWIDFile.html +0 -0
  46. data/{doc → docs/doc}/Doing.html +4 -4
  47. data/{doc → docs/doc}/GLI/Commands/MarkdownDocumentListener.html +1 -1
  48. data/{doc → docs/doc}/GLI/Commands.html +1 -1
  49. data/{doc → docs/doc}/GLI.html +1 -1
  50. data/{doc → docs/doc}/Hash.html +1 -1
  51. data/docs/doc/PhraseParser/Operator.html +172 -0
  52. data/docs/doc/PhraseParser/PhraseClause.html +303 -0
  53. data/docs/doc/PhraseParser/Query.html +495 -0
  54. data/docs/doc/PhraseParser/QueryParser.html +136 -0
  55. data/docs/doc/PhraseParser/QueryTransformer.html +124 -0
  56. data/docs/doc/PhraseParser/TermClause.html +293 -0
  57. data/docs/doc/PhraseParser.html +115 -0
  58. data/{doc → docs/doc}/Status.html +1 -1
  59. data/{doc → docs/doc}/String.html +182 -12
  60. data/{doc → docs/doc}/Symbol.html +35 -1
  61. data/{doc → docs/doc}/Time.html +1 -1
  62. data/{doc → docs/doc}/_index.html +21 -14
  63. data/{doc → docs/doc}/class_list.html +1 -1
  64. data/{doc → docs/doc}/css/common.css +0 -0
  65. data/{doc → docs/doc}/css/full_list.css +0 -0
  66. data/{doc → docs/doc}/css/style.css +0 -0
  67. data/{doc → docs/doc}/file.README.html +6 -2
  68. data/{doc → docs/doc}/file_list.html +0 -0
  69. data/{doc → docs/doc}/frames.html +0 -0
  70. data/{doc → docs/doc}/index.html +6 -2
  71. data/{doc → docs/doc}/js/app.js +0 -0
  72. data/{doc → docs/doc}/js/full_list.js +0 -0
  73. data/{doc → docs/doc}/js/jquery.js +0 -0
  74. data/{doc → docs/doc}/method_list.html +313 -161
  75. data/{doc → docs/doc}/top-level-namespace.html +1 -1
  76. data/docs/index.md +60 -0
  77. data/doing.gemspec +1 -0
  78. data/doing.rdoc +74 -15
  79. data/example_plugin.rb +3 -1
  80. data/lib/completion/_doing.zsh +53 -41
  81. data/lib/completion/doing.bash +17 -6
  82. data/lib/completion/doing.fish +321 -2
  83. data/lib/doing/array.rb +9 -0
  84. data/lib/doing/completion/fish_completion.rb +46 -3
  85. data/lib/doing/completion/zsh_completion.rb +1 -1
  86. data/lib/doing/configuration.rb +33 -11
  87. data/lib/doing/item.rb +12 -3
  88. data/lib/doing/log_adapter.rb +28 -0
  89. data/lib/doing/note.rb +31 -30
  90. data/lib/doing/plugin_manager.rb +84 -21
  91. data/lib/doing/plugins/export/dayone_export.rb +209 -0
  92. data/lib/doing/plugins/export/html_export.rb +2 -2
  93. data/lib/doing/plugins/export/json_export.rb +1 -0
  94. data/lib/doing/plugins/export/markdown_export.rb +1 -1
  95. data/lib/doing/plugins/export/template_export.rb +90 -85
  96. data/lib/doing/prompt.rb +9 -6
  97. data/lib/doing/string.rb +68 -27
  98. data/lib/doing/symbol.rb +4 -0
  99. data/lib/doing/template_string.rb +197 -0
  100. data/lib/doing/util.rb +4 -2
  101. data/lib/doing/util_backup.rb +55 -3
  102. data/lib/doing/version.rb +1 -1
  103. data/lib/doing/wwid.rb +37 -22
  104. data/lib/doing.rb +3 -0
  105. data/lib/examples/plugins/say_export.rb +1 -1
  106. data/lib/examples/plugins/wiki_export/wiki_export.rb +3 -3
  107. data/lib/templates/doing-dayone-entry.erb +6 -0
  108. data/lib/templates/doing-dayone.erb +5 -0
  109. metadata +95 -53
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ require 'zlib'
2
3
 
3
4
  module Doing
4
5
  module Util
@@ -29,6 +30,7 @@ module Doing
29
30
  ## different from default
30
31
  ##
31
32
  def restore_last_backup(filename = nil, count: 1)
33
+ Doing.logger.benchmark(:restore_backup, :start)
32
34
  filename ||= Doing.config.settings['doing_file']
33
35
 
34
36
  result = get_backups(filename).slice(count - 1)
@@ -40,6 +42,7 @@ module Doing
40
42
  FileUtils.mv(backup_file, filename)
41
43
  prune_backups_after(File.basename(backup_file))
42
44
  Doing.logger.warn('File update:', "restored from #{result}")
45
+ Doing.logger.benchmark(:restore_backup, :finish)
43
46
  end
44
47
 
45
48
  ##
@@ -79,6 +82,44 @@ module Doing
79
82
  end
80
83
  end
81
84
 
85
+ ##
86
+ ## Select from recent undos. If a filename is
87
+ ## provided, only backups of that filename will be used.
88
+ ##
89
+ ## @param filename The filename to restore
90
+ ##
91
+ def select_redo(filename = nil)
92
+ filename ||= Doing.config.settings['doing_file']
93
+
94
+ undones = Dir.glob("undone*#{File.basename(filename)}", base: backup_dir).sort
95
+
96
+ raise DoingRuntimeError, 'End of redo history' if undones.empty?
97
+
98
+ total = undones.count
99
+ options = undones.each_with_object([]) do |file, arr|
100
+ d, _base = date_of_backup(file)
101
+ next if d.nil?
102
+
103
+ arr.push("#{d.time_ago}\t#{File.join(backup_dir, file)}")
104
+ end
105
+
106
+ backup_file = show_menu(options, filename)
107
+ idx = undones.index(File.basename(backup_file))
108
+ skipped = undones.slice!(idx, undones.count - idx)
109
+ undone = skipped.shift
110
+
111
+ redo_file = File.join(backup_dir, undone)
112
+
113
+ FileUtils.move(redo_file, filename)
114
+
115
+ skipped.each do |f|
116
+ FileUtils.mv(File.join(backup_dir, f), File.join(backup_dir, f.sub(/^undone/, '')))
117
+ end
118
+
119
+ Doing.logger.warn('File update:', "restored undo step #{idx}/#{total}")
120
+ Doing.logger.debug('Backup:', "#{total - skipped.count - 1} redos remaining")
121
+ end
122
+
82
123
  ##
83
124
  ## Select from recent backups. If a filename is
84
125
  ## provided, only backups of that filename will be used.
@@ -90,6 +131,7 @@ module Doing
90
131
 
91
132
  options = get_backups(filename).each_with_object([]) do |file, arr|
92
133
  d, _base = date_of_backup(file)
134
+ next if d.nil?
93
135
  arr.push("#{d.time_ago}\t#{File.join(backup_dir, file)}")
94
136
  end
95
137
 
@@ -123,13 +165,16 @@ module Doing
123
165
  end
124
166
 
125
167
  result = Doing::Prompt.choose_from(options,
168
+ prompt: 'Select a backup to restore',
126
169
  sorted: false,
127
170
  fzf_args: [
128
171
  '--delimiter="\t"',
129
172
  '--with-nth=1',
130
173
  %(--preview='#{preview} "#{filename}" {2} #{pipe}'),
131
174
  '--disabled',
132
- '--preview-window="right,70%,nowrap,follow"'
175
+ '--height=10',
176
+ '--preview-window="right,70%,nowrap,follow"',
177
+ '--header="Select a revision to restore"'
133
178
  ])
134
179
  raise UserCancelled unless result
135
180
 
@@ -143,6 +188,7 @@ module Doing
143
188
  ## @param content The data to back up
144
189
  ##
145
190
  def write_backup(filename = nil)
191
+ Doing.logger.benchmark(:_write_backup, :start)
146
192
  filename ||= Doing.config.settings['doing_file']
147
193
 
148
194
  unless File.exist?(filename)
@@ -152,11 +198,15 @@ module Doing
152
198
 
153
199
  backup_file = File.join(backup_dir, "#{timestamp_filename}___#{File.basename(filename)}")
154
200
  # compressed = Zlib::Deflate.deflate(content)
201
+ # Zlib::GzipWriter.open(backup_file + '.gz') do |gz|
202
+ # gz.write(IO.read(filename))
203
+ # end
155
204
 
156
205
  FileUtils.cp(filename, backup_file)
157
206
 
158
- prune_backups(filename, 100)
207
+ prune_backups(filename, Doing.config.settings['history_size'].to_i)
159
208
  clear_undone(filename)
209
+ Doing.logger.benchmark(:_write_backup, :finish)
160
210
  end
161
211
 
162
212
  private
@@ -183,7 +233,7 @@ module Doing
183
233
  ## @param filename The filename
184
234
  ##
185
235
  def date_of_backup(filename)
186
- m = filename.match(/^(?<date>\d{4}-\d{2}-\d{2})_(?<time>\d{2}\.\d{2}\.\d{2})___(?<file>.*?)$/)
236
+ m = filename.match(/^(?:undone)?(?<date>\d{4}-\d{2}-\d{2})_(?<time>\d{2}\.\d{2}\.\d{2})___(?<file>.*?)$/)
187
237
  return nil if m.nil?
188
238
 
189
239
  [Time.parse("#{m['date']} #{m['time'].gsub(/\./, ':')}"), m['file']]
@@ -220,6 +270,8 @@ module Doing
220
270
  ##
221
271
  def prune_backups_after(filename)
222
272
  target_date, base = date_of_backup(filename)
273
+ return if target_date.nil?
274
+
223
275
  counter = 0
224
276
  get_backups(base).each do |file|
225
277
  date, _base = date_of_backup(file)
data/lib/doing/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Doing
2
- VERSION = '2.1.4pre'
2
+ VERSION = '2.1.7'
3
3
  end
data/lib/doing/wwid.rb CHANGED
@@ -262,7 +262,7 @@ module Doing
262
262
  return frag.cap_first if @content.section?(frag)
263
263
 
264
264
  section = nil
265
- re = frag.split('').join('.*?')
265
+ re = frag.to_rx(distance: 2, case_type: :ignore)
266
266
  sections.each do |sect|
267
267
  next unless sect =~ /#{re}/i
268
268
 
@@ -304,7 +304,7 @@ module Doing
304
304
  def guess_view(frag, guessed: false, suggest: false)
305
305
  views.each { |view| return view if frag.downcase == view.downcase }
306
306
  view = false
307
- re = frag.split('').join('.*?')
307
+ re = frag.to_rx(distance: 2, case_type: :ignore)
308
308
  views.each do |v|
309
309
  next unless v =~ /#{re}/i
310
310
 
@@ -780,7 +780,7 @@ module Doing
780
780
 
781
781
  keep
782
782
  end
783
- count = opt[:count]&.positive? ? opt[:count] : filtered_items.length
783
+ count = opt[:count].to_i&.positive? ? opt[:count].to_i : filtered_items.count
784
784
 
785
785
  output = Items.new
786
786
 
@@ -1427,11 +1427,11 @@ module Doing
1427
1427
  ##
1428
1428
  ## @return [String] The selected tag name
1429
1429
  ##
1430
- def choose_tag(section = 'All', include_all: false)
1431
- items = @content.in_section(section)
1430
+ def choose_tag(section = 'All', items: nil, include_all: false)
1431
+ items ||= @content.in_section(section)
1432
1432
  tags = all_tags(items, counts: true).map { |t, c| "@#{t} (#{c})" }
1433
1433
  tags.unshift('No tag filter') if include_all
1434
- choice = Prompt.choose_from(tags, sorted: false, multiple: true, prompt: 'Choose a tag > ', fzf_args: ['--height=60%'])
1434
+ choice = Prompt.choose_from(tags, sorted: false, multiple: true, prompt: 'Choose tag(s) > ', fzf_args: ['--height=60%'])
1435
1435
  choice ? choice.split(/\n/).map { |t| t.strip.sub(/ \(.*?\)$/, '')}.join(' ') : choice
1436
1436
  end
1437
1437
 
@@ -1482,17 +1482,25 @@ module Doing
1482
1482
  ##
1483
1483
  ## @param opt [Hash] Additional Options
1484
1484
  ##
1485
- def list_section(opt = {})
1485
+ def list_section(opt = {}, items: Items.new)
1486
1486
  opt[:config_template] ||= 'default'
1487
- cfg = @config.dig('templates',
1488
- opt[:config_template]).deep_merge({
1489
- 'wrap_width' => @config['wrap_width'] || 0,
1490
- 'date_format' => @config['default_date_format'],
1491
- 'order' => @config['order'] || 'asc',
1492
- 'tags_color' => @config['tags_color'],
1493
- 'duration' => @config['duration'],
1494
- 'interval_format' => @config['interval_format']
1495
- })
1487
+
1488
+ tpl_cfg = @config.dig('templates', opt[:config_template])
1489
+
1490
+ cfg = if opt[:view_template]
1491
+ @config.dig('views', opt[:view_template]).deep_merge(tpl_cfg)
1492
+ else
1493
+ tpl_cfg
1494
+ end
1495
+
1496
+ cfg.deep_merge({
1497
+ 'wrap_width' => @config['wrap_width'] || 0,
1498
+ 'date_format' => @config['default_date_format'],
1499
+ 'order' => @config['order'] || 'asc',
1500
+ 'tags_color' => @config['tags_color'],
1501
+ 'duration' => @config['duration'],
1502
+ 'interval_format' => @config['interval_format']
1503
+ })
1496
1504
  opt[:duration] ||= cfg['duration'] || false
1497
1505
  opt[:interval_format] ||= cfg['interval_format'] || 'text'
1498
1506
  opt[:count] ||= 0
@@ -1523,9 +1531,9 @@ module Doing
1523
1531
  end
1524
1532
  end
1525
1533
 
1526
- items = filter_items(Items.new, opt: opt).reverse
1534
+ items = filter_items(items, opt: opt)
1527
1535
 
1528
- items.reverse! if opt[:order] =~ /^d/i
1536
+ items.reverse! unless opt[:order] =~ /^d/i
1529
1537
 
1530
1538
  if opt[:interactive]
1531
1539
  opt[:menu] = !opt[:force]
@@ -1712,10 +1720,16 @@ module Doing
1712
1720
  section ||= @config['current_section']
1713
1721
  section = guess_section(section)
1714
1722
 
1715
- list_section({ section: section, wrap_width: cfg['wrap_width'], count: count,
1716
- format: cfg['date_format'], template: cfg['template'],
1717
- order: 'asc', times: times, totals: opt[:totals],
1718
- sort_tags: opt[:sort_tags], tags_color: opt[:tags_color], config_template: 'recent' })
1723
+ opt[:section] = section
1724
+ opt[:wrap_width] = cfg['wrap_width']
1725
+ opt[:count] = count
1726
+ opt[:format] = cfg['date_format']
1727
+ opt[:template] = cfg['template']
1728
+ opt[:order] = 'asc'
1729
+ opt[:times] = times
1730
+ opt[:config_template] = 'recent'
1731
+
1732
+ list_section(opt)
1719
1733
  end
1720
1734
 
1721
1735
  ##
@@ -1924,6 +1938,7 @@ EOS
1924
1938
  output + tail
1925
1939
  when :markdown
1926
1940
  pad = sorted_tags_data.map {|k, v| k }.group_by(&:size).max.last[0].length
1941
+ pad = 7 if pad < 7
1927
1942
  output = <<~EOS
1928
1943
  | #{' ' * (pad - 7) }project | time |
1929
1944
  | #{'-' * (pad - 1)}: | :------- |
data/lib/doing.rb CHANGED
@@ -8,10 +8,12 @@ require 'csv'
8
8
  require 'tempfile'
9
9
  require 'zlib'
10
10
  require 'base64'
11
+
11
12
  require 'chronic'
12
13
  require 'tty-link'
13
14
  require 'tty-which'
14
15
  require 'tty-markdown'
16
+ require 'plist'
15
17
  # require 'amatch'
16
18
  require 'haml'
17
19
  require 'json'
@@ -19,6 +21,7 @@ require 'logger'
19
21
  require 'safe_yaml/load'
20
22
  require 'doing/hash'
21
23
  require 'doing/colors'
24
+ require 'doing/template_string'
22
25
  require 'doing/string'
23
26
  require 'doing/string_chronify'
24
27
  require 'doing/time'
@@ -73,7 +73,7 @@ module Doing
73
73
  {
74
74
  trigger: 'say(?:it)?',
75
75
  templates: [
76
- { name: 'say', trigger: 'say(?:it)?' }
76
+ { name: 'say', trigger: 'say(?:it)?', format: 'text', filename: 'say.txt' }
77
77
  ],
78
78
  config: {
79
79
  'say_voice' => 'Fiona'
@@ -11,9 +11,9 @@ module Doing
11
11
  {
12
12
  trigger: 'wiki',
13
13
  templates: [
14
- { name: 'wiki_page', trigger: 'wiki.?page' },
15
- { name: 'wiki_index', trigger: 'wiki.?index' },
16
- { name: 'wiki_css', trigger: 'wiki.?css' }
14
+ { name: 'wiki_page', trigger: 'wiki.?page', format: 'haml', filename: 'wiki.haml' },
15
+ { name: 'wiki_index', trigger: 'wiki.?index', format: 'haml', filename: 'wiki_index.haml' },
16
+ { name: 'wiki_css', trigger: 'wiki.?css', format: 'css', filename: 'wiki.css' }
17
17
  ]
18
18
  }
19
19
  end
@@ -0,0 +1,6 @@
1
+ <% @items.each do |i| %>Doing on <%= i[:date_object].strftime('%A %m/%d/%y') %>
2
+
3
+ <%= i[:title] %><% if i[:note].length.positive? %><%= "\n\n" + i[:note].map{|n| n.strip }.join("\n ") %><% end %>
4
+
5
+ <% if i[:human_time] && i[:time] != "00:00:00" %>_Took <%= i[:human_time] %>._<% end %>
6
+ <% end %>
@@ -0,0 +1,5 @@
1
+ # <%= @page_title %>
2
+ <% @items.each do |i| %>
3
+ - [<%= i[:done] %>] <%= i[:date] %> <%= i[:title] %> <% if i[:time] && i[:time] != "00:00:00" %>[**<%= i[:time] %>**]<% end %><% if i[:note].length.positive? %><%= "\n\n " + i[:note].map{|n| n.strip }.join("\n ") %><% end %><% end %>
4
+
5
+ <%= @totals %>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doing
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.4pre
4
+ version: 2.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Terpstra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-17 00:00:00.000000000 Z
11
+ date: 2021-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: safe_yaml
@@ -366,6 +366,26 @@ dependencies:
366
366
  - - ">="
367
367
  - !ruby/object:Gem::Version
368
368
  version: 2.0.0
369
+ - !ruby/object:Gem::Dependency
370
+ name: plist
371
+ requirement: !ruby/object:Gem::Requirement
372
+ requirements:
373
+ - - "~>"
374
+ - !ruby/object:Gem::Version
375
+ version: '3.6'
376
+ - - ">="
377
+ - !ruby/object:Gem::Version
378
+ version: 3.6.0
379
+ type: :runtime
380
+ prerelease: false
381
+ version_requirements: !ruby/object:Gem::Requirement
382
+ requirements:
383
+ - - "~>"
384
+ - !ruby/object:Gem::Version
385
+ version: '3.6'
386
+ - - ">="
387
+ - !ruby/object:Gem::Version
388
+ version: 3.6.0
369
389
  description: A tool for managing a TaskPaper-like file of recent activites. Perfect
370
390
  for the late-night hacker on too much caffeine to remember what they accomplished
371
391
  at 2 in the morning.
@@ -392,55 +412,73 @@ files:
392
412
  - Rakefile
393
413
  - _config.yml
394
414
  - bin/doing
395
- - doc/Array.html
396
- - doc/Doing.html
397
- - doc/Doing/Color.html
398
- - doc/Doing/Completion.html
399
- - doc/Doing/Configuration.html
400
- - doc/Doing/Content.html
401
- - doc/Doing/Errors.html
402
- - doc/Doing/Errors/DoingNoTraceError.html
403
- - doc/Doing/Errors/DoingRuntimeError.html
404
- - doc/Doing/Errors/DoingStandardError.html
405
- - doc/Doing/Errors/EmptyInput.html
406
- - doc/Doing/Errors/NoResults.html
407
- - doc/Doing/Errors/PluginException.html
408
- - doc/Doing/Errors/UserCancelled.html
409
- - doc/Doing/Errors/WrongCommand.html
410
- - doc/Doing/Hooks.html
411
- - doc/Doing/Item.html
412
- - doc/Doing/Items.html
413
- - doc/Doing/LogAdapter.html
414
- - doc/Doing/Note.html
415
- - doc/Doing/Pager.html
416
- - doc/Doing/Plugins.html
417
- - doc/Doing/Prompt.html
418
- - doc/Doing/Section.html
419
- - doc/Doing/Util.html
420
- - doc/Doing/WWID.html
421
- - doc/Doing/WWIDFile.html
422
- - doc/GLI.html
423
- - doc/GLI/Commands.html
424
- - doc/GLI/Commands/MarkdownDocumentListener.html
425
- - doc/Hash.html
426
- - doc/Status.html
427
- - doc/String.html
428
- - doc/Symbol.html
429
- - doc/Time.html
430
- - doc/_index.html
431
- - doc/class_list.html
432
- - doc/css/common.css
433
- - doc/css/full_list.css
434
- - doc/css/style.css
435
- - doc/file.README.html
436
- - doc/file_list.html
437
- - doc/frames.html
438
- - doc/index.html
439
- - doc/js/app.js
440
- - doc/js/full_list.js
441
- - doc/js/jquery.js
442
- - doc/method_list.html
443
- - doc/top-level-namespace.html
415
+ - docs/_config.yml
416
+ - docs/doc/Array.html
417
+ - docs/doc/BooleanTermParser.html
418
+ - docs/doc/BooleanTermParser/Clause.html
419
+ - docs/doc/BooleanTermParser/Operator.html
420
+ - docs/doc/BooleanTermParser/Query.html
421
+ - docs/doc/BooleanTermParser/QueryParser.html
422
+ - docs/doc/BooleanTermParser/QueryTransformer.html
423
+ - docs/doc/Doing.html
424
+ - docs/doc/Doing/CLIFormat.html
425
+ - docs/doc/Doing/Color.html
426
+ - docs/doc/Doing/Completion.html
427
+ - docs/doc/Doing/Configuration.html
428
+ - docs/doc/Doing/Content.html
429
+ - docs/doc/Doing/Errors.html
430
+ - docs/doc/Doing/Errors/DoingNoTraceError.html
431
+ - docs/doc/Doing/Errors/DoingRuntimeError.html
432
+ - docs/doc/Doing/Errors/DoingStandardError.html
433
+ - docs/doc/Doing/Errors/EmptyInput.html
434
+ - docs/doc/Doing/Errors/NoResults.html
435
+ - docs/doc/Doing/Errors/PluginException.html
436
+ - docs/doc/Doing/Errors/UserCancelled.html
437
+ - docs/doc/Doing/Errors/WrongCommand.html
438
+ - docs/doc/Doing/Hooks.html
439
+ - docs/doc/Doing/Item.html
440
+ - docs/doc/Doing/Items.html
441
+ - docs/doc/Doing/LogAdapter.html
442
+ - docs/doc/Doing/Note.html
443
+ - docs/doc/Doing/Pager.html
444
+ - docs/doc/Doing/Plugins.html
445
+ - docs/doc/Doing/Prompt.html
446
+ - docs/doc/Doing/Section.html
447
+ - docs/doc/Doing/TemplateString.html
448
+ - docs/doc/Doing/Util.html
449
+ - docs/doc/Doing/Util/Backup.html
450
+ - docs/doc/Doing/WWID.html
451
+ - docs/doc/Doing/WWIDFile.html
452
+ - docs/doc/GLI.html
453
+ - docs/doc/GLI/Commands.html
454
+ - docs/doc/GLI/Commands/MarkdownDocumentListener.html
455
+ - docs/doc/Hash.html
456
+ - docs/doc/PhraseParser.html
457
+ - docs/doc/PhraseParser/Operator.html
458
+ - docs/doc/PhraseParser/PhraseClause.html
459
+ - docs/doc/PhraseParser/Query.html
460
+ - docs/doc/PhraseParser/QueryParser.html
461
+ - docs/doc/PhraseParser/QueryTransformer.html
462
+ - docs/doc/PhraseParser/TermClause.html
463
+ - docs/doc/Status.html
464
+ - docs/doc/String.html
465
+ - docs/doc/Symbol.html
466
+ - docs/doc/Time.html
467
+ - docs/doc/_index.html
468
+ - docs/doc/class_list.html
469
+ - docs/doc/css/common.css
470
+ - docs/doc/css/full_list.css
471
+ - docs/doc/css/style.css
472
+ - docs/doc/file.README.html
473
+ - docs/doc/file_list.html
474
+ - docs/doc/frames.html
475
+ - docs/doc/index.html
476
+ - docs/doc/js/app.js
477
+ - docs/doc/js/full_list.js
478
+ - docs/doc/js/jquery.js
479
+ - docs/doc/method_list.html
480
+ - docs/doc/top-level-namespace.html
481
+ - docs/index.md
444
482
  - doing.gemspec
445
483
  - doing.rdoc
446
484
  - example_plugin.rb
@@ -474,6 +512,7 @@ files:
474
512
  - lib/doing/phrase_parser.rb
475
513
  - lib/doing/plugin_manager.rb
476
514
  - lib/doing/plugins/export/csv_export.rb
515
+ - lib/doing/plugins/export/dayone_export.rb
477
516
  - lib/doing/plugins/export/html_export.rb
478
517
  - lib/doing/plugins/export/json_export.rb
479
518
  - lib/doing/plugins/export/markdown_export.rb
@@ -488,6 +527,7 @@ files:
488
527
  - lib/doing/string.rb
489
528
  - lib/doing/string_chronify.rb
490
529
  - lib/doing/symbol.rb
530
+ - lib/doing/template_string.rb
491
531
  - lib/doing/time.rb
492
532
  - lib/doing/util.rb
493
533
  - lib/doing/util_backup.rb
@@ -589,6 +629,8 @@ files:
589
629
  - lib/helpers/fzf/test/fzf.vader
590
630
  - lib/helpers/fzf/test/test_go.rb
591
631
  - lib/helpers/fzf/uninstall
632
+ - lib/templates/doing-dayone-entry.erb
633
+ - lib/templates/doing-dayone.erb
592
634
  - lib/templates/doing-markdown.erb
593
635
  - lib/templates/doing.css
594
636
  - lib/templates/doing.haml
@@ -624,9 +666,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
624
666
  version: '0'
625
667
  required_rubygems_version: !ruby/object:Gem::Requirement
626
668
  requirements:
627
- - - ">"
669
+ - - ">="
628
670
  - !ruby/object:Gem::Version
629
- version: 1.3.1
671
+ version: '0'
630
672
  requirements: []
631
673
  rubygems_version: 3.2.16
632
674
  signing_key: