Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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.