utils 0.60.2 → 0.61.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6248e316412b8927ac4a15ed491fdbe83d86db6f121d96de85eed9a6aa1cd400
4
- data.tar.gz: 2845d382afc8c0a597a947c2213ba1043548a19031865db0f57a087e72a9c044
3
+ metadata.gz: c49b13b25be28b485a47834d29a84674332532062a752b3cae2da1877fca4b38
4
+ data.tar.gz: a2a8292a3b73c5527915f81218be45a9f48af681827aa342c0d79bfc2172ce9d
5
5
  SHA512:
6
- metadata.gz: 438e3e13d461aeb22ffbccac934906b98b52bcc1e31af6cb2eaf9006631f7ea11ddfe76ba78cb3bee85ba980eb4190c1db99b4e0b342ca046283cd47e6360830
7
- data.tar.gz: 6643afbc8922f6711939cb91371e5b56310147ffcb7774ee4e950eeae0b041c52ac927f9a6b061ff7aa4ca19bdeece11a4fa42d05a8d9e4f76fd09677a3eda32
6
+ metadata.gz: 9233604e38ee99da756da940174ccaadf801fef1be301e4cd58bdbfd076fc448a412e48d436ccb8f607729c521bb32096e459282607815888c582be72cded64a
7
+ data.tar.gz: 60f5a01d279a88784aa6c717b2baf11396d0fc5703f30b1353144e650bfba49c9b473114f8817fbfd70326358e99cf6952d18c8a301d233035ef1d095e37d18f
data/bin/code_comment CHANGED
@@ -8,7 +8,7 @@ def fetch_method(filename_linenumber)
8
8
  result = ''
9
9
  source_location = filename_linenumber.source_location
10
10
  lf = Tins::LinesFile.for_filename(source_location.filename, source_location.linenumber)
