work_md 0.2.5 → 0.2.6
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.
- checksums.yaml +4 -4
- data/lib/work_md.rb +2 -0
- data/lib/work_md/cli.rb +2 -0
- data/lib/work_md/commands/parse.rb +6 -13
- data/lib/work_md/commands/today.rb +1 -44
- data/lib/work_md/commands/yesterday.rb +13 -0
- data/lib/work_md/config.rb +0 -4
- data/lib/work_md/file.rb +48 -0
- data/lib/work_md/parser/engine.rb +16 -28
- data/lib/work_md/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 566027a143beb9e55274abe76ef2f0d0c7a44078d4773c595e9cdce2175a2c32
|
4
|
+
data.tar.gz: d4094062e154849f8514d26c20d52d37e931d3f844f2b162cb26eab2b7a70d5d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41053f4429dfd6a4a3af74e52da1d6f131aac58c79c9034a201814a89dc67fd7a2e3feae74c25afa8c0ffc0b610cf9d8332392ee69cb66f43011779033a4af21
|
7
|
+
data.tar.gz: 4daed1478dedc190e1d3eef1719c54f16af4040519b276ab08820453e08371112fd92cd70b9aef8c3e32480cee65257daa884f3580b0748cb8d32c34c6fabd3f
|
data/lib/work_md.rb
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
require_relative 'work_md/version'
|
4
4
|
require_relative 'work_md/config'
|
5
|
+
require_relative 'work_md/file'
|
5
6
|
require_relative 'work_md/commands/today'
|
7
|
+
require_relative 'work_md/commands/yesterday'
|
6
8
|
require_relative 'work_md/parser/engine'
|
7
9
|
require_relative 'work_md/commands/parse'
|
8
10
|
require_relative 'work_md/cli'
|
data/lib/work_md/cli.rb
CHANGED
@@ -7,6 +7,7 @@ module WorkMd
|
|
7
7
|
ALIAS_COMMANDS =
|
8
8
|
{
|
9
9
|
't' => 'today',
|
10
|
+
'y' => 'yesterday',
|
10
11
|
'p' => 'parse'
|
11
12
|
}.freeze
|
12
13
|
|
@@ -44,6 +45,7 @@ module WorkMd
|
|
44
45
|
'',
|
45
46
|
'- work_md',
|
46
47
|
'- work_md today',
|
48
|
+
'- work_md yesterday',
|
47
49
|
'- work_md parse',
|
48
50
|
'',
|
49
51
|
'read more in github.com/henriquefernandez/work_md',
|
@@ -27,9 +27,9 @@ module WorkMd
|
|
27
27
|
|
28
28
|
parser.freeze
|
29
29
|
|
30
|
-
File.delete(PARSED_FILE_PATH) if File.exist? PARSED_FILE_PATH
|
30
|
+
::File.delete(PARSED_FILE_PATH) if ::File.exist? PARSED_FILE_PATH
|
31
31
|
|
32
|
-
File.open(PARSED_FILE_PATH, 'w+') do |f|
|
32
|
+
::File.open(PARSED_FILE_PATH, 'w+') do |f|
|
33
33
|
f.puts("# #{WorkMd::Config.title}\n\n")
|
34
34
|
f.puts("### #{t[:tasks]} (#{parser.tasks.size}):\n\n")
|
35
35
|
parser.tasks.each do |task|
|
@@ -38,16 +38,7 @@ module WorkMd
|
|
38
38
|
f.puts("---\n\n")
|
39
39
|
f.puts("### #{t[:meetings]} (#{parser.meetings.size}):\n\n")
|
40
40
|
parser.meetings.each do |meeting|
|
41
|
-
f.puts("- #{meeting}\n\n")
|
42
|
-
end
|
43
|
-
f.puts("---\n\n")
|
44
|
-
f.puts("### #{t[:annotations]}:\n\n")
|
45
|
-
parser.annotations.each do |annotation|
|
46
|
-
f.puts("- #{annotation.gsub('###', '')}") unless annotation.nil?
|
47
|
-
end
|
48
|
-
f.puts("###### #{t[:meeting_annotations]}:\n\n")
|
49
|
-
parser.meeting_annotations.each do |meeting_annotation|
|
50
|
-
f.puts("- #{meeting_annotation}\n\n")
|
41
|
+
f.puts("- [#{meeting}\n\n") if meeting != ' ]'
|
51
42
|
end
|
52
43
|
f.puts("---\n\n")
|
53
44
|
f.puts("### #{t[:interruptions]} (#{parser.interruptions.size}):\n\n")
|
@@ -71,9 +62,11 @@ module WorkMd
|
|
71
62
|
else
|
72
63
|
::TTY::Editor.open(PARSED_FILE_PATH)
|
73
64
|
end
|
74
|
-
rescue
|
65
|
+
rescue => e
|
75
66
|
WorkMd::Cli.info(
|
76
67
|
::TTY::Box.frame(
|
68
|
+
"message: #{e.message}",
|
69
|
+
"",
|
77
70
|
"Usage examples:",
|
78
71
|
"",
|
79
72
|
"work_md parse -d=1 -m=5 -y=2000 | get day 1 from month 5 and year 2000",
|
@@ -5,50 +5,7 @@ module WorkMd
|
|
5
5
|
class Today
|
6
6
|
class << self
|
7
7
|
def execute(_argv = [])
|
8
|
-
|
9
|
-
t = WorkMd::Config.translations
|
10
|
-
work_dir = WorkMd::Config.work_dir
|
11
|
-
|
12
|
-
::FileUtils
|
13
|
-
.mkdir_p("#{work_dir}/#{today.strftime('%Y/%m')}")
|
14
|
-
unless ::File
|
15
|
-
.exist?(
|
16
|
-
"#{work_dir}/#{today.strftime('%Y/%m/%d')}.md"
|
17
|
-
)
|
18
|
-
::File.open(
|
19
|
-
"#{work_dir}/#{today.strftime('%Y/%m/%d')}.md",
|
20
|
-
'w+'
|
21
|
-
) do |f|
|
22
|
-
f.puts("# #{today.strftime('%d/%m/%Y')} - #{WorkMd::Config.title} \n\n")
|
23
|
-
f.puts("### #{t[:tasks]}:\n\n")
|
24
|
-
f.puts("- [ ]\n\n")
|
25
|
-
f.puts("---\n\n")
|
26
|
-
f.puts("### #{t[:meetings]}:\n\n")
|
27
|
-
f.puts("---\n\n")
|
28
|
-
f.puts("### #{t[:annotations]}:\n\n")
|
29
|
-
f.puts("###### #{t[:meeting_annotations]}:\n\n")
|
30
|
-
f.puts("---\n\n")
|
31
|
-
f.puts("### #{t[:interruptions]}:\n\n")
|
32
|
-
f.puts("---\n\n")
|
33
|
-
f.puts("### #{t[:difficulties]}:\n\n")
|
34
|
-
f.puts("---\n\n")
|
35
|
-
f.puts("### #{t[:pomodoros]}:\n\n")
|
36
|
-
f.puts("0\n\n")
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
editor = WorkMd::Config.editor
|
41
|
-
|
42
|
-
::FileUtils.cd(work_dir) do
|
43
|
-
unless editor.nil?
|
44
|
-
::TTY::Editor.open(
|
45
|
-
"#{today.strftime('%Y/%m/%d')}.md",
|
46
|
-
command: editor
|
47
|
-
)
|
48
|
-
else
|
49
|
-
::TTY::Editor.open("#{today.strftime('%Y/%m/%d')}.md")
|
50
|
-
end
|
51
|
-
end
|
8
|
+
WorkMd::File.open_or_create(DateTime.now)
|
52
9
|
end
|
53
10
|
end
|
54
11
|
end
|
data/lib/work_md/config.rb
CHANGED
@@ -10,8 +10,6 @@ module WorkMd
|
|
10
10
|
{
|
11
11
|
tasks: 'Atividades',
|
12
12
|
meetings: 'Reuniões',
|
13
|
-
annotations: 'Anotações',
|
14
|
-
meeting_annotations: 'Anotações de Reunião',
|
15
13
|
interruptions: 'Interrupções',
|
16
14
|
difficulties: 'Dificuldades',
|
17
15
|
pomodoros: 'Pomodoros / Ciclos',
|
@@ -21,8 +19,6 @@ module WorkMd
|
|
21
19
|
{
|
22
20
|
tasks: 'Tasks',
|
23
21
|
meetings: 'Meetings',
|
24
|
-
annotations: 'Annotations',
|
25
|
-
meeting_annotations: 'Meeting Annotations',
|
26
22
|
interruptions: 'Interruptions',
|
27
23
|
difficulties: 'Difficulties',
|
28
24
|
pomodoros: 'Pomodoros / Cycles',
|
data/lib/work_md/file.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WorkMd
|
4
|
+
class File
|
5
|
+
def self.open_or_create(some_date)
|
6
|
+
t = WorkMd::Config.translations
|
7
|
+
work_dir = WorkMd::Config.work_dir
|
8
|
+
|
9
|
+
::FileUtils
|
10
|
+
.mkdir_p("#{work_dir}/#{some_date.strftime('%Y/%m')}")
|
11
|
+
unless ::File.exist?("#{work_dir}/#{some_date.strftime('%Y/%m/%d')}.md")
|
12
|
+
::File.open(
|
13
|
+
"#{work_dir}/#{some_date.strftime('%Y/%m/%d')}.md",
|
14
|
+
'w+'
|
15
|
+
) do |f|
|
16
|
+
# rubocop:disable Layout/LineLength
|
17
|
+
f.puts("# #{some_date.strftime('%d/%m/%Y')} - #{WorkMd::Config.title} \n\n")
|
18
|
+
# rubocop:enable Layout/LineLength
|
19
|
+
f.puts("### #{t[:tasks]}:\n\n")
|
20
|
+
f.puts("- [ ]\n\n")
|
21
|
+
f.puts("---\n\n")
|
22
|
+
f.puts("### #{t[:meetings]}:\n\n")
|
23
|
+
f.puts("- [ ]\n\n")
|
24
|
+
f.puts("---\n\n")
|
25
|
+
f.puts("### #{t[:interruptions]}:\n\n")
|
26
|
+
f.puts("---\n\n")
|
27
|
+
f.puts("### #{t[:difficulties]}:\n\n")
|
28
|
+
f.puts("---\n\n")
|
29
|
+
f.puts("### #{t[:pomodoros]}:\n\n")
|
30
|
+
f.puts("0\n\n")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
editor = WorkMd::Config.editor
|
35
|
+
|
36
|
+
::FileUtils.cd(work_dir) do
|
37
|
+
if editor.nil?
|
38
|
+
::TTY::Editor.open("#{some_date.strftime('%Y/%m/%d')}.md")
|
39
|
+
else
|
40
|
+
::TTY::Editor.open(
|
41
|
+
"#{some_date.strftime('%Y/%m/%d')}.md",
|
42
|
+
command: editor
|
43
|
+
)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# rubocop:disable Metrics/ClassLength
|
4
3
|
module WorkMd
|
5
4
|
module Parser
|
6
5
|
class Engine
|
@@ -9,11 +8,10 @@ module WorkMd
|
|
9
8
|
|
10
9
|
class ParsedFile
|
11
10
|
attr_accessor :tasks,
|
12
|
-
:annotations,
|
13
|
-
:meeting_annotations,
|
14
11
|
:meetings,
|
15
12
|
:interruptions,
|
16
13
|
:difficulties,
|
14
|
+
:date,
|
17
15
|
:pomodoros
|
18
16
|
end
|
19
17
|
|
@@ -27,7 +25,7 @@ module WorkMd
|
|
27
25
|
raise IS_FROZEN_ERROR_MESSAGE if @frozen
|
28
26
|
|
29
27
|
begin
|
30
|
-
file_content = File.read(file)
|
28
|
+
file_content = ::File.read(file)
|
31
29
|
rescue Errno::ENOENT
|
32
30
|
return
|
33
31
|
end
|
@@ -50,19 +48,6 @@ module WorkMd
|
|
50
48
|
@tasks ||= @parsed_files.map(&:tasks).flatten
|
51
49
|
end
|
52
50
|
|
53
|
-
def annotations
|
54
|
-
raise IS_NOT_FROZEN_ERROR_MESSAGE unless @frozen
|
55
|
-
|
56
|
-
@annotations ||= @parsed_files.map(&:annotations).flatten
|
57
|
-
end
|
58
|
-
|
59
|
-
def meeting_annotations
|
60
|
-
raise IS_NOT_FROZEN_ERROR_MESSAGE unless @frozen
|
61
|
-
|
62
|
-
@meeting_annotations ||=
|
63
|
-
@parsed_files.map(&:meeting_annotations).flatten
|
64
|
-
end
|
65
|
-
|
66
51
|
def meetings
|
67
52
|
raise IS_NOT_FROZEN_ERROR_MESSAGE unless @frozen
|
68
53
|
|
@@ -115,18 +100,22 @@ module WorkMd
|
|
115
100
|
# rubocop:disable Metrics/CyclomaticComplexity
|
116
101
|
# rubocop:disable Metrics/PerceivedComplexity
|
117
102
|
def parse_content(parsed_file, content)
|
118
|
-
if content.start_with?(
|
119
|
-
parsed_file.
|
103
|
+
if content.start_with?('# ')
|
104
|
+
parsed_file.date =
|
105
|
+
content.split(' - ')[0].gsub('# ', '').gsub("\n\n", '')
|
106
|
+
elsif content.start_with?(@t[:tasks])
|
107
|
+
parsed_file.tasks = parse_check_list(content)
|
120
108
|
elsif content.start_with?(@t[:meetings])
|
121
|
-
parsed_file.meetings =
|
122
|
-
elsif content.start_with?(@t[:meeting_annotations])
|
123
|
-
parsed_file.meeting_annotations = basic_parse(content)
|
124
|
-
elsif content.start_with?(@t[:annotations])
|
125
|
-
parsed_file.annotations = basic_parse(content)
|
109
|
+
parsed_file.meetings = parse_check_list(content)
|
126
110
|
elsif content.start_with?(@t[:interruptions])
|
127
|
-
parsed_file.interruptions = parse_list(content)
|
111
|
+
parsed_file.interruptions = parse_list(content).map do |interruption|
|
112
|
+
"(#{parsed_file.date}) #{interruption}"
|
113
|
+
end
|
128
114
|
elsif content.start_with?(@t[:difficulties])
|
129
|
-
parsed_file.difficulties = parse_list(content)
|
115
|
+
parsed_file.difficulties = parse_list(content).map do |difficulty|
|
116
|
+
"(#{parsed_file.date}) #{difficulty}"
|
117
|
+
end
|
118
|
+
|
130
119
|
elsif content.start_with?(@t[:pomodoros])
|
131
120
|
parsed_file.pomodoros = parse_pomodoro(content)
|
132
121
|
end
|
@@ -134,7 +123,7 @@ module WorkMd
|
|
134
123
|
# rubocop:enable Metrics/CyclomaticComplexity
|
135
124
|
# rubocop:enable Metrics/PerceivedComplexity
|
136
125
|
|
137
|
-
def
|
126
|
+
def parse_check_list(content)
|
138
127
|
clear_list(basic_parse(content).split('- ['))
|
139
128
|
end
|
140
129
|
|
@@ -161,4 +150,3 @@ module WorkMd
|
|
161
150
|
end
|
162
151
|
end
|
163
152
|
end
|
164
|
-
# rubocop:enable Metrics/ClassLength
|
data/lib/work_md/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: work_md
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henrique Fernandez Teixeira
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tty-box
|
@@ -53,7 +53,9 @@ files:
|
|
53
53
|
- lib/work_md/cli.rb
|
54
54
|
- lib/work_md/commands/parse.rb
|
55
55
|
- lib/work_md/commands/today.rb
|
56
|
+
- lib/work_md/commands/yesterday.rb
|
56
57
|
- lib/work_md/config.rb
|
58
|
+
- lib/work_md/file.rb
|
57
59
|
- lib/work_md/parser/engine.rb
|
58
60
|
- lib/work_md/version.rb
|
59
61
|
homepage:
|