todo_marker 0.1.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1611c99217fb8bdc944629afe27af2b603314ff4164e1c71738a50928d2ef58e
4
- data.tar.gz: 377b5b8dcaeae8400dc51ae5a66b62ed7a41f8770c7f4fcd8f7942db452a96c3
3
+ metadata.gz: bca81325f56048674c08b2159e78ffa15c8e2115f221d02c67fb6e267be6d496
4
+ data.tar.gz: d8d65957d51ff2b8c99ebd54cd86c5c159226b90a7abe04c435c623cf94adeb6
5
5
  SHA512:
6
- metadata.gz: 31a68e4191f0bd55054ef1626e2e724562b7dfabee66c1c9a04605287f6850aa6cb282f697325bdc6c1d116638f5f933670a29317ec4cee8e4546ae3b3da876c
7
- data.tar.gz: 10abd7e84f082bf4d134f871b45726995eb07632af18620cc553586fdd7010c96c9401781befe9a7de890c52b7dd891ead9bce262f91ec0af21d22c2ebf92d6e
6
+ metadata.gz: deeb78bec21739a40a24ed2cd21535de2927cb0e75324550219e9fed64a5565910fefb8b3aa95ffca6eed64928026d7c824172eaa7352688ba91bebab58c8300
7
+ data.tar.gz: ff9d4c5e0aca9893bbdff5e51218e249f8a0eb3c9cb898235cd1c042af7cd516568b4adf95147f2b67bcf5cdc86419395bfeee2d925ebdbd45a858df451187db
data/bin/todo_marker CHANGED
@@ -4,6 +4,10 @@
4
4
  # !/usr/bin/env ruby
5
5
 
6
6
  require 'todo_marker'
7
+ require 'date'
8
+
9
+ DONATION_LINK = 'https://www.paypal.com/donate/?hosted_button_id=YF5XS7ZXQ6F8A'
10
+ TIMESTAMP_FILE = File.join(Dir.home, '.todo_marker_last_donation_prompt')
7
11
 
8
12
  if ARGV.empty?
9
13
  puts 'Usage: todo_marker <directory>'
@@ -18,3 +22,22 @@ end
18
22
 
19
23
  TodoMarker.generate_todo_md(directory)
20
24
  puts "TODO.md has been generated in the #{directory} directory."
25
+
26
+ def should_show_donation_message?
27
+ return true unless File.exist?(TIMESTAMP_FILE)
28
+
29
+ last_prompt = Date.parse(File.read(TIMESTAMP_FILE).strip)
30
+ (Date.today - last_prompt).to_i >= 7 # Show message once a week
31
+ rescue ArgumentError
32
+ true
33
+ end
34
+
35
+ def update_timestamp
36
+ File.write(TIMESTAMP_FILE, Date.today.to_s)
37
+ end
38
+
39
+ if should_show_donation_message?
40
+ puts "\nEnjoying TodoMarker? Consider donating to support development:"
41
+ puts DONATION_LINK
42
+ update_timestamp
43
+ end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # lib/todo_marker/version.rb
4
4
  module TodoMarker
5
- VERSION = '0.1.0'
5
+ VERSION = '0.2.2'
6
6
  end
data/lib/todo_marker.rb CHANGED
@@ -5,7 +5,13 @@ require 'todo_marker/version'
5
5
  require 'find'
6
6
 
7
7
  module TodoMarker
8
- TODO_REGEX = /# !!TODO!! "(.*?)"/
8
+ TODO_REGEX = /# !!TODO!!(?: style: (\w+))? "(.*?)"/
9
+ STYLES = {
10
+ 'title1' => '# %s',
11
+ 'title2' => '## %s',
12
+ 'title3' => '### %s',
13
+ 'sublist' => ' - %s'
14
+ }.freeze
9
15
 
10
16
  def self.generate_todo_md(directory)
11
17
  todos = []
@@ -16,8 +22,10 @@ module TodoMarker
16
22
  File.readlines(path).each_with_index do |line, index|
17
23
  next unless line.match(TODO_REGEX)
18
24
 
25
+ style, message = line.match(TODO_REGEX).captures
19
26
  todos << {
20
- message: line.match(TODO_REGEX)[1],
27
+ style:,
28
+ message:,
21
29
  file: path,
22
30
  line: index + 1
23
31
  }
@@ -31,8 +39,22 @@ module TodoMarker
31
39
  File.open(File.join(directory, 'TODO.md'), 'w') do |file|
32
40
  file.puts "# TODO List\n\n"
33
41
  todos.each do |todo|
34
- file.puts "- #{todo[:message]} (#{todo[:file]}:#{todo[:line]})"
42
+ formatted_message = format_message(todo[:style], todo[:message])
43
+ file.puts formatted_message
44
+ file.puts " (#{todo[:file]}:#{todo[:line]})" if todo[:style].nil?
35
45
  end
36
46
  end
37
47
  end
48
+
49
+ def self.format_message(style, message)
50
+ if style
51
+ if style == 'sublist'
52
+ " - #{message}"
53
+ else
54
+ STYLES[style] % message
55
+ end
56
+ else
57
+ "- #{message}"
58
+ end
59
+ end
38
60
  end
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: todo_marker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - VetheonGames
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-15 00:00:00.000000000 Z
11
+ date: 2024-06-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |-
14
14
  This standalone gem takes in source code files written in Ruby, and generates a TODO.md file from
15
- them.
16
- mark things to add to the TODO.md with the `# !!TODO!!` magic comment
15
+ them. Mark things to add to the TODO.md with the # !!TODO!! magic comment. Ensure to checkout the
16
+ documentation to learn styles!
17
17
  email:
18
18
  - connor@pixelridgesoftworks.com
19
19
  executables:
@@ -26,12 +26,15 @@ files:
26
26
  - bin/todo_marker
27
27
  - lib/todo_marker.rb
28
28
  - lib/todo_marker/version.rb
29
- homepage: https://git.pixelridgesoftworks.com/PixelRidge-Softworks/Todo_Marker
29
+ homepage: https://git.pixelridgesoftworks.com/PixelRidge-Softworks
30
30
  licenses:
31
- - MIT
31
+ - GNU V3.0
32
32
  metadata:
33
- homepage_uri: https://git.pixelridgesoftworks.com/PixelRidge-Softworks/Todo_Marker
33
+ homepage_uri: https://git.pixelridgesoftworks.com/PixelRidge-Softworks
34
34
  source_code_uri: https://git.pixelridgesoftworks.com/PixelRidge-Softworks/Todo_Marker
35
+ documentation_uri: https://git.pixelridgesoftworks.com/PixelRidge-Softworks/Todo_Marker/src/branch/main/README.md
36
+ changelog_uri: https://git.pixelridgesoftworks.com/PixelRidge-Softworks/Todo_Marker/src/branch/main/changelog.md
37
+ funding_uri: https://www.paypal.com/donate/?hosted_button_id=YF5XS7ZXQ6F8A
35
38
  rubygems_mfa_required: 'true'
36
39
  post_install_message:
37
40
  rdoc_options: []
@@ -48,7 +51,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
48
51
  - !ruby/object:Gem::Version
49
52
  version: '0'
50
53
  requirements: []
51
- rubygems_version: 3.5.7
54
+ rubygems_version: 3.5.14
52
55
  signing_key:
53
56
  specification_version: 4
54
57
  summary: Standalone gem for generating TODO.md files