vweb: fix duplicate fn error with multiple templates
							parent
							
								
									1396dc1c89
								
							
						
					
					
						commit
						b3e416fb52
					
				|  | @ -0,0 +1,16 @@ | |||
| module strings | ||||
| 
 | ||||
| //import rand
 | ||||
| 
 | ||||
| // random returns a random string with `n` characters
 | ||||
| /* | ||||
| // TODO
 | ||||
| pub fn random(n int) string { | ||||
| 	buf := vmalloc(n) | ||||
| 	for i in 0..n { | ||||
| 		buf[i] = rand.next() | ||||
| 	} | ||||
| 	return tos(buf) | ||||
| } | ||||
| */ | ||||
| 
 | ||||
|  | @ -12,7 +12,7 @@ fn (g &Gen) comptime_call(node ast.ComptimeCall) { | |||
| 			if stmt is ast.FnDecl { | ||||
| 				fn_decl := stmt as ast.FnDecl | ||||
| 				// insert stmts from vweb_tmpl fn
 | ||||
| 				if fn_decl.name == 'vweb_tmpl' { | ||||
| 				if fn_decl.name.starts_with('vweb_tmpl') { | ||||
| 					g.stmts(fn_decl.stmts) | ||||
| 					break | ||||
| 				} | ||||
|  |  | |||
|  | @ -100,7 +100,7 @@ fn (mut p Parser) vweb() ast.ComptimeCall { | |||
| 		} | ||||
| 		// println('path is now "$path"')
 | ||||
| 	} | ||||
| 	v_code := tmpl.compile_file(path) | ||||
| 	v_code := tmpl.compile_file(path, p.cur_fn_name) | ||||
| 	mut scope := &ast.Scope{ | ||||
| 		start_pos: 0 | ||||
| 		parent: p.global_scope | ||||
|  | @ -117,7 +117,7 @@ fn (mut p Parser) vweb() ast.ComptimeCall { | |||
| 	for stmt in file.stmts { | ||||
| 		if stmt is ast.FnDecl { | ||||
| 			fn_decl := stmt as ast.FnDecl | ||||
| 			if fn_decl.name == 'vweb_tmpl' { | ||||
| 			if fn_decl.name.starts_with('vweb_tmpl') { | ||||
| 				body_scope := file.scope.innermost(fn_decl.body_pos.pos) | ||||
| 				for _, obj in p.scope.objects { | ||||
| 					if obj is ast.Var { | ||||
|  |  | |||
|  | @ -12,14 +12,14 @@ const ( | |||
| ) | ||||
| 
 | ||||
| // compile_file compiles the content of a file by the given path as a template
 | ||||
| pub fn compile_file(path string) string { | ||||
| pub fn compile_file(path, fn_name string) string { | ||||
| 	mut html := os.read_file(path) or { | ||||
| 		panic('html failed') | ||||
| 	} | ||||
| 	return compile_template(html) | ||||
| 	return compile_template(html, fn_name) | ||||
| } | ||||
| 
 | ||||
| pub fn compile_template(content string) string { | ||||
| pub fn compile_template(content, fn_name string) string { | ||||
| 	// lines := os.read_lines(path)
 | ||||
| 	mut html := content | ||||
| 	mut header := '' | ||||
|  | @ -36,7 +36,7 @@ pub fn compile_template(content string) string { | |||
| 	s.writeln(" | ||||
| 	import strings | ||||
| 	// === vweb html template ===
 | ||||
| 	fn vweb_tmpl() { | ||||
| 	fn vweb_tmpl_${fn_name}() { | ||||
| 	mut sb := strings.new_builder(${lines.len * 30}) | ||||
| 	header := \' \' // TODO remove | ||||
| 	_ = header | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue