ci: fix `$tmpl` regression detected by gitly tests (after a73e146)
				
					
				
			
							parent
							
								
									3e9c1c1a3a
								
							
						
					
					
						commit
						5717066147
					
				| 
						 | 
				
			
			@ -96,21 +96,22 @@ fn vweb_tmpl_${fn_name}() string {
 | 
			
		|||
	mut tline_number := -1 // keep the original line numbers, even after insert/delete ops on lines; `i` changes
 | 
			
		||||
	for i := 0; i < lines.len; i++ {
 | 
			
		||||
		line := lines[i]
 | 
			
		||||
		trimmed_line := line.trim_space()
 | 
			
		||||
		tline_number++
 | 
			
		||||
		start_of_line_pos = end_of_line_pos
 | 
			
		||||
		end_of_line_pos += line.len + 1
 | 
			
		||||
		$if trace_tmpl ? {
 | 
			
		||||
			eprintln('>>> tfile: $template_file, spos: ${start_of_line_pos:6}, epos:${end_of_line_pos:6}, fi: ${tline_number:5}, i: ${i:5}, line: $line')
 | 
			
		||||
		}
 | 
			
		||||
		if is_html_open_tag('style', line) {
 | 
			
		||||
			state = .css
 | 
			
		||||
		} else if line == '</style>' {
 | 
			
		||||
		} else if trimmed_line == '</style>' {
 | 
			
		||||
			state = .html
 | 
			
		||||
		} else if is_html_open_tag('script', line) {
 | 
			
		||||
			state = .js
 | 
			
		||||
		} else if line == '</script>' {
 | 
			
		||||
		} else if trimmed_line == '</script>' {
 | 
			
		||||
			state = .html
 | 
			
		||||
		}
 | 
			
		||||
		$if trace_tmpl ? {
 | 
			
		||||
			eprintln('>>> tfile: $template_file, spos: ${start_of_line_pos:6}, epos:${end_of_line_pos:6}, fi: ${tline_number:5}, i: ${i:5}, state: ${state:10}, line: $line')
 | 
			
		||||
		}
 | 
			
		||||
		if line.contains('@header') {
 | 
			
		||||
			position := line.index('@header') or { 0 }
 | 
			
		||||
			p.error_with_error(errors.Error{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,11 +1,20 @@
 | 
			
		|||
// V won't parse that
 | 
			
		||||
<script>
 | 
			
		||||
   var non_interpolated_labels = @benchmark_plot_data.dates;
 | 
			
		||||
   var non_interpolated_values = @benchmark_plot_data.numerical_result;
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
// V will parse that
 | 
			
		||||
<script>
 | 
			
		||||
   var real_labels = @benchmark_plot_data.dates; //V_TEMPLATE
 | 
			
		||||
   var real_values = @benchmark_plot_data.numerical_result; //V_TEMPLATE
 | 
			
		||||
</script>
 | 
			
		||||
This should be interpolated: 
 | 
			
		||||
Username: @username
 | 
			
		||||
 | 
			
		||||
   // V will NOT do interpolation inside <script> tags by default:
 | 
			
		||||
   <script>
 | 
			
		||||
     var non_interpolated_labels = @benchmark_plot_data.dates;
 | 
			
		||||
     var non_interpolated_values = @benchmark_plot_data.numerical_result;
 | 
			
		||||
   </script>
 | 
			
		||||
 | 
			
		||||
   // V will interpolate the values here:
 | 
			
		||||
   <script>
 | 
			
		||||
     var real_labels = @benchmark_plot_data.dates; //V_TEMPLATE
 | 
			
		||||
     var real_values = @benchmark_plot_data.numerical_result; //V_TEMPLATE
 | 
			
		||||
   </script>
 | 
			
		||||
 | 
			
		||||
This should be interpolated too, because it is outside the script tag:
 | 
			
		||||
Year: @year
 | 
			
		||||
myint: @{benchmark_plot_data.myint(1)}
 | 
			
		||||
mydate: @{benchmark_plot_data.mydate()}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,12 +5,26 @@ struct PlotData {
 | 
			
		|||
	numerical_result []int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn (pd PlotData) mydate() string {
 | 
			
		||||
	return pd.dates[0]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn (pd PlotData) myint(idx int) int {
 | 
			
		||||
	return pd.numerical_result[idx]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn test_template_interpolation_can_be_selectively_turned_on_in_script_tags() {
 | 
			
		||||
	benchmark_plot_data := PlotData{['2012-11-30', '2022-12-29'], [5, 6, 7, 1]}
 | 
			
		||||
	username := 'abcd'
 | 
			
		||||
	year := 2022
 | 
			
		||||
	text := $tmpl('tmpl/selective_interpolation_in_script_tag.html')
 | 
			
		||||
	// dump(text)
 | 
			
		||||
	dump(text)
 | 
			
		||||
	assert text.contains('Username: abcd')
 | 
			
		||||
	assert text.contains('var non_interpolated_labels = @benchmark_plot_data.dates;')
 | 
			
		||||
	assert text.contains('var non_interpolated_values = @benchmark_plot_data.numerical_result;')
 | 
			
		||||
	assert text.contains("var real_labels = ['2012-11-30', '2022-12-29']; //V_TEMPLATE")
 | 
			
		||||
	assert text.contains('var real_values = [5, 6, 7, 1]; //V_TEMPLATE')
 | 
			
		||||
	assert text.contains('Year: 2022')
 | 
			
		||||
	assert text.contains('myint: 6')
 | 
			
		||||
	assert text.contains('mydate: 2012-11-30')
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue