doing 1.0.90 → 2.0.2.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/AUTHORS +19 -0
- data/CHANGELOG.md +590 -0
- data/COMMANDS.md +1181 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +110 -0
- data/LICENSE +23 -0
- data/README.md +14 -697
- data/Rakefile +79 -0
- data/_config.yml +1 -0
- data/bin/doing +1037 -481
- data/doing.fish +278 -0
- data/doing.gemspec +34 -0
- data/doing.rdoc +1759 -0
- data/example_plugin.rb +209 -0
- data/generate_completions.sh +4 -0
- data/img/doing-colors.jpg +0 -0
- data/img/doing-printf-wrap-800.jpg +0 -0
- data/img/doing-show-note-formatting-800.jpg +0 -0
- data/lib/completion/_doing.zsh +151 -0
- data/lib/completion/doing.bash +416 -0
- data/lib/completion/doing.fish +278 -0
- data/lib/doing/array.rb +8 -0
- data/lib/doing/cli_status.rb +66 -0
- data/lib/doing/colors.rb +136 -0
- data/lib/doing/configuration.rb +310 -0
- data/lib/doing/errors.rb +102 -0
- data/lib/doing/hash.rb +31 -0
- data/lib/doing/hooks.rb +59 -0
- data/lib/doing/item.rb +155 -0
- data/lib/doing/log_adapter.rb +342 -0
- data/lib/doing/markdown_document_listener.rb +174 -0
- data/lib/doing/note.rb +59 -0
- data/lib/doing/pager.rb +95 -0
- data/lib/doing/plugin_manager.rb +208 -0
- data/lib/doing/plugins/export/csv_export.rb +48 -0
- data/lib/doing/plugins/export/html_export.rb +83 -0
- data/lib/doing/plugins/export/json_export.rb +140 -0
- data/lib/doing/plugins/export/markdown_export.rb +85 -0
- data/lib/doing/plugins/export/taskpaper_export.rb +34 -0
- data/lib/doing/plugins/export/template_export.rb +141 -0
- data/lib/doing/plugins/import/cal_to_json.scpt +0 -0
- data/lib/doing/plugins/import/calendar_import.rb +76 -0
- data/lib/doing/plugins/import/doing_import.rb +144 -0
- data/lib/doing/plugins/import/timing_import.rb +78 -0
- data/lib/doing/string.rb +346 -0
- data/lib/doing/symbol.rb +16 -0
- data/lib/doing/time.rb +18 -0
- data/lib/doing/util.rb +186 -0
- data/lib/doing/version.rb +1 -1
- data/lib/doing/wwid.rb +1838 -2266
- data/lib/doing/wwidfile.rb +117 -0
- data/lib/doing.rb +43 -2
- data/lib/examples/commands/wiki.rb +80 -0
- data/lib/examples/plugins/hooks.rb +22 -0
- data/lib/examples/plugins/say_export.rb +202 -0
- data/lib/examples/plugins/templates/wiki.css +169 -0
- data/lib/examples/plugins/templates/wiki.haml +27 -0
- data/lib/examples/plugins/templates/wiki_index.haml +18 -0
- data/lib/examples/plugins/wiki_export.rb +87 -0
- data/lib/templates/doing-markdown.erb +5 -0
- data/man/doing.1 +964 -0
- data/man/doing.1.html +711 -0
- data/man/doing.1.ronn +600 -0
- data/package-lock.json +3 -0
- data/rdoc_to_mmd.rb +42 -0
- data/rdocfixer.rb +13 -0
- data/scripts/generate_bash_completions.rb +210 -0
- data/scripts/generate_fish_completions.rb +201 -0
- data/scripts/generate_zsh_completions.rb +164 -0
- metadata +82 -6
- data/lib/doing/helpers.rb +0 -121
data/lib/doing/helpers.rb
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
##
|
2
|
-
## @brief Hash helpers
|
3
|
-
##
|
4
|
-
class ::Hash
|
5
|
-
def has_tags?(tags, bool = :and)
|
6
|
-
tags = tags.split(/ *, */) if tags.is_a? String
|
7
|
-
bool = bool.normalize_bool if bool.is_a? String
|
8
|
-
item = self
|
9
|
-
tags.map! {|t| t.strip.sub(/^@/, '')}
|
10
|
-
case bool
|
11
|
-
when :and
|
12
|
-
result = true
|
13
|
-
tags.each do |tag|
|
14
|
-
unless item['title'] =~ /@#{tag}/
|
15
|
-
result = false
|
16
|
-
break
|
17
|
-
end
|
18
|
-
end
|
19
|
-
result
|
20
|
-
when :not
|
21
|
-
result = true
|
22
|
-
tags.each do |tag|
|
23
|
-
if item['title'] =~ /@#{tag}/
|
24
|
-
result = false
|
25
|
-
break
|
26
|
-
end
|
27
|
-
end
|
28
|
-
result
|
29
|
-
else
|
30
|
-
result = false
|
31
|
-
tags.each do |tag|
|
32
|
-
if item['title'] =~ /@#{tag}/
|
33
|
-
result = true
|
34
|
-
break
|
35
|
-
end
|
36
|
-
end
|
37
|
-
result
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def matches_search?(search)
|
42
|
-
item = self
|
43
|
-
text = item['note'] ? item['title'] + item['note'].join(' ') : item['title']
|
44
|
-
pattern = if search.strip =~ %r{^/.*?/$}
|
45
|
-
search.sub(%r{/(.*?)/}, '\1')
|
46
|
-
else
|
47
|
-
search.split('').join('.{0,3}')
|
48
|
-
end
|
49
|
-
text =~ /#{pattern}/i ? true : false
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
##
|
54
|
-
## @brief String helpers
|
55
|
-
##
|
56
|
-
class ::String
|
57
|
-
def cap_first
|
58
|
-
sub(/^\w/) do |m|
|
59
|
-
m.upcase
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
|
64
|
-
##
|
65
|
-
## @brief Convert a boolean string to a symbol
|
66
|
-
##
|
67
|
-
## @return Symbol :and, :or, or :not
|
68
|
-
##
|
69
|
-
def normalize_bool!
|
70
|
-
replace normalize_bool
|
71
|
-
end
|
72
|
-
|
73
|
-
def normalize_bool(default = :and)
|
74
|
-
case self
|
75
|
-
when /(and|all)/i
|
76
|
-
:and
|
77
|
-
when /(any|or)/i
|
78
|
-
:or
|
79
|
-
when /(not|none)/i
|
80
|
-
:not
|
81
|
-
else
|
82
|
-
default.is_a?(Symbol) ? default : default.normalize_bool
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
|
87
|
-
##
|
88
|
-
## @brief Turn raw urls into HTML links
|
89
|
-
##
|
90
|
-
## @param opt (Hash) Additional Options
|
91
|
-
##
|
92
|
-
def link_urls(opt = {})
|
93
|
-
opt[:format] ||= :html
|
94
|
-
if opt[:format] == :html
|
95
|
-
gsub(%r{(?mi)((http|https)://)([\w\-_]+(\.[\w\-_]+)+)([\w\-.,@?^=%&:/~+#]*[\w\-@^=%&/~+#])?}) do |_match|
|
96
|
-
m = Regexp.last_match
|
97
|
-
proto = m[1].nil? ? 'http://' : ''
|
98
|
-
%(<a href="#{proto}#{m[0]}" title="Link to #{m[0]}">[#{m[3]}]</a>)
|
99
|
-
end.gsub(/<(\w+:.*?)>/) do |match|
|
100
|
-
m = Regexp.last_match
|
101
|
-
if m[1] =~ /<a href/
|
102
|
-
match
|
103
|
-
else
|
104
|
-
%(<a href="#{m[1]}" title="Link to #{m[1]}">[link]</a>)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
else
|
108
|
-
self
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
class ::Symbol
|
114
|
-
def normalize_bool!
|
115
|
-
replace normalize_bool
|
116
|
-
end
|
117
|
-
|
118
|
-
def normalize_bool
|
119
|
-
to_s.normalize_bool
|
120
|
-
end
|
121
|
-
end
|