Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

127 lines (90 sloc) 2.272 kb
<erl>
out(A) ->
{ssi, "TAB.inc", "%%",[{"bindings", "choosen"}]}.
</erl>
<div id="entry">
<h2> Bindings </h2>
<p>
Bindings are the opposite of
<a href="ssi.yaws"> Server Side Includes (SSI)</a>.
SSI is used when entire pages are written largely in EHTML and
snippets of HTML, or more typically javascript code is
inserted into the EHTML
code.
</p>
<p> Bindings are used the other way around. Essentially entire
pages are written in regular HTML but parts of the HTML needs to be
dynamically generated.
</p>
<p>The yaws callback out/1 can return
</p>
<div class="box">
<pre>
{bindings, [{Key1, Value2}, {Key2, Value2} .....]}.
</pre>
</div>
<p>All bindings can then be used in the rest of yaws code (in HTML source and
within erl tags). In HTML source %%Key%% is expanded to Value and
within erl tags yaws_api:get_binding(Key) can be used to extract Value.</p>
<p>With the binding feature it is easier to write transparent yaws code making
it easier to to work together with Web people knowing little or
nothing about Erlang.</p>
<p>
An example:
</p>
<div class="box">
<verbatim>
<erl>
out(A) -> {bindings, [{"A", "foo"}, {"B", "baz"}]}.
</erl>
<html>
<body>
<p>%%A%%</p>
<p><font size="4">%%A%% != %%B%%</font></p>
<p>An enormous amount of plain html source here.</p>
<erl>
out(A) ->
Value = yaws_api:binding("A"),
{ehtml, {ul, [],
[{li, [],
Value},
{li, [],
"gazonk"}]}}.
</erl>
%%A%% = %%A%% (hit me)
</body>
</html>
</verbatim>
</div>
<p>
Which expands to:</p>
<div class="box">
<verbatim>
<html>
<body>
<p>foo</p>
<p><font size="4">foo != baz</font></p>
<p>An enormous amount of plain html source here.</p>
<ul>
<li>foo</li>
<li>gazonk</li></ul>
foo = foo (hit me)
</body>
</html>
</verbatim>
</div>
<p> And is rendered as:</p>
<div class="box">
<p>foo</p>
<p><font size="4">foo != baz</font></p>
<p>An enormous amount of plain html source here.</p>
<ul>
<li>foo</li>
<li>gazonk</li>
</ul>
foo = foo (hit me)
</div>
</div>
<erl>
out(A) -> {ssi, "END2",[],[]}.
</erl>
Jump to Line
Something went wrong with that request. Please try again.