doing 1.0.92 → 2.0.5.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/AUTHORS +19 -0
  3. data/CHANGELOG.md +596 -0
  4. data/COMMANDS.md +1181 -0
  5. data/Gemfile +2 -0
  6. data/Gemfile.lock +110 -0
  7. data/LICENSE +23 -0
  8. data/README.md +15 -699
  9. data/Rakefile +79 -0
  10. data/_config.yml +1 -0
  11. data/bin/doing +1012 -486
  12. data/doing.fish +278 -0
  13. data/doing.gemspec +34 -0
  14. data/doing.rdoc +1759 -0
  15. data/example_plugin.rb +209 -0
  16. data/generate_completions.sh +4 -0
  17. data/img/doing-colors.jpg +0 -0
  18. data/img/doing-printf-wrap-800.jpg +0 -0
  19. data/img/doing-show-note-formatting-800.jpg +0 -0
  20. data/lib/completion/_doing.zsh +151 -0
  21. data/lib/completion/doing.bash +416 -0
  22. data/lib/completion/doing.fish +278 -0
  23. data/lib/doing/array.rb +8 -0
  24. data/lib/doing/cli_status.rb +66 -0
  25. data/lib/doing/colors.rb +136 -0
  26. data/lib/doing/configuration.rb +312 -0
  27. data/lib/doing/errors.rb +102 -0
  28. data/lib/doing/hash.rb +31 -0
  29. data/lib/doing/hooks.rb +59 -0
  30. data/lib/doing/item.rb +155 -0
  31. data/lib/doing/log_adapter.rb +342 -0
  32. data/lib/doing/markdown_document_listener.rb +174 -0
  33. data/lib/doing/note.rb +59 -0
  34. data/lib/doing/pager.rb +95 -0
  35. data/lib/doing/plugin_manager.rb +208 -0
  36. data/lib/doing/plugins/export/csv_export.rb +48 -0
  37. data/lib/doing/plugins/export/html_export.rb +83 -0
  38. data/lib/doing/plugins/export/json_export.rb +140 -0
  39. data/lib/doing/plugins/export/markdown_export.rb +85 -0
  40. data/lib/doing/plugins/export/taskpaper_export.rb +34 -0
  41. data/lib/doing/plugins/export/template_export.rb +141 -0
  42. data/lib/doing/plugins/import/cal_to_json.scpt +0 -0
  43. data/lib/doing/plugins/import/calendar_import.rb +76 -0
  44. data/lib/doing/plugins/import/doing_import.rb +144 -0
  45. data/lib/doing/plugins/import/timing_import.rb +78 -0
  46. data/lib/doing/string.rb +347 -0
  47. data/lib/doing/symbol.rb +16 -0
  48. data/lib/doing/time.rb +18 -0
  49. data/lib/doing/util.rb +186 -0
  50. data/lib/doing/version.rb +1 -1
  51. data/lib/doing/wwid.rb +1868 -2356
  52. data/lib/doing/wwidfile.rb +117 -0
  53. data/lib/doing.rb +44 -4
  54. data/lib/examples/commands/wiki.rb +81 -0
  55. data/lib/examples/plugins/hooks.rb +22 -0
  56. data/lib/examples/plugins/say_export.rb +202 -0
  57. data/lib/examples/plugins/templates/wiki.css +169 -0
  58. data/lib/examples/plugins/templates/wiki.haml +27 -0
  59. data/lib/examples/plugins/templates/wiki_index.haml +18 -0
  60. data/lib/examples/plugins/wiki_export.rb +87 -0
  61. data/lib/templates/doing-markdown.erb +5 -0
  62. data/man/doing.1 +964 -0
  63. data/man/doing.1.html +711 -0
  64. data/man/doing.1.ronn +600 -0
  65. data/package-lock.json +3 -0
  66. data/rdoc_to_mmd.rb +42 -0
  67. data/rdocfixer.rb +13 -0
  68. data/scripts/generate_bash_completions.rb +210 -0
  69. data/scripts/generate_fish_completions.rb +201 -0
  70. data/scripts/generate_zsh_completions.rb +164 -0
  71. metadata +82 -7
  72. data/lib/doing/helpers.rb +0 -191
  73. data/lib/doing/markdown_export.rb +0 -16