11
- if spaces = lf.match_backward(/^(\s*)def\s+(?:\S+?)(?:\(|\s*$)/)&.first
11
+ if spaces = lf.match_backward(/^(\s*|.*?(private|protected)\s+)def\s+(?:\S+?)(?:\(|\s*$)/)&.first
12
12
  line_number_begin = lf.line_number
13
13
  lf.match_forward(/^#{spaces}end/)
14
14
  line_number_end = lf.line_number
@@ -26,11 +26,12 @@ def fetch_file(filename_linenumber)
26
26
  end
27
27
 
28
28
  filename_linenumber = ARGV.shift or fail "require file_name as second argument"
29
- method = fetch_method(filename_linenumber)
30
- #file = fetch_file(filename_linenumber)
31
- files = Dir['{lib,spec,test}/**/*.rb']
32
- base_url = ENV['OLLAMA_URL'] || 'http://%s' % ENV.fetch('OLLAMA_HOST')
33
- model = ENV.fetch('OLLAMA_MODEL', 'llama3.1')
29
+ method = fetch_method(filename_linenumber)
30
+ method_indent = method[/\A( *)/, 1].size
31
+ #file = fetch_file(filename_linenumber)
32
+ files = Dir['{lib,spec,test}/**/*.rb']
33
+ base_url = ENV['OLLAMA_URL'] || 'http://%s' % ENV.fetch('OLLAMA_HOST')
34
+ model = ENV.fetch('OLLAMA_MODEL', 'llama3.2')
34
35
  #file = File.read(file_name)
35
36
  #call_sites = %x(cscope -L -3 "#{method_name}" $(find . -name '*.rb') | awk '{ print $1 ":" $3 }').lines.map(&:chomp).uniq
36
37
  #methods = call_sites.map { fetch_method(_1) } * ?\n
@@ -86,7 +87,10 @@ documentation later.
86
87
  EOT
87
88
 
88
89
  system = <<EOT
89
- You are a Ruby code commenter that writes succinct, simple ruby YARD comments.
90
+ Provide high-quality YARD comments for the given Ruby method, including a brief
91
+ description of its purpose, parameters, raised exceptions (and why), and
92
+ return values, assuming an expert-level understanding of the programming
93
+ concepts involved.
90
94
  EOT
91
95
  system = nil
92
96
 
@@ -95,20 +99,52 @@ Analyze this code:
95
99
 
96
100
  #{files.map { File.read(_1) } * ?\n}
97
101
 
98
- Then output a succinct YARD comment for the method below.
102
+ Here's an example for how you should document a method.
103
+
104
+ # The foo method computes the bar result by processing…
105
+ # then it returns the result.
106
+ #
107
+ # @param first [ String ] the foo string
108
+ # @param second [ Integer ] the number of bars lengthy detailed mutltiline
109
+ # detailed explanation including a newline.
110
+ # @param third [ TrueClass, FalseClass ]
111
+ #
112
+ # @yield [ a, b ]
113
+ #
114
+ # @raise [ ArgumentError ] if block argument wasn't provided
115
+ # @raise [ ArgumentError ] if second parameter was too small.
116
+ #
117
+ # @example
118
+ # bar.foo("blub", 4) { |a, b| … } #=> …
119
+ #
120
+ # @return [ ProcessResult ]
121
+ def foo(first, second, third: false, &block)
122
+ block or raise ArgumentError, 'no &block'
123
+ a = first * 2
124
+ if second < 0
125
+ raise ArgumentError, 'too small'
126
+ end
127
+ b = "foo" * second
128
+ if third
129
+ a = a * b
130
+ end
131
+ block_result = block.(a, b)
132
+ result = process block_result
133
+ return result
134
+ end
99
135
 
100
- Follow the following guidelines:
101
- - Do not repeat the ruby method code.
102
- - Do not use `, `ruby, ```, ```ruby in your response.
103
- - Start each line of your comment with a single # character.
136
+ And this is the method you should document:
104
137
 
105
- Here's a cheatsheet for YARD you can peek into:
138
+ #{method}
106
139
 
107
- #{cheatsheet}
140
+ Output a YARD comment for this method:
108
141
 
109
- And this is the method you should document:
142
+ Format requirements:
110
143
 
111
- #{method}
144
+ 1. Focus on providing a description of the method's purpose, without including any code snippets.
145
+ 2. Never use `, `ruby, ```, ```ruby in your response.
146
+ 3. Never add any other remarks or explanation to your response.
147
+ 4. Start each line of your comment with a single # character.
112
148
  EOT
113
149
 
114
150
  options = Ollama::Options.new(
@@ -131,5 +167,6 @@ if ENV['DEBUG'].to_i == 1
131
167
  end
132
168
  end
133
169
 
134
- ollama = Client.new(base_url:, read_timeout: 120)
135
- ollama.generate(model:, system:, prompt:, options:, stream: false, &Print)
170
+ ollama = Client.new(base_url:, read_timeout: 120)
171
+ response = ollama.generate(model:, system:, prompt:, options:, stream: false).response
172
+ puts response.gsub(/^/) { ' ' * method_indent }
data/lib/utils/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Utils
2
2
  # Utils version
3
- VERSION = '0.60.2'
3
+ VERSION = '0.61.0'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
data/utils.gemspec CHANGED
@@ -1,14 +1,14 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: utils 0.60.2 ruby lib
2
+ # stub: utils 0.61.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "utils".freeze
6
- s.version = "0.60.2".freeze
6
+ s.version = "0.61.0".freeze
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Florian Frank".freeze]
11
- s.date = "2024-12-13"
11
+ s.date = "2024-12-14"
12
12
  s.description = "This ruby gem provides some useful command line utilities".freeze
13
13
  s.email = "flori@ping.de".freeze
14
14
  s.executables = ["ascii7".freeze, "blameline".freeze, "changes".freeze, "classify".freeze, "code_comment".freeze, "commit_message".freeze, "create_cstags".freeze, "create_tags".freeze, "discover".freeze, "edit".freeze, "edit_wait".freeze, "enum".freeze, "git-empty".freeze, "git-versions".freeze, "json_check".freeze, "long_lines".freeze, "myex".freeze, "number_files".freeze, "on_change".freeze, "path".freeze, "print_method".freeze, "probe".freeze, "rd2md".freeze, "search".freeze, "sedit".freeze, "serve".freeze, "ssh-tunnel".freeze, "strip_spaces".freeze, "sync_dir".freeze, "untest".freeze, "utils-utilsrc".freeze, "vcf2alias".freeze, "yaml_check".freeze]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.60.2
4
+ version: 0.61.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-13 00:00:00.000000000 Z
11
+ date: 2024-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar