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
|
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++ {
|
for i := 0; i < lines.len; i++ {
|
||||||
line := lines[i]
|
line := lines[i]
|
||||||
|
trimmed_line := line.trim_space()
|
||||||
tline_number++
|
tline_number++
|
||||||
start_of_line_pos = end_of_line_pos
|
start_of_line_pos = end_of_line_pos
|
||||||
end_of_line_pos += line.len + 1
|
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) {
|
if is_html_open_tag('style', line) {
|
||||||
state = .css
|
state = .css
|
||||||
} else if line == '</style>' {
|
} else if trimmed_line == '</style>' {
|
||||||
state = .html
|
state = .html
|
||||||
} else if is_html_open_tag('script', line) {
|
} else if is_html_open_tag('script', line) {
|
||||||
state = .js
|
state = .js
|
||||||
} else if line == '</script>' {
|
} else if trimmed_line == '</script>' {
|
||||||
state = .html
|
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') {
|
if line.contains('@header') {
|
||||||
position := line.index('@header') or { 0 }
|
position := line.index('@header') or { 0 }
|
||||||
p.error_with_error(errors.Error{
|
p.error_with_error(errors.Error{
|
||||||
|
|
|
@ -1,11 +1,20 @@
|
||||||
// V won't parse that
|
|
||||||
|
This should be interpolated:
|
||||||
|
Username: @username
|
||||||
|
|
||||||
|
// V will NOT do interpolation inside <script> tags by default:
|
||||||
<script>
|
<script>
|
||||||
var non_interpolated_labels = @benchmark_plot_data.dates;
|
var non_interpolated_labels = @benchmark_plot_data.dates;
|
||||||
var non_interpolated_values = @benchmark_plot_data.numerical_result;
|
var non_interpolated_values = @benchmark_plot_data.numerical_result;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
// V will parse that
|
// V will interpolate the values here:
|
||||||
<script>
|
<script>
|
||||||
var real_labels = @benchmark_plot_data.dates; //V_TEMPLATE
|
var real_labels = @benchmark_plot_data.dates; //V_TEMPLATE
|
||||||
var real_values = @benchmark_plot_data.numerical_result; //V_TEMPLATE
|
var real_values = @benchmark_plot_data.numerical_result; //V_TEMPLATE
|
||||||
</script>
|
</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
|
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() {
|
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]}
|
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')
|
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_labels = @benchmark_plot_data.dates;')
|
||||||
assert text.contains('var non_interpolated_values = @benchmark_plot_data.numerical_result;')
|
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_labels = ['2012-11-30', '2022-12-29']; //V_TEMPLATE")
|
||||||
assert text.contains('var real_values = [5, 6, 7, 1]; //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