@@ -0,0 +1,210 @@
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift File.join(__dir__, '..', 'lib')
3
+ require 'doing/cli_status'
4
+
5
+ require 'shellwords'
6
+
7
+ class ::String
8
+ def short_desc
9
+ split(/[,.]/)[0].sub(/ \(.*?\)?$/, '').strip
10
+ end
11
+
12
+ def ltrunc(max)
13
+ if length > max
14
+ sub(/^.*?(.{#{max - 3}})$/, '...\1')
15
+ else
16
+ self
17
+ end
18
+ end
19
+
20
+ def ltrunc!(max)
21
+ replace ltrunc(max)
22
+ end
23
+ end
24
+
25
+ class BashCompletions
26
+ include Status
27
+
28
+ attr_accessor :commands, :global_options
29
+
30
+ def main_function
31
+ first = true
32
+ out = []
33
+ logic = []
34
+ need_export = []
35
+ # processing = []
36
+
37
+ @commands.each_with_index do |cmd, i|
38
+ # processing << cmd[:commands].first
39
+ processing = cmd[:commands]
40
+ progress('Processing subcommand options', i, @commands.count, processing)
41
+
42
+ data = get_help_sections(cmd[:commands].first)
43
+
44
+ arg = data[:synopsis].join(' ').strip.split(/ /).last
45
+ case arg
46
+ when /(path|file)/i
47
+ type = :file
48
+ when /sect/i
49
+ type = 'sections'
50
+ when /view/i
51
+ type = 'views'
52
+ else
53
+ type = nil
54
+ end
55
+
56
+ if data[:command_options]
57
+ options = parse_options(data[:command_options])
58
+ out << command_function(cmd[:commands].first, options, type)
59
+
60
+ if first
61
+ op = 'if'
62
+ first = false
63
+ else
64
+ op = 'elif'
65
+ end
66
+ logic << %(#{op} [[ $last =~ (#{cmd[:commands].join('|')}) ]]; then _doing_#{cmd[:commands].first})
67
+ end
68
+ end
69
+
70
+ out << <<~EOFUNC
71
+ _doing()
72
+ {
73
+ local last="${@: -1}"
74
+ local token=${COMP_WORDS[$COMP_CWORD]}
75
+
76
+ #{logic.join("\n ")}
77
+ else
78
+ OLD_IFS="$IFS"
79
+ IFS=$'\n'
80
+ COMPREPLY=( $(compgen -W "$(doing help -c)" -- $token) )
81
+ IFS="$OLD_IFS"
82
+ fi
83
+ }
84
+ EOFUNC
85
+
86
+ out.join("\n")
87
+ end
88
+
89
+ def command_function(command, options, type)
90
+ long_options = []
91
+ short_options = []
92
+
93
+ options.each do |o|
94
+ next if o.nil?
95
+
96
+ long_options << o[:long] if o[:long]
97
+ short_options << o[:short] if o[:short]
98
+ end
99
+
100
+ long = long_options.map! {|o| "--#{o}"}.join(' ')
101
+ short = short_options.map! {|o| "-#{o}"}.join(' ')
102
+ words = ''
103
+ logic = ''
104
+ words, logic = get_words(type) if type && type.is_a?(String)
105
+
106
+ func = <<~ENDFUNC
107
+ _doing_#{command}() {
108
+ #{words}
109
+ if [[ "$token" == --* ]]; then
110
+ COMPREPLY=( $( compgen -W '#{long}' -- $token ) )
111
+ elif [[ "$token" == -* ]]; then
112
+ COMPREPLY=( $( compgen -W '#{short} #{long}' -- $token ) )
113
+ #{logic}
114
+ fi
115
+ }
116
+ ENDFUNC
117
+
118
+ func
119
+ end
120
+
121
+ def get_words(type)
122
+ func = <<~EOFUNC
123
+ OLD_IFS="$IFS"
124
+ local token=${COMP_WORDS[$COMP_CWORD]}
125
+ IFS=$'\t'
126
+ local words=$(doing #{type})
127
+ IFS="$OLD_IFS"
128
+ EOFUNC
129
+
130
+ logic = <<~EOLOGIC
131
+ else
132
+ local nocasematchWasOff=0
133
+ shopt nocasematch >/dev/null || nocasematchWasOff=1
134
+ (( nocasematchWasOff )) && shopt -s nocasematch
135
+ local w matches=()
136
+ OLD_IFS="$IFS"
137
+ IFS=$'\t'‰
138
+ for w in $words; do
139
+ if [[ "$w" == "$token"* ]]; then
140
+ matches+=("${w// /\ }")
141
+ fi
142
+ done
143
+ IFS="$OLD_IFS"
144
+ (( nocasematchWasOff )) && shopt -u nocasematch
145
+ COMPREPLY=("${matches[@]}")
146
+ EOLOGIC
147
+
148
+ [func, logic]
149
+ end
150
+
151
+
152
+
153
+ def get_help_sections(command = '')
154
+ res = `bundle exec bin/doing help #{command}`.strip
155
+ scanned = res.scan(/(?m-i)^([A-Z ]+)\n([\s\S]*?)(?=\n+[A-Z]+|\Z)/)
156
+ sections = {}
157
+ scanned.each do |sect|
158
+ title = sect[0].downcase.strip.gsub(/ +/, '_').to_sym
159
+ content = sect[1].split(/\n/).map(&:strip).delete_if(&:empty?)
160
+ sections[title] = content
161
+ end
162
+ sections
163
+ end
164
+
165
+ def parse_option(option)
166
+ res = option.match(/(?:-(?<short>\w), )?(?:--(?:\[no-\])?(?<long>[\w_]+)(?:=(?<arg>\w+))?)\s+- (?<desc>.*?)$/)
167
+ return nil unless res
168
+ {
169
+ short: res['short'],
170
+ long: res['long'],
171
+ arg: res[:arg],
172
+ description: res['desc'].short_desc
173
+ }
174
+ end
175
+
176
+ def parse_options(options)
177
+ options.map { |opt| parse_option(opt) }
178
+ end
179
+
180
+ def parse_command(command)
181
+ res = command.match(/^(?<cmd>[^, \t]+)(?<alias>(?:, [^, \t]+)*)?\s+- (?<desc>.*?)$/)
182
+ commands = [res['cmd']]
183
+ commands.concat(res['alias'].split(/, /).delete_if(&:empty?)) if res['alias']
184
+
185
+ {
186
+ commands: commands,
187
+ description: res['desc'].short_desc
188
+ }
189
+ end
190
+
191
+ def parse_commands(commands)
192
+ commands.map { |cmd| parse_command(cmd) }
193
+ end
194
+
195
+ def initialize
196
+ status('Generating Bash completions', reset: false)
197
+ data = get_help_sections
198
+ @global_options = parse_options(data[:global_options])
199
+ @commands = parse_commands(data[:commands])
200
+ end
201
+
202
+ def generate_completions
203
+ out = []
204
+ out << main_function
205
+ out << 'complete -F _doing doing'
206
+ out.join("\n")
207
+ end
208
+ end
209
+
210
+ puts BashCompletions.new.generate_completions
@@ -0,0 +1,201 @@
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift File.join(__dir__, '..', 'lib')
3
+ require 'doing/cli_status'
4
+
5
+ require 'shellwords'
6
+
7
+ class ::String
8
+ def short_desc
9
+ split(/[,.]/)[0].sub(/ \(.*?\)?$/, '').strip
10
+ end
11
+
12
+ def ltrunc(max)
13
+ if length > max
14
+ sub(/^.*?(.{#{max - 3}})$/, '...\1')
15
+ else
16
+ self
17
+ end
18
+ end
19
+
20
+ def ltrunc!(max)
21
+ replace ltrunc(max)
22
+ end
23
+ end
24
+
25
+ class FishCompletions
26
+ include Status
27
+
28
+ attr_accessor :commands, :global_options
29
+
30
+ def generate_helpers
31
+ <<~EOFUNCTIONS
32
+ function __fish_doing_needs_command
33
+ # Figure out if the current invocation already has a command.
34
+
35
+ set -l opts h-help config_file= f-doing_file= n-notes v-version stdout d-debug default x-noauto
36
+ set cmd (commandline -opc)
37
+ set -e cmd[1]
38
+ argparse -s $opts -- $cmd 2>/dev/null
39
+ or return 0
40
+ # These flags function as commands, effectively.
41
+ if set -q argv[1]
42
+ # Also print the command, so this can be used to figure out what it is.
43
+ echo $argv[1]
44
+ return 1
45
+ end
46
+ return 0
47
+ end
48
+
49
+ function __fish_doing_using_command
50
+ set -l cmd (__fish_doing_needs_command)
51
+ test -z "$cmd"
52
+ and return 1
53
+ contains -- $cmd $argv
54
+ and return 0
55
+ end
56
+
57
+ function __fish_doing_complete_sections
58
+ doing sections -c
59
+ end
60
+
61
+ function __fish_doing_complete_views
62
+ doing views -c
63
+ end
64
+
65
+ function __fish_doing_subcommands
66
+ doing help -c
67
+ end
68
+
69
+ function __fish_doing_export_plugins
70
+ doing plugins --type export -c
71
+ end
72
+
73
+ function __fish_doing_import_plugins
74
+ doing plugins --type import -c
75
+ end
76
+
77
+ function __fish_doing_complete_templates
78
+ doing template -c
79
+ end
80
+
81
+ complete -c doing -f
82
+ complete -xc doing -n '__fish_doing_needs_command' -a '(__fish_doing_subcommands)'
83
+
84
+ complete -f -c doing -n '__fish_doing_using_command show' -a '(__fish_doing_complete_sections)'
85
+ complete -f -c doing -n '__fish_doing_using_command view' -a '(__fish_doing_complete_views)'
86
+ complete -f -c doing -n '__fish_doing_using_command template' -a '(__fish_doing_complete_templates)'
87
+ complete -f -c doing -s t -l type -x -n '__fish_doing_using_command import' -a '(__fish_doing_import_plugins)'
88
+
89
+ EOFUNCTIONS
90
+ end
91
+
92
+ def get_help_sections(command = '')
93
+ res = `bundle exec bin/doing help #{command}`.strip
94
+ scanned = res.scan(/(?m-i)^([A-Z ]+)\n([\s\S]*?)(?=\n+[A-Z]+|\Z)/)
95
+ sections = {}
96
+ scanned.each do |sect|
97
+ title = sect[0].downcase.strip.gsub(/ +/, '_').to_sym
98
+ content = sect[1].split(/\n/).map(&:strip).delete_if(&:empty?)
99
+ sections[title] = content
100
+ end
101
+ sections
102
+ end
103
+
104
+ def parse_option(option)
105
+ res = option.match(/(?:-(?<short>\w), )?(?:--(?:\[no-\])?(?<long>[\w_]+)(?:=(?<arg>\w+))?)\s+- (?<desc>.*?)$/)
106
+ return nil unless res
107
+ {
108
+ short: res['short'],
109
+ long: res['long'],
110
+ arg: res[:arg],
111
+ description: res['desc'].short_desc
112
+ }
113
+ end
114
+
115
+ def parse_options(options)
116
+ options.map { |opt| parse_option(opt) }
117
+ end
118
+
119
+ def parse_command(command)
120
+ res = command.match(/^(?<cmd>[^, \t]+)(?<alias>(?:, [^, \t]+)*)?\s+- (?<desc>.*?)$/)
121
+ commands = [res['cmd']]
122
+ commands.concat(res['alias'].split(/, /).delete_if(&:empty?)) if res['alias']
123
+
124
+ {
125
+ commands: commands,
126
+ description: res['desc'].short_desc
127
+ }
128
+ end
129
+
130
+ def parse_commands(commands)
131
+ commands.map { |cmd| parse_command(cmd) }
132
+ end
133
+
134
+ def generate_subcommand_completions
135
+ out = []
136
+ # processing = []
137
+ @commands.each_with_index do |cmd, i|
138
+ # processing << cmd[:commands].first
139
+ processing = cmd[:commands]
140
+ progress('Processing subcommands', i, @commands.count, processing)
141
+ out << "complete -xc doing -n '__fish_doing_needs_command' -a '#{cmd[:commands].join(' ')}' -d #{Shellwords.escape(cmd[:description])}"
142
+ end
143
+
144
+ out.join("\n")
145
+ end
146
+
147
+ def generate_subcommand_option_completions
148
+
149
+ out = []
150
+ need_export = []
151
+ # processing = []
152
+
153
+ @commands.each_with_index do |cmd, i|
154
+ # processing << cmd[:commands].first
155
+ processing = cmd[:commands]
156
+ progress('Processing subcommand options', i, @commands.count, processing)
157
+
158
+ data = get_help_sections(cmd[:commands].first)
159
+
160
+ if data[:synopsis].join(' ').strip.split(/ /).last =~ /(path|file)/i
161
+ out << "complete -c doing -F -n '__fish_doing_using_command #{cmd[:commands].join(" ")}'"
162
+ end
163
+
164
+ if data[:command_options]
165
+ parse_options(data[:command_options]).each do |option|
166
+ next if option.nil?
167
+
168
+ arg = option[:arg] ? '-r' : ''
169
+ short = option[:short] ? "-s #{option[:short]}" : ''
170
+ long = option[:long] ? "-l #{option[:long]}" : ''
171
+ out << "complete -c doing #{long} #{short} -f #{arg} -n '__fish_doing_using_command #{cmd[:commands].join(' ')}' -d #{Shellwords.escape(option[:description])}"
172
+
173
+ need_export.concat(cmd[:commands]) if option[:long] == 'output'
174
+ end
175
+ end
176
+ end
177
+
178
+ unless need_export.empty?
179
+ out << "complete -f -c doing -s o -l output -x -n '__fish_doing_using_command #{need_export.join(' ')}' -a '(__fish_doing_export_plugins)'"
180
+ end
181
+
182
+ out.join("\n")
183
+ end
184
+
185
+ def initialize
186
+ status('Generating Fish completions', reset: false)
187
+ data = get_help_sections
188
+ @global_options = parse_options(data[:global_options])
189
+ @commands = parse_commands(data[:commands])
190
+ end
191
+
192
+ def generate_completions
193
+ out = []
194
+ out << generate_helpers
195
+ out << generate_subcommand_completions
196
+ out << generate_subcommand_option_completions
197
+ out.join("\n")
198
+ end
199
+ end
200
+
201
+ puts FishCompletions.new.generate_completions
@@ -0,0 +1,164 @@
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift File.join(__dir__, '..', 'lib')
3
+ require 'doing/cli_status'
4
+
5
+ require 'shellwords'
6
+
7
+ class ::String
8
+ def short_desc
9
+ split(/[,.]/)[0].sub(/ \(.*?\)?$/, '').strip
10
+ end
11
+
12
+ def ltrunc(max)
13
+ if length > max
14
+ sub(/^.*?(.{#{max - 3}})$/, '...\1')
15
+ else
16
+ self
17
+ end
18
+ end
19
+
20
+ def ltrunc!(max)
21
+ replace ltrunc(max)
22
+ end
23
+ end
24
+
25
+ class FishCompletions
26
+ include Status
27
+
28
+ attr_accessor :commands, :global_options
29
+
30
+ def generate_helpers
31
+ <<~EOFUNCTIONS
32
+ #compdef doing
33
+
34
+ local ret=1 state
35
+
36
+ _arguments \\
37
+ ':subcommand:->subcommand' \\
38
+ '*::options:->options' && ret=0
39
+
40
+ case $state in
41
+ subcommand)
42
+ local -a subcommands
43
+ subcommands=(
44
+ #{generate_subcommand_completions.join("\n ")}
45
+ )
46
+ _describe -t subcommands 'doing subcommand' subcommands && ret=0
47
+ ;;
48
+ options)
49
+ case $words[1] in
50
+ #{generate_subcommand_option_completions(indent: ' ').join("\n ")}
51
+ esac
52
+
53
+ _arguments $args && ret=0
54
+ ;;
55
+ esac
56
+
57
+ return ret
58
+ EOFUNCTIONS
59
+ end
60
+
61
+ def get_help_sections(command = '')
62
+ res = `bundle exec bin/doing help #{command}`.strip
63
+ scanned = res.scan(/(?m-i)^([A-Z ]+)\n([\s\S]*?)(?=\n+[A-Z]+|\Z)/)
64
+ sections = {}
65
+ scanned.each do |sect|
66
+ title = sect[0].downcase.strip.gsub(/ +/, '_').to_sym
67
+ content = sect[1].split(/\n/).map(&:strip).delete_if(&:empty?)
68
+ sections[title] = content
69
+ end
70
+ sections
71
+ end
72
+
73
+ def parse_option(option)
74
+ res = option.match(/(?:-(?<short>\w), )?(?:--(?:\[no-\])?(?<long>[\w_]+)(?:=(?<arg>\w+))?)\s+- (?<desc>.*?)$/)
75
+ return nil unless res
76
+ {
77
+ short: res['short'],
78
+ long: res['long'],
79
+ arg: res[:arg],
80
+ description: res['desc'].short_desc
81
+ }
82
+ end
83
+
84
+ def parse_options(options)
85
+ options.map { |opt| parse_option(opt) }
86
+ end
87
+
88
+ def parse_command(command)
89
+ res = command.match(/^(?<cmd>[^, \t]+)(?<alias>(?:, [^, \t]+)*)?\s+- (?<desc>.*?)$/)
90
+ commands = [res['cmd']]
91
+ commands.concat(res['alias'].split(/, /).delete_if(&:empty?)) if res['alias']
92
+
93
+ {
94
+ commands: commands,
95
+ description: res['desc'].short_desc
96
+ }
97
+ end
98
+
99
+ def parse_commands(commands)
100
+ commands.map { |cmd| parse_command(cmd) }
101
+ end
102
+
103
+ def generate_subcommand_completions
104
+ out = []
105
+ # processing = []
106
+ @commands.each_with_index do |cmd, i|
107
+ # processing << cmd[:commands].first
108
+ processing = cmd[:commands]
109
+ progress('Processing subcommands', i, @commands.count, processing)
110
+ cmd[:commands].each do |c|
111
+ out << "'#{c}:#{cmd[:description].gsub(/'/,'\\\'')}'"
112
+ end
113
+ end
114
+
115
+ out
116
+ end
117
+
118
+ def generate_subcommand_option_completions(indent: ' ')
119
+
120
+ out = []
121
+ need_export = []
122
+ # processing = []
123
+
124
+ @commands.each_with_index do |cmd, i|
125
+ # processing << cmd[:commands].first
126
+ processing = cmd[:commands]
127
+ progress('Processing subcommand options', i, @commands.count, processing)
128
+
129
+ data = get_help_sections(cmd[:commands].first)
130
+ option_arr = []
131
+
132
+ if data[:command_options]
133
+ parse_options(data[:command_options]).each do |option|
134
+ next if option.nil?
135
+
136
+ arg = option[:arg] ? '-r' : ''
137
+ short = option[:short] ? "-s #{option[:short]}" : ''
138
+ long = option[:long] ? "-l #{option[:long]}" : ''
139
+ arg = option[:arg] ? "=" : ''
140
+ option_arr << %({-#{option[:short]},--#{option[:long]}#{arg}}"[#{option[:description].gsub(/'/,'\\\'')}]")
141
+ end
142
+ end
143
+
144
+ cmd[:commands].each do |c|
145
+ out << "#{c}) \n#{indent+' '}args=( #{option_arr.join(' ')} )\n#{indent};;"
146
+ end
147
+ end
148
+
149
+ out
150
+ end
151
+
152
+ def initialize
153
+ status('Generating Zsh completions', reset: false)
154
+ data = get_help_sections
155
+ @global_options = parse_options(data[:global_options])
156
+ @commands = parse_commands(data[:commands])
157
+ end
158
+
159
+ def generate_completions
160
+ generate_helpers
161
+ end
162
+ end
163
+
164
+ puts FishCompletions.new.generate_completions
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doing
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.92
4
+ version: 2.0.5.pre
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-10-16 00:00:00.000000000 Z
11
+ date: 2021-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: safe_yaml
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rake
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -162,16 +176,78 @@ extensions: []
162
176
  extra_rdoc_files:
163
177
  - README.md
164
178
  files:
179
+ - AUTHORS
180
+ - CHANGELOG.md
181
+ - COMMANDS.md
182
+ - Gemfile
183
+ - Gemfile.lock
184
+ - LICENSE
165
185
  - README.md
186
+ - Rakefile
187
+ - _config.yml
166
188
  - bin/doing
189
+ - doing.fish
190
+ - doing.gemspec
191
+ - doing.rdoc
192
+ - example_plugin.rb
193
+ - generate_completions.sh
194
+ - img/doing-colors.jpg
195
+ - img/doing-printf-wrap-800.jpg
196
+ - img/doing-show-note-formatting-800.jpg
197
+ - lib/completion/_doing.zsh
198
+ - lib/completion/doing.bash
199
+ - lib/completion/doing.fish
167
200
  - lib/doing.rb
168
- - lib/doing/helpers.rb
169
- - lib/doing/markdown_export.rb
201
+ - lib/doing/array.rb
202
+ - lib/doing/cli_status.rb
203
+ - lib/doing/colors.rb
204
+ - lib/doing/configuration.rb
205
+ - lib/doing/errors.rb
206
+ - lib/doing/hash.rb
207
+ - lib/doing/hooks.rb
208
+ - lib/doing/item.rb
209
+ - lib/doing/log_adapter.rb
210
+ - lib/doing/markdown_document_listener.rb
211
+ - lib/doing/note.rb
212
+ - lib/doing/pager.rb
213
+ - lib/doing/plugin_manager.rb
214
+ - lib/doing/plugins/export/csv_export.rb
215
+ - lib/doing/plugins/export/html_export.rb
216
+ - lib/doing/plugins/export/json_export.rb
217
+ - lib/doing/plugins/export/markdown_export.rb
218
+ - lib/doing/plugins/export/taskpaper_export.rb
219
+ - lib/doing/plugins/export/template_export.rb
220
+ - lib/doing/plugins/import/cal_to_json.scpt
221
+ - lib/doing/plugins/import/calendar_import.rb
222
+ - lib/doing/plugins/import/doing_import.rb
223
+ - lib/doing/plugins/import/timing_import.rb
224
+ - lib/doing/string.rb
225
+ - lib/doing/symbol.rb
226
+ - lib/doing/time.rb
227
+ - lib/doing/util.rb
170
228
  - lib/doing/version.rb
171
229
  - lib/doing/wwid.rb
230
+ - lib/doing/wwidfile.rb
231
+ - lib/examples/commands/wiki.rb
232
+ - lib/examples/plugins/hooks.rb
233
+ - lib/examples/plugins/say_export.rb
234
+ - lib/examples/plugins/templates/wiki.css
235
+ - lib/examples/plugins/templates/wiki.haml
236
+ - lib/examples/plugins/templates/wiki_index.haml
237
+ - lib/examples/plugins/wiki_export.rb
172
238
  - lib/helpers/fuzzyfilefinder
239
+ - lib/templates/doing-markdown.erb
173
240
  - lib/templates/doing.css
174
241
  - lib/templates/doing.haml
242
+ - man/doing.1
243
+ - man/doing.1.html
244
+ - man/doing.1.ronn
245
+ - package-lock.json
246
+ - rdoc_to_mmd.rb
247
+ - rdocfixer.rb
248
+ - scripts/generate_bash_completions.rb
249
+ - scripts/generate_fish_completions.rb
250
+ - scripts/generate_zsh_completions.rb
175
251
  homepage: http://brettterpstra.com/project/doing/
176
252
  licenses:
177
253
  - MIT
@@ -184,7 +260,6 @@ rdoc_options:
184
260
  - README.md
185
261
  - "--markup"
186
262
  - markdown
187
- - "-ri"
188
263
  require_paths:
189
264
  - lib
190
265
  - lib
@@ -195,9 +270,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
195
270
  version: '0'
196
271
  required_rubygems_version: !ruby/object:Gem::Requirement
197
272
  requirements:
198
- - - ">="
273
+ - - ">"
199
274
  - !ruby/object:Gem::Version
200
- version: '0'
275
+ version: 1.3.1
201
276
  requirements: []
202
277
  rubygems_version: 3.2.16
203
278
  signing_key: