Hi this is <var $name> from <var $company_name>.
So when you have a page that includes statements like:
<ul>
<sqlselect "select * from customer where name like ?" --bind=$input.q>
<li><var $first_name> <var $last_name></li>
</sqlselect>
</ul>
...in the middle of your page, you might be surprised to see a lot of white space in the output.
That's because, while Bedrock interprets the tags and does not output anything as a result of non-output tags other than <var>, the Bedrock statements are on lines that include a new line and Bedrock dutifully outputs anything in your page that is not a tag.
One way to avoid this, is to avoid placing these tags on their own line. Another way of eating white space is to use the sink tag. Take this group of statements:
<null:foo $input.bar>
<if $foo --eq "bar">
<null:baz "buz">
</if>
Bedrock will interpret these tags, but your output will contain 4 new lines. Using the <sink> tag you can eat all of that white space.
<sink><null:foo $input.bar>
<if $foo --eq "bar">
<null:baz "buz">
</if></sink>
The <sink> tag can scoop up the contents of the output in a variable as well.
<sink:hello_world>Hello World!</sink>
<sink> has one other magical property. It can also output the contents of the block to a handle.
<sink $fh>Hello World!</sink>
You can even nest <sink> tags.
<sink:foo>bar<sink>this is a comment</sink></sink>
Check out this link for more detail about the sink tag.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.