Scott Cogan commited on
Commit
1e77542
·
1 Parent(s): 41caec1

fix: Improve template processing for code blocks and newlines

Browse files
Files changed (1) hide show
  1. app.py +15 -9
app.py CHANGED
@@ -91,22 +91,28 @@ with open("prompts.yaml", 'r') as stream:
91
  try:
92
  # First, ensure we have valid template syntax
93
  if '{{' in value or '{%' in value:
 
 
 
94
  # Ensure template variables are properly formatted
95
  value = value.replace('{{', '{{ ').replace('}}', ' }}')
96
  # Ensure template blocks are properly formatted
97
  value = value.replace('{%', '{% ').replace('%}', ' %}')
98
- # Ensure newlines are properly handled
99
- value = value.replace('\n', '\\n')
100
  # Add spaces around template expressions if missing
101
- value = re.sub(r'{{([^{}]+)}}', r'{{ \1 }}', value)
102
- value = re.sub(r'{%([^{}]+)%}', r'{% \1 %}', value)
103
- # Ensure proper spacing in template expressions
104
  value = re.sub(r'{{([^{}]+)}}', lambda m: '{{ ' + m.group(1).strip() + ' }}', value)
105
  value = re.sub(r'{%([^{}]+)%}', lambda m: '{% ' + m.group(1).strip() + ' %}', value)
106
- # Remove any double spaces
107
- value = re.sub(r'\s+', ' ', value)
108
- # Ensure proper line breaks
109
- value = value.replace('\\n', '\n')
 
 
 
 
 
 
 
110
  logger.debug(f"Processed template string: {value[:100]}...")
111
  else:
112
  logger.debug("No template syntax found in string")
 
91
  try:
92
  # First, ensure we have valid template syntax
93
  if '{{' in value or '{%' in value:
94
+ # Handle code blocks first
95
+ value = re.sub(r'```([^`]+)```', lambda m: m.group(0).replace('\n', '\\n'), value)
96
+
97
  # Ensure template variables are properly formatted
98
  value = value.replace('{{', '{{ ').replace('}}', ' }}')
99
  # Ensure template blocks are properly formatted
100
  value = value.replace('{%', '{% ').replace('%}', ' %}')
101
+
 
102
  # Add spaces around template expressions if missing
 
 
 
103
  value = re.sub(r'{{([^{}]+)}}', lambda m: '{{ ' + m.group(1).strip() + ' }}', value)
104
  value = re.sub(r'{%([^{}]+)%}', lambda m: '{% ' + m.group(1).strip() + ' %}', value)
105
+
106
+ # Handle newlines in a way that preserves formatting
107
+ value = value.replace('\n', '\\n')
108
+
109
+ # Remove any double spaces except in code blocks
110
+ value = re.sub(r'(?<!```)(\s+)(?!```)', ' ', value)
111
+
112
+ # Restore code blocks
113
+ value = value.replace('\\n```', '\n```')
114
+ value = value.replace('```\\n', '```\n')
115
+
116
  logger.debug(f"Processed template string: {value[:100]}...")
117
  else:
118
  logger.debug("No template syntax found in string")