Thread: [htmltmpl] Stumbled on bug with multiple tmpl_include tags on line
Brought to you by:
samtregar
From: Clifton R. <cli...@ti...> - 2004-03-18 02:55:33
|
I probably won't be on this list too long, but wanted to pop in and report a bug. Apparently if you have two or more <tmpl_include> tag on a line, the second one always bombs. Here's a fairly simplified test file for it: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head><title>Community</title></head><body> <div align=center style="height: 100%;"><table width=770 height="100%" border="0" cellspacing="0" cellpadding="0" ><tr><td> <tmpl_include NAME="../top.html"> </td></tr><tr><td> <tmpl_include NAME="../home-template.html"> </td></tr> <tr><td> <tmpl_include NAME="../bottom.html"> </td></tr></table></div></body></html> The three included templates in question exist in the right relative location to the template. This template is processed properly. If the first & second or second & third <tmpl_include> tags are simply joined onto the same line, it bombs with this error: HTML::Template->new() : Cannot open included file ../home-template.html: file not found. at /usr/local/lib/perl5/site_perl/5.6.1/HTML/Template.pm line 2180 I ran into this immediately when I tried using the htmlclean script (from HTML::Clean) to try to condense all our templates. This is however the first bug I've run into in 6 to 8 months of working with HTML::Template to build a web GUI. -- Clifton -- Clifton Royston -- cli...@ti... Tiki Technologies Lead Programmer/Software Architect Did you ever fly a kite in bed? Did you ever walk with ten cats on your head? Did you ever milk this kind of cow? Well we can do it. We know how. If you never did, you should. These things are fun, and fun is good. -- Dr. Seuss |
From: Mathew R. <mat...@re...> - 2004-03-18 04:23:13
|
you are absolutely correct. H::T uses the line count as a way to help figure out which included file = that it is currently processiong -> without the carriage return = character it cant figure out which file it is in. Also, the design of H::T relies on using line numbers for generating = meaningful error messages. I dont see how this problem can be solved without a change in design. = Maybe it just needs a note added to the perldoc... Mathew ----- Original Message -----=20 From: "Clifton Royston" <cli...@ti...> To: <htm...@li...> Sent: Thursday, March 18, 2004 1:55 PM Subject: [htmltmpl] Stumbled on bug with multiple tmpl_include tags on = line > I probably won't be on this list too long, but wanted to pop in and > report a bug. Apparently if you have two or more <tmpl_include> tag = on > a line, the second one always bombs. Here's a fairly simplified test > file for it: >=20 > <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> > <head><title>Community</title></head><body>=20 > <div align=3Dcenter style=3D"height: 100%;"><table width=3D770 = height=3D"100%"=20 > border=3D"0" cellspacing=3D"0" cellpadding=3D"0" ><tr><td> > <tmpl_include NAME=3D"../top.html"> </td></tr><tr><td> > <tmpl_include NAME=3D"../home-template.html"> </td></tr> <tr><td> > <tmpl_include NAME=3D"../bottom.html"> > </td></tr></table></div></body></html> >=20 > The three included templates in question exist in the right relative > location to the template. This template is processed properly. If = the > first & second or second & third <tmpl_include> tags are simply joined > onto the same line, it bombs with this error: >=20 > HTML::Template->new() : Cannot open included file = ../home-template.html: file not found.=20 > at /usr/local/lib/perl5/site_perl/5.6.1/HTML/Template.pm line 2180 >=20 > I ran into this immediately when I tried using the htmlclean script > (from HTML::Clean) to try to condense all our templates. This is > however the first bug I've run into in 6 to 8 months of working with > HTML::Template to build a web GUI. =20 >=20 > -- Clifton >=20 > --=20 > Clifton Royston -- cli...@ti...=20 > Tiki Technologies Lead Programmer/Software Architect > Did you ever fly a kite in bed? Did you ever walk with ten cats on = your head? > Did you ever milk this kind of cow? Well we can do it. We know = how. > If you never did, you should. These things are fun, and fun is good. > -- = Dr. Seuss >=20 >=20 > ------------------------------------------------------- > This SF.Net email is sponsored by: IBM Linux Tutorials > Free Linux tutorial presented by Daniel Robbins, President and CEO of > GenToo technologies. Learn everything from fundamentals to system > = administration.http://ads.osdn.com/?ad_id=3D1470&alloc_id=3D3638&op=3Dcli= ck > _______________________________________________ > Html-template-users mailing list > Htm...@li... > https://lists.sourceforge.net/lists/listinfo/html-template-users > |
From: Clifton R. <cli...@ti...> - 2004-03-18 05:30:42
|
On Thu, Mar 18, 2004 at 03:22:49PM +1100, Mathew Robertson wrote: > you are absolutely correct. > > H::T uses the line count as a way to help figure out which included > file that it is currently processiong -> without the carriage return > character it cant figure out which file it is in. > > Also, the design of H::T relies on using line numbers for generating > meaningful error messages. > > I dont see how this problem can be solved without a change in design. > Maybe it just needs a note added to the perldoc... I'd suggest in that case that the error message returned in this situation should explicitly mention that each <tmpl_include> must be on its own line? I couldn't initially tell what feature of the "compression" on the file was causing the problem. -- Clifton -- Clifton Royston -- cli...@ti... Tiki Technologies Lead Programmer/Software Architect Did you ever fly a kite in bed? Did you ever walk with ten cats on your head? Did you ever milk this kind of cow? Well we can do it. We know how. If you never did, you should. These things are fun, and fun is good. -- Dr. Seuss |
From: Cees H. <ce...@si...> - 2004-03-18 04:45:54
|
Hi Clifton, I tried, but can't reproduce this problem. Can you include a small code sample with templates that actually displays this problem. Also, it might help to tells us which version of HTML::Template and which perl you are using (from the error message it looks like you are using perl 5.6.1, but I can't guess what version of HTML::Template). I tested using HTML::Template 2.6 and perl 5.8.3 and didn't see a problem. Cheers, Cees Clifton Royston wrote: > I probably won't be on this list too long, but wanted to pop in and > report a bug. Apparently if you have two or more <tmpl_include> tag on > a line, the second one always bombs. Here's a fairly simplified test > file for it: > > <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> > <head><title>Community</title></head><body> > <div align=center style="height: 100%;"><table width=770 height="100%" > border="0" cellspacing="0" cellpadding="0" ><tr><td> > <tmpl_include NAME="../top.html"> </td></tr><tr><td> > <tmpl_include NAME="../home-template.html"> </td></tr> <tr><td> > <tmpl_include NAME="../bottom.html"> > </td></tr></table></div></body></html> > > The three included templates in question exist in the right relative > location to the template. This template is processed properly. If the > first & second or second & third <tmpl_include> tags are simply joined > onto the same line, it bombs with this error: > > HTML::Template->new() : Cannot open included file ../home-template.html: file not found. > at /usr/local/lib/perl5/site_perl/5.6.1/HTML/Template.pm line 2180 > > I ran into this immediately when I tried using the htmlclean script > (from HTML::Clean) to try to condense all our templates. This is > however the first bug I've run into in 6 to 8 months of working with > HTML::Template to build a web GUI. > > -- Clifton > |
From: Clifton R. <cli...@ti...> - 2004-03-18 05:21:10
|
On Wed, Mar 17, 2004 at 11:45:42PM -0500, Cees Hek wrote: > Hi Clifton, > > I tried, but can't reproduce this problem. Can you include a small code > sample with templates that actually displays this problem. Simply edit the template I provided as follows; I'm sorry my initial explanation was not clear enough: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head><title>Community</title></head><body> <div align=center style="height: 100%;"><table width=770 height="100%" border="0" cellspacing="0" cellpadding="0" ><tr><td> <tmpl_include NAME="../top.html"> </td></tr><tr><td><tmpl_include NAME="../home-template.html"> </td></tr> <tr><td> <tmpl_include NAME="../bottom.html"> </td></tr></table></div></body></html> That should generate this error when you do the "new" to load it: HTML::Template->new() : Cannot open included file ../home-template.html: file not found. at /usr/local/lib/perl5/site_perl/5.6.1/HTML/Template.pm line 2180 On second thought, if it's still unclear, I'll write a tiny example in the morning complete with the code to invoke it. -- Clifton -- Clifton Royston -- cli...@ti... Tiki Technologies Lead Programmer/Software Architect Did you ever fly a kite in bed? Did you ever walk with ten cats on your head? Did you ever milk this kind of cow? Well we can do it. We know how. If you never did, you should. These things are fun, and fun is good. -- Dr. Seuss |
From: Cees H. <ce...@si...> - 2004-03-18 05:55:41
|
Clifton Royston wrote: > On Wed, Mar 17, 2004 at 11:45:42PM -0500, Cees Hek wrote: > >>Hi Clifton, >> >>I tried, but can't reproduce this problem. Can you include a small code >>sample with templates that actually displays this problem. > > > Simply edit the template I provided as follows; I'm sorry my initial > explanation was not clear enough: Your explanation was very clear, I just can't reproduce the problem! I only get that error message if the ../home-template.html doesn't actually exist on the filesystem, which seems like the right thing for it to do. If the include files are there, it works fine for me... By the way, I get the error message in line 2178 when the included file doens't exist. This leads me to believe we are using different versions of HTML::Template (or you have made some local enhancements?) Is it possible that you are using a version <= 2.4 and are getting hit by the following bug? - Bug Fix: nested include path handling was wrong Cheers, Cees > <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> > <head><title>Community</title></head><body> > <div align=center style="height: 100%;"><table width=770 height="100%" > border="0" cellspacing="0" cellpadding="0" ><tr><td> > <tmpl_include NAME="../top.html"> </td></tr><tr><td><tmpl_include NAME="../home-template.html"> </td></tr> <tr><td> > <tmpl_include NAME="../bottom.html"> > </td></tr></table></div></body></html> > > That should generate this error when you do the "new" to load it: > > HTML::Template->new() : Cannot open included file ../home-template.html: > file not found. at /usr/local/lib/perl5/site_perl/5.6.1/HTML/Template.pm > line 2180 > > On second thought, if it's still unclear, I'll write a tiny example in > the morning complete with the code to invoke it. > > -- Clifton > |
From: Clifton R. <cli...@ti...> - 2004-03-18 18:41:48
|
On Thu, Mar 18, 2004 at 12:55:29AM -0500, Cees Hek wrote: > Clifton Royston wrote: > >On Wed, Mar 17, 2004 at 11:45:42PM -0500, Cees Hek wrote: > > > >>Hi Clifton, > >> > >>I tried, but can't reproduce this problem. Can you include a small code > >>sample with templates that actually displays this problem. > > > > > >Simply edit the template I provided as follows; I'm sorry my initial > >explanation was not clear enough: > > Your explanation was very clear, I just can't reproduce the problem! I > only get that error message if the ../home-template.html doesn't > actually exist on the filesystem, which seems like the right thing for > it to do. If the include files are there, it works fine for me... Maybe the error conditions are more restrictive than I thought, and depend on parameters to the template load. Let me try to simplify the execution environment and include that too. Right now the CGI which loads the template is far too complex to include here; it's loaded from within a module which does all kinds of login and session management, parameter presetting, etc. as well. I'll see if I can pare it down to the minimum. > By the way, I get the error message in line 2178 when the included file > doens't exist. This leads me to believe we are using different versions > of HTML::Template (or you have made some local enhancements?) I don't think so, but I will check if there are any patches applied as part of the FreeBSD port. -- Clifton -- Clifton Royston -- cli...@ti... Tiki Technologies Lead Programmer/Software Architect Did you ever fly a kite in bed? Did you ever walk with ten cats on your head? Did you ever milk this kind of cow? Well we can do it. We know how. If you never did, you should. These things are fun, and fun is good. -- Dr. Seuss |
From: Clifton R. <cli...@ti...> - 2004-03-18 19:15:27
|
On Thu, Mar 18, 2004 at 08:41:41AM -1000, Clifton Royston wrote: > On Thu, Mar 18, 2004 at 12:55:29AM -0500, Cees Hek wrote: > > Your explanation was very clear, I just can't reproduce the problem! I > > only get that error message if the ../home-template.html doesn't > > actually exist on the filesystem, which seems like the right thing for > > it to do. If the include files are there, it works fine for me... > > Maybe the error conditions are more restrictive than I thought, and > depend on parameters to the template load. That must be a part of the problem. Quite odd. I am currently unable to reproduce it myself with a very simple script, so there's something about the broader execution environment going on here... I'll check back in once I have a script which reproduces it. -- Clifton -- Clifton Royston -- cli...@ti... Tiki Technologies Lead Programmer/Software Architect Did you ever fly a kite in bed? Did you ever walk with ten cats on your head? Did you ever milk this kind of cow? Well we can do it. We know how. If you never did, you should. These things are fun, and fun is good. -- Dr. Seuss |
From: Clifton R. <cli...@ti...> - 2004-03-18 20:02:41
|
On Thu, Mar 18, 2004 at 09:15:25AM -1000, Clifton Royston wrote: > That must be a part of the problem. Quite odd. I am currently > unable to reproduce it myself with a very simple script, so there's > something about the broader execution environment going on here... > > I'll check back in once I have a script which reproduces it. OK, I think I have this worked out. What was probably confusing us both is the builtin fallback (IIRC) to trying some different paths, including the current working dir, to load the templates from. The result is that if you are executing the script from the same relative path to the included files, it seems to work. Here's the simplest scenario I can find to reproduce it. Files are in these relative paths: /home/cliftonr/work: a.html b.html c.html /home/cliftonr/work/htmltest: test-template.pl main.html /home/cliftonr/work/a.html: <b>Contents of template "a.html"</b> similarly for b.html and c.html /home/cliftonr/work/htmltest: #!/usr/bin/perl use HTML::Template; use constant TEMPLATE_DIR => '/home/cliftonr/work/html-test'; my $template = HTML::Template->new( filename => TEMPLATE_DIR . '/' . $ARGV[0] ); print $template->output( ); 1; /home/cliftonr/work/htmltest/main.html: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>Main</title></head> <body><div align=center style="height: 100%;"><table width=100% border="0" cells pacing="0" cellpadding="0" ><tr><td> <tmpl_include NAME="../a.html">after a</td></tr><tr><td> <tmpl_include NAME="../b.html">after b</td></tr> <tr><td> <tmpl_include NAME="../c.html"> </td></tr></table> </div></body></html> cd ~/work/html-test; ~/work/html-test/test-template.pl main.html [works normally, outputs template with all inclusions] cd /home/cliftonr/random1/random2; ~/work/html-test/test-template.pl main.html HTML::Template->new() : Cannot open included file ../c.html : file not found. at /usr/local/lib/perl5/site_perl/5.6.1/HTML/Template.pm line 2180. Note that "a.html" is on its own line, and the following include of "b.html" works OK, but "b.html" and "c.html" are on the same line, and the second does not work. -- Clifton -- Clifton Royston -- cli...@ti... Tiki Technologies Lead Programmer/Software Architect Did you ever fly a kite in bed? Did you ever walk with ten cats on your head? Did you ever milk this kind of cow? Well we can do it. We know how. If you never did, you should. These things are fun, and fun is good. -- Dr. Seuss |
From: Cees H. <ce...@si...> - 2004-03-19 06:11:20
|
Clifton Royston wrote: > OK, I think I have this worked out. What was probably confusing us > both is the builtin fallback (IIRC) to trying some different paths, > including the current working dir, to load the templates from. The > result is that if you are executing the script from the same relative > path to the included files, it seems to work. OK, I can confirm this as a bug now. Thanks for doing the extra leg work into narrowing down the problem! Cheers, Cees |
From: Clifton R. <cli...@ti...> - 2004-03-19 16:15:18
|
On Fri, Mar 19, 2004 at 01:11:04AM -0500, Cees Hek wrote: > Clifton Royston wrote: > > OK, I think I have this worked out. What was probably confusing us > >both is the builtin fallback (IIRC) to trying some different paths, > >including the current working dir, to load the templates from. The > >result is that if you are executing the script from the same relative > >path to the included files, it seems to work. > > OK, I can confirm this as a bug now. Thanks for doing the extra leg > work into narrowing down the problem! No sweat! Just so you know, it's not causing me any operational problems, as I now follow the "htmlclean" pass with a Perl one-liner that adds a newline before each tmpl_include. However, fixing it in a future release may save the next guy some problems. -- Clifton -- Clifton Royston -- cli...@ti... Tiki Technologies Lead Programmer/Software Architect Did you ever fly a kite in bed? Did you ever walk with ten cats on your head? Did you ever milk this kind of cow? Well we can do it. We know how. If you never did, you should. These things are fun, and fun is good. -- Dr. Seuss |
From: Clifton R. <cli...@ti...> - 2004-03-18 20:19:26
|
On Wed, Mar 17, 2004 at 11:45:42PM -0500, Cees Hek wrote: > Hi Clifton, > > I tried, but can't reproduce this problem. Can you include a small code > sample with templates that actually displays this problem. > > Also, it might help to tells us which version of HTML::Template and > which perl you are using (from the error message it looks like you are > using perl 5.6.1, but I can't guess what version of HTML::Template). > > I tested using HTML::Template 2.6 and perl 5.8.3 and didn't see a problem. HTML::Template 2.6 and perl 5.6.1 (correct!) both built from the FreeBSD ports system. (Well, from our own CVS copy of the FreeBSD ports tree, so that we have source control for absolute reproducibility, but that's probably irrelevant.) -- Clifton -- Clifton Royston -- cli...@ti... Tiki Technologies Lead Programmer/Software Architect Did you ever fly a kite in bed? Did you ever walk with ten cats on your head? Did you ever milk this kind of cow? Well we can do it. We know how. If you never did, you should. These things are fun, and fun is good. -- Dr. Seuss |