doing 2.1.4pre → 2.1.7

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.
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: