prompt_manager 0.5.0 → 0.5.2

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: 267e48a65e377f2fc3390d3bbff69a6e1f241c96951fc86437f5ab02d2e93daa
4
- data.tar.gz: db8af7d8515e72bf12f847e3544a7413a0acb0707a8321bcae7f13e1ffa1ff86
3
+ metadata.gz: 9520d380488f2d4ef62d07dfc4a9b27bcc66086f5adb1f2d6fa874e8e179cfd3
4
+ data.tar.gz: 1df0ea5efe721cd24293ed2172a72406b0e649e61a6778bb25615121c0ab39cb
5
5
  SHA512:
6
- metadata.gz: 259cb1494a9390f94d40c669bd87960d9257a9126c3d71cbc6fdcdbaa82dae3e0209f23acc322d019e781abe48090a070fba20761a2ffe8a1818a303c8ef2741
7
- data.tar.gz: 97e6ce3eb0743b02804b44c745a2710f15e4048957c7a039c6313b2d061d65660f9d4435465fd0139ff8e348ba841cb4ae543d06a7709391fab19a6419ea1e55
6
+ metadata.gz: ed5b5fdb6592797bd3bb5a564f13235360e8fde690e0781d51b39deb5f2d26590173bc2257f78dae132d2d91b12c27bf246d392c7cb9a84b1f22c1b409b88004
7
+ data.tar.gz: 76425c4b30f68977dd4e16513c53bac2bc84e277e7e209dc1eb57f5f9f2267d23b354fd8d2fe79f871c05c0672198b53db4fe687b38966350c1aa0540e158913
@@ -114,16 +114,39 @@ class PromptManager::Prompt
114
114
 
115
115
  def db = self.class.storage_adapter
116
116
 
117
+
117
118
  def remove_comments
118
- lines = @text.split("\n")
119
+ lines = @text.gsub(/<!--.*?-->/m, '').lines(chomp: true)
120
+ markdown_block_depth = 0
121
+ filtered_lines = []
119
122
  end_index = lines.index("__END__") || lines.size
120
- lines[0...end_index].reject { |line| line.strip.start_with?(COMMENT_SIGNAL) }.join("\n")
123
+
124
+ lines[0...end_index].each do |line|
125
+ trimmed_line = line.strip
126
+
127
+ if trimmed_line.start_with?('```')
128
+ if trimmed_line == '```markdown'
129
+ markdown_block_depth += 1
130
+ elsif markdown_block_depth > 0
131
+ markdown_block_depth -= 1
132
+ end
133
+ end
134
+
135
+ if markdown_block_depth > 0 || !trimmed_line.start_with?(COMMENT_SIGNAL)
136
+ filtered_lines << line
137
+ end
138
+ end
139
+
140
+ filtered_lines.join("\n")
121
141
  end
122
142
 
143
+
144
+
145
+
123
146
  def substitute_values(input_text, values_hash)
124
147
  if values_hash.is_a?(Hash) && !values_hash.empty?
125
148
  values_hash.each do |key, value|
126
- input_text = input_text.gsub(key, value)
149
+ input_text = input_text.gsub(key, value.last)
127
150
  end
128
151
  end
129
152
  input_text
@@ -181,14 +181,28 @@ class PromptManager::Storage::FileSystemAdapter
181
181
 
182
182
  # Retrieve parameter values by its id
183
183
  def parameter_values(prompt_id)
184
+ # Parse parameters from the prompt text
185
+ prompt_text_content = prompt_text(prompt_id)
186
+ parsed_parameters = parse_parameters_from_text(prompt_text_content)
187
+
188
+ # Load parameters from JSON file if it exists
184
189
  params_path = file_path(prompt_id, params_extension)
190
+ file_parameters = params_path.exist? ? deserialize(read_file(params_path)) : {}
185
191
 
186
- if params_path.exist?
187
- parms_content = read_file(params_path)
188
- deserialize(parms_content)
189
- else
190
- {}
192
+ # Merge parsed parameters with file parameters
193
+ parsed_parameters.merge(file_parameters)
194
+ end
195
+
196
+ # Parse parameters from the prompt text
197
+ def parse_parameters_from_text(text)
198
+ parameters = {}
199
+
200
+ text.scan(PromptManager::Prompt.parameter_regex).each do |match|
201
+ variable_name = match.shift
202
+ parameters[variable_name] = [] unless parameters.key?(variable_name)
191
203
  end
204
+
205
+ parameters
192
206
  end
193
207
 
194
208
  # Save prompt text and parameter values to corresponding files
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PromptManager
4
- VERSION = "0.5.0"
4
+ VERSION = "0.5.2"
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prompt_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dewayne VanHoozer
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-30 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: activerecord
@@ -173,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
173
  - !ruby/object:Gem::Version
174
174
  version: '0'
175
175
  requirements: []
176
- rubygems_version: 3.6.6
176
+ rubygems_version: 3.6.8
177
177
  specification_version: 4
178
178
  summary: Manage prompts for use with gen-AI processes
179
179
  test_files: []