Commits

Arjan Scherpenisse committed bf38233

Updated zotonic source code for edoc support.

This addresses issue #149.

Changes include:
- Removed invalid @date tag, changed into "Date:"
- Fixed all docstrings in .erl files in src/
- Added "zotonic generate-edoc" subcommand
- Added @hidden tags to all test modules
- Generate edoc for src/ into doc/core

Comments (0)

Files changed (201)

doc/core/edoc-info

+{packages,[]}.
+{modules,[epgsql_pool,erlydtl,erlydtl_compiler,erlydtl_dateformat,
+          erlydtl_dateformat_tests,erlydtl_deps,
+          erlydtl_example_variable_storage,erlydtl_functional_tests,
+          erlydtl_operators,erlydtl_parser,erlydtl_runtime,erlydtl_scanner,
+          erlydtl_tests_init,erlydtl_unittests,gen_model,gen_scomp,iso639,
+          m_acl,m_category,m_config,m_edge,m_identity,m_media,m_modules,
+          m_persistent,m_predicate,m_req,m_rsc,m_rsc_export,m_rsc_import,
+          m_rsc_update,m_search,m_session,m_site,pgsql,pgsql_binary,
+          pgsql_connection,pgsql_datetime,pgsql_pool,pgsql_types,rfc2047,z,
+          z_acl,z_acl_queue,z_auth,z_config,z_context,z_convert,z_datamodel,
+          z_datetime,z_db,z_depcache,z_dispatcher,z_dropbox,z_email,
+          z_email_bounce_server,z_email_embed,z_email_server,z_gettext,
+          z_gettext_compile,z_html,z_ids,z_install,z_install_data,
+          z_install_defaultdata,z_installer,z_lib_include,z_media_archive,
+          z_media_identify,z_media_preview,z_media_preview_server,z_media_tag,
+          z_memo,z_module_dummy,z_module_indexer,z_module_manager,z_notifier,
+          z_parse_multipart,z_path,z_pivot_rsc,z_quoted_printable,z_render,
+          z_scomp,z_script,z_search,z_service,z_session,z_session_manager,
+          z_session_page,z_site_startup,z_site_sup,z_sites_dispatcher,
+          z_sites_manager,z_string,z_supervisor,z_tags,z_template,z_tracer,
+          z_trans,z_trans_server,z_utils,z_validation,
+          z_webmachine_error_handler,z_xml,zotonic,zotonic_app,zotonic_deps,
+          zotonic_sup]}.

doc/core/epgsql_pool.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module epgsql_pool</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module epgsql_pool</h1>
+<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+
+<p><b>Behaviours:</b> <a href="supervisor.html"><tt>supervisor</tt></a>.</p>
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#init-1">init/1</a></td><td>supervisor callback.</td></tr>
+<tr><td valign="top"><a href="#start_link-1">start_link/1</a></td><td>API for starting the supervisor.</td></tr>
+<tr><td valign="top"><a href="#start_pool-3">start_pool/3</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="init-1">init/1</a></h3>
+<div class="spec">
+<p><tt>init(Opts::[]) -&gt; SupervisorTree</tt></p>
+</div><p>supervisor callback.</p>
+
+<h3 class="function"><a name="start_link-1">start_link/1</a></h3>
+<div class="spec">
+<p><tt>start_link(Opts) -&gt; ServerRet</tt></p>
+</div><p>API for starting the supervisor.</p>
+
+<h3 class="function"><a name="start_pool-3">start_pool/3</a></h3>
+<div class="spec">
+<p><tt>start_pool(Name, Size, Opts) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:41.</i></p>
+</body>
+</html>

doc/core/erlang.png

Added
New image

doc/core/erlydtl.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module erlydtl</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module erlydtl</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+   Public interface for ErlyDTL.
+<p>Copyright � 2008 Roberto Saccon, Evan Miller</p>
+
+<p><b>Introduced in:</b> 2007-11-11 by Roberto Saccon, Evan Miller
+  -------------------------------------------------------------------</p>
+<p><b>Authors:</b> Roberto Saccon (<a href="mailto:rsaccon@gmail.com"><tt>rsaccon@gmail.com</tt></a>) [<em>web site:</em> <tt><a href="http://rsaccon.com" target="_top">http://rsaccon.com</a></tt>], Evan Miller (<a href="mailto:emmiller@gmail.com"><tt>emmiller@gmail.com</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>
+   Public interface for ErlyDTL
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#compile-3">compile/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#compile-4">compile/4</a></td><td></td></tr>
+<tr><td valign="top"><a href="#compile-5">compile/5</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="compile-3">compile/3</a></h3>
+<div class="spec">
+<p><tt>compile(FileOrBinary, Module, ZContext) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="compile-4">compile/4</a></h3>
+<div class="spec">
+<p><tt>compile(FileOrBinary, Module, Options, ZContext) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="compile-5">compile/5</a></h3>
+<div class="spec">
+<p><tt>compile(FileOrBinary, BaseFile, Module, Options, ZContext) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:43.</i></p>
+</body>
+</html>

doc/core/erlydtl_compiler.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module erlydtl_compiler</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module erlydtl_compiler</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+   ErlyDTL template compiler.
+<p>Copyright � 2008 Roberto Saccon, Evan Miller</p>
+
+<p><b>Introduced in:</b> 2007-12-16 by Roberto Saccon, Evan Miller
+  
+  -------------------------------------------------------------------
+   Adapted and expanded for Zotonic by Marc Worrell &lt;marc@worrell.nl&gt;
+  -------------------------------------------------------------------</p>
+<p><b>Authors:</b> Roberto Saccon (<a href="mailto:rsaccon@gmail.com"><tt>rsaccon@gmail.com</tt></a>) [<em>web site:</em> <tt><a href="http://rsaccon.com" target="_top">http://rsaccon.com</a></tt>], Evan Miller (<a href="mailto:emmiller@gmail.com"><tt>emmiller@gmail.com</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>
+   ErlyDTL template compiler
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#compile-3">compile/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#compile-4">compile/4</a></td><td></td></tr>
+<tr><td valign="top"><a href="#compile-5">compile/5</a></td><td></td></tr>
+<tr><td valign="top"><a href="#parse-1">parse/1</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="compile-3">compile/3</a></h3>
+<div class="spec">
+<p><tt>compile(Binary, Module, ZContext) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="compile-4">compile/4</a></h3>
+<div class="spec">
+<p><tt>compile(Binary, Module, Options, ZContext) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="compile-5">compile/5</a></h3>
+<div class="spec">
+<p><tt>compile(Binary, BaseFile, Module, Options, ZContext) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="parse-1">parse/1</a></h3>
+<div class="spec">
+<p><tt>parse(Data) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:44.</i></p>
+</body>
+</html>

doc/core/erlydtl_dateformat.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module erlydtl_dateformat</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module erlydtl_dateformat</h1>
+<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#format-2">format/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#format-3">format/3</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="format-2">format/2</a></h3>
+<div class="spec">
+<p><tt>format(FormatString, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="format-3">format/3</a></h3>
+<div class="spec">
+<p><tt>format(Date, FormatString, Context) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:43.</i></p>
+</body>
+</html>

doc/core/erlydtl_dateformat_tests.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module erlydtl_dateformat_tests</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module erlydtl_dateformat_tests</h1>
+<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#run_tests-0">run_tests/0</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="run_tests-0">run_tests/0</a></h3>
+<div class="spec">
+<p><tt>run_tests() -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:41.</i></p>
+</body>
+</html>

doc/core/erlydtl_deps.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module erlydtl_deps</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module erlydtl_deps</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+   ErlyDTL helper module.
+<p>Copyright � 2008 Roberto Saccon, Evan Miller</p>
+
+<p><b>Introduced in:</b> 2007-12-16 by Roberto Saccon, Evan Miller
+  -------------------------------------------------------------------</p>
+<p><b>Authors:</b> Roberto Saccon (<a href="mailto:rsaccon@gmail.com"><tt>rsaccon@gmail.com</tt></a>) [<em>web site:</em> <tt><a href="http://rsaccon.com" target="_top">http://rsaccon.com</a></tt>], Evan Miller (<a href="mailto:emmiller@gmail.com"><tt>emmiller@gmail.com</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>
+   ErlyDTL helper module
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#get_base_dir-0">get_base_dir/0</a></td><td>Return the application directory for this application.</td></tr>
+<tr><td valign="top"><a href="#get_base_dir-1">get_base_dir/1</a></td><td>Return the application directory for Module.</td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="get_base_dir-0">get_base_dir/0</a></h3>
+<div class="spec">
+<p><tt>get_base_dir() -&gt; string()</tt></p>
+</div><p>Return the application directory for this application. Equivalent to
+       get_base_dir(?MODULE).</p>
+
+<h3 class="function"><a name="get_base_dir-1">get_base_dir/1</a></h3>
+<div class="spec">
+<p><tt>get_base_dir(Module) -&gt; string()</tt></p>
+</div><p>Return the application directory for Module. It assumes Module is in
+       a standard OTP layout application in the ebin or src directory.</p>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:43.</i></p>
+</body>
+</html>

doc/core/erlydtl_example_variable_storage.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Abstract module erlydtl_example_variable_storage [SomeVar]</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Abstract module erlydtl_example_variable_storage [SomeVar]</h1>
+
+
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:41.</i></p>
+</body>
+</html>

doc/core/erlydtl_functional_tests.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module erlydtl_functional_tests</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module erlydtl_functional_tests</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>      ErlyDTL test suite.
+<p>Copyright � 2008 Roberto Saccon, Evan Miller</p>
+
+<p><b>Introduced in:</b> 2008-02-11 by Roberto Saccon
+  -------------------------------------------------------------------</p>
+<p><b>Authors:</b> Roberto Saccon (<a href="mailto:rsaccon@gmail.com"><tt>rsaccon@gmail.com</tt></a>) [<em>web site:</em> <tt><a href="http://rsaccon.com" target="_top">http://rsaccon.com</a></tt>], Evan Miller (<a href="mailto:emmiller@gmail.com"><tt>emmiller@gmail.com</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>      ErlyDTL test suite
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#find_file-1">find_file/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#find_file-2">find_file/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#render-3">render/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#run_test-1">run_test/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#run_tests-0">run_tests/0</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="find_file-1">find_file/1</a></h3>
+<div class="spec">
+<p><tt>find_file(File) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="find_file-2">find_file/2</a></h3>
+<div class="spec">
+<p><tt>find_file(File, X2) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="render-3">render/3</a></h3>
+<div class="spec">
+<p><tt>render(Arg, Vars, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="run_test-1">run_test/1</a></h3>
+<div class="spec">
+<p><tt>run_test(Name) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="run_tests-0">run_tests/0</a></h3>
+<div class="spec">
+<p><tt>run_tests() -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:41.</i></p>
+</body>
+</html>

doc/core/erlydtl_operators.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module erlydtl_operators</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module erlydtl_operators</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Operators for expression evaluation in templates.
+<p>Copyright � 2010 Marc Worrell</p>
+
+<p><b>Authors:</b> Marc Worrell (<a href="mailto:marc@worrell.nl"><tt>marc@worrell.nl</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>Operators for expression evaluation in templates
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#and-3">'and'/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#not-2">'not'/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#or-3">'or'/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#xor-3">'xor'/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#add-3">add/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#divide-3">divide/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#eq-3">eq/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#ge-3">ge/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#gt-3">gt/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#le-3">le/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#lt-3">lt/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#modulo-3">modulo/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#multiply-3">multiply/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#ne-3">ne/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#negate-2">negate/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#sub-3">sub/3</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="and-3">'and'/3</a></h3>
+<div class="spec">
+<p><tt>and(A, B, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="not-2">'not'/2</a></h3>
+<div class="spec">
+<p><tt>not(A, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="or-3">'or'/3</a></h3>
+<div class="spec">
+<p><tt>or(A, B, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="xor-3">'xor'/3</a></h3>
+<div class="spec">
+<p><tt>xor(A, B, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="add-3">add/3</a></h3>
+<div class="spec">
+<p><tt>add(A, B, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="divide-3">divide/3</a></h3>
+<div class="spec">
+<p><tt>divide(A, B, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="eq-3">eq/3</a></h3>
+<div class="spec">
+<p><tt>eq(Input, Value, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="ge-3">ge/3</a></h3>
+<div class="spec">
+<p><tt>ge(Input, Value, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="gt-3">gt/3</a></h3>
+<div class="spec">
+<p><tt>gt(Input, Value, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="le-3">le/3</a></h3>
+<div class="spec">
+<p><tt>le(Input, Value, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="lt-3">lt/3</a></h3>
+<div class="spec">
+<p><tt>lt(Input, Value, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="modulo-3">modulo/3</a></h3>
+<div class="spec">
+<p><tt>modulo(A, B, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="multiply-3">multiply/3</a></h3>
+<div class="spec">
+<p><tt>multiply(A, B, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="ne-3">ne/3</a></h3>
+<div class="spec">
+<p><tt>ne(Input, Value, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="negate-2">negate/2</a></h3>
+<div class="spec">
+<p><tt>negate(A, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="sub-3">sub/3</a></h3>
+<div class="spec">
+<p><tt>sub(A, B, Context) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:43.</i></p>
+</body>
+</html>

doc/core/erlydtl_parser.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module erlydtl_parser</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module erlydtl_parser</h1>
+<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#format_error-1">format_error/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#parse-1">parse/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#parse_and_scan-1">parse_and_scan/1</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="format_error-1">format_error/1</a></h3>
+<div class="spec">
+<p><tt>format_error(Message) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="parse-1">parse/1</a></h3>
+<div class="spec">
+<p><tt>parse(Tokens) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="parse_and_scan-1">parse_and_scan/1</a></h3>
+<div class="spec">
+<p><tt>parse_and_scan(X1) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:43.</i></p>
+</body>
+</html>

doc/core/erlydtl_runtime.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module erlydtl_runtime</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module erlydtl_runtime</h1>
+
+
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:43.</i></p>
+</body>
+</html>

doc/core/erlydtl_scanner.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module erlydtl_scanner</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module erlydtl_scanner</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#types">Data Types</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+   Template language scanner.
+<p>Copyright � 2008 Roberto Saccon, Evan Miller</p>
+
+<p><b>Introduced in:</b> 2007-11-11 by Roberto Saccon, Evan Miller
+  -------------------------------------------------------------------
+  
+  -------------------------------------------------------------------
+   Adapted and expanded for Zotonic by Marc Worrell &lt;marc@worrell.nl&gt;
+  -------------------------------------------------------------------</p>
+<p><b>Authors:</b> Roberto Saccon (<a href="mailto:rsaccon@gmail.com"><tt>rsaccon@gmail.com</tt></a>) [<em>web site:</em> <tt><a href="http://rsaccon.com" target="_top">http://rsaccon.com</a></tt>], Evan Miller (<a href="mailto:emmiller@gmail.com"><tt>emmiller@gmail.com</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>
+   Template language scanner
+<h2><a name="types">Data Types</a></h2>
+
+<h3 class="typedecl"><a name="type-template">template()</a></h3>
+<p><tt>template() = string() | binary()</tt></p>
+<p>Template to parse</p>
+
+<h3 class="typedecl"><a name="type-tokens">tokens()</a></h3>
+<p><tt>tokens() = [tuple()]</tt></p>
+
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#scan-1">scan/1</a></td><td>Scan the template string T and return the a token list or
+  an error.</td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="scan-1">scan/1</a></h3>
+<div class="spec">
+<p><tt>scan(T::<a href="#type-template">template()</a>) -&gt; {ok, S::<a href="#type-tokens">tokens()</a>} | {error, Reason}</tt></p>
+</div><p>Scan the template string T and return the a token list or
+  an error.</p>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:44.</i></p>
+</body>
+</html>

doc/core/erlydtl_tests_init.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module erlydtl_tests_init</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module erlydtl_tests_init</h1>
+<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#init-0">init/0</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="init-0">init/0</a></h3>
+<div class="spec">
+<p><tt>init() -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:41.</i></p>
+</body>
+</html>

doc/core/erlydtl_unittests.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module erlydtl_unittests</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module erlydtl_unittests</h1>
+<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#run_tests-0">run_tests/0</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="run_tests-0">run_tests/0</a></h3>
+<div class="spec">
+<p><tt>run_tests() -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:41.</i></p>
+</body>
+</html>

doc/core/gen_model.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module gen_model</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module gen_model</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Model behaviour.
+<p>Copyright � 2009 Marc Worrell
+  Date: 2009-04-12
+ </p>
+
+<p><b>Authors:</b> Marc Worrell (<a href="mailto:marc@worrell.nl"><tt>marc@worrell.nl</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>Model behaviour
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#behaviour_info-1">behaviour_info/1</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="behaviour_info-1">behaviour_info/1</a></h3>
+<div class="spec">
+<p><tt>behaviour_info(Other) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:41.</i></p>
+</body>
+</html>

doc/core/gen_scomp.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module gen_scomp</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module gen_scomp</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Scomp behaviour definition.
+<p>Copyright � 2009 Marc Worrell
+ 
+  Copyright 2009 Marc Worrell
+ 
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+ 
+      http://www.apache.org/licenses/LICENSE-2.0
+ 
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+ </p>
+
+<p><b>Authors:</b> Marc Worrell (<a href="mailto:marc@worrell.nl"><tt>marc@worrell.nl</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2><p>Scomp behaviour definition.  A scomp is a screen component that can optionally be cached.</p>
+ 
+       <p>render(Params, Vars, Context) -&gt; {ok, NewContext} | {ok, io_list()} | {error, Error}</p>
+ 
+       <p>vary(Params, Context) -&gt; {EssentialParams, MaxAge, Vary} | nocache | default</p>
+ 
+       	Params = proplist()
+           EssentialParams = proplist()  (proplist with params that make differences in the cache key)
+       	MaxAge = integer()
+           Vary = TermList  (used as dependencies for the depcache)
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#behaviour_info-1">behaviour_info/1</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="behaviour_info-1">behaviour_info/1</a></h3>
+<div class="spec">
+<p><tt>behaviour_info(Other) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:41.</i></p>
+</body>
+</html>

doc/core/index.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Overview</title>
+</head>
+<frameset cols="20%,80%">
+<frame src="modules-frame.html" name="modulesFrame" title="">
+
+<frame src="overview-summary.html" name="overviewFrame" title="">
+<noframes>
+<h2>This page uses frames</h2>
+<p>Your browser does not accept frames.
+<br>You should go to the <a href="overview-summary.html">non-frame version</a> instead.
+</p>
+</noframes>
+</frameset>
+</html>

doc/core/iso639.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module iso639</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module iso639</h1>
+<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#all2lang-0">all2lang/0</a></td><td></td></tr>
+<tr><td valign="top"><a href="#all3lang-0">all3lang/0</a></td><td></td></tr>
+<tr><td valign="top"><a href="#lc2lang-1">lc2lang/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#lc3lang-1">lc3lang/1</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="all2lang-0">all2lang/0</a></h3>
+<div class="spec">
+<p><tt>all2lang() -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="all3lang-0">all3lang/0</a></h3>
+<div class="spec">
+<p><tt>all3lang() -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="lc2lang-1">lc2lang/1</a></h3>
+<div class="spec">
+<p><tt>lc2lang(X1) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="lc3lang-1">lc3lang/1</a></h3>
+<div class="spec">
+<p><tt>lc3lang(X1) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:44.</i></p>
+</body>
+</html>

doc/core/m_acl.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module m_acl</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module m_acl</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Template access for access control functions and state.
+<p>Copyright � 2009 Marc Worrell
+  Date: 2009-04-27
+ </p>
+
+<p><b>Behaviours:</b> <a href="gen_model.html"><tt>gen_model</tt></a>.</p>
+<p><b>Authors:</b> Marc Worrell (<a href="mailto:marc@worrell.nl"><tt>marc@worrell.nl</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>Template access for access control functions and state
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#m_find_value-3">m_find_value/3</a></td><td>Fetch the value for the key from a model source.</td></tr>
+<tr><td valign="top"><a href="#m_to_list-2">m_to_list/2</a></td><td>Transform a m_config value to a list, used for template loops.</td></tr>
+<tr><td valign="top"><a href="#m_value-2">m_value/2</a></td><td>Transform a model value so that it can be formatted or piped through filters.</td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="m_find_value-3">m_find_value/3</a></h3>
+<div class="spec">
+<p><tt>m_find_value(Action::Key, M::Source, Context) -&gt; term()</tt></p>
+</div><p>Fetch the value for the key from a model source</p>
+
+<h3 class="function"><a name="m_to_list-2">m_to_list/2</a></h3>
+<div class="spec">
+<p><tt>m_to_list(X1::Source, Context) -&gt; List</tt></p>
+</div><p>Transform a m_config value to a list, used for template loops</p>
+
+<h3 class="function"><a name="m_value-2">m_value/2</a></h3>
+<div class="spec">
+<p><tt>m_value(M::Source, Context) -&gt; term()</tt></p>
+</div><p>Transform a model value so that it can be formatted or piped through filters</p>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:44.</i></p>
+</body>
+</html>

doc/core/m_category.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module m_category</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module m_category</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Model for categories.
+<p>Copyright � 2009 Marc Worrell
+  Date: 2009-04-08
+ </p>
+
+<p><b>Behaviours:</b> <a href="gen_model.html"><tt>gen_model</tt></a>.</p>
+<p><b>Authors:</b> Marc Worrell (<a href="mailto:marc@worrell.nl"><tt>marc@worrell.nl</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>Model for categories.  Add, change and re-order categories.
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#all_flat-1">all_flat/1</a></td><td>Return a flattened representation of the complete category tree.</td></tr>
+<tr><td valign="top"><a href="#all_flat-2">all_flat/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#all_flat_meta-1">all_flat_meta/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#boundaries-2">boundaries/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#delete-3">delete/3</a></td><td>Delete the category, move referring pages to another category.</td></tr>
+<tr><td valign="top"><a href="#enumerate-1">enumerate/1</a></td><td>Take a category list and make it into a tree, recalculating the left/right and lvl nrs.</td></tr>
+<tr><td valign="top"><a href="#get-2">get/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#get_by_name-2">get_by_name/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#get_by_parent-2">get_by_parent/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#get_page_count-2">get_page_count/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#get_path-2">get_path/2</a></td><td>Return the path from a root to the category (excluding the category itself).</td></tr>
+<tr><td valign="top"><a href="#get_range-2">get_range/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#get_range_by_name-2">get_range_by_name/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#get_root-1">get_root/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#id_to_name-2">id_to_name/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#image-2">image/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#insert-4">insert/4</a></td><td></td></tr>
+<tr><td valign="top"><a href="#is_a-2">is_a/2</a></td><td>Return the list of categories (as atoms) that the category is part of.</td></tr>
+<tr><td valign="top"><a href="#is_a-3">is_a/3</a></td><td>Check if the id is within another category.</td></tr>
+<tr><td valign="top"><a href="#last_modified-2">last_modified/2</a></td><td>Return the last modification date of the category.</td></tr>
+<tr><td valign="top"><a href="#m_find_value-3">m_find_value/3</a></td><td>Fetch the value for the key from a model source.</td></tr>
+<tr><td valign="top"><a href="#m_to_list-2">m_to_list/2</a></td><td>Transform a m_config value to a list, used for template loops.</td></tr>
+<tr><td valign="top"><a href="#m_value-2">m_value/2</a></td><td>Transform a model value so that it can be formatted or piped through filters.</td></tr>
+<tr><td valign="top"><a href="#move_before-3">move_before/3</a></td><td>Move a category in front of another category, resetting the parent of the moved category to
+  the parent of the other category.</td></tr>
+<tr><td valign="top"><a href="#move_below-3">move_below/3</a></td><td>Move the category below another category, placing it at the end of the children of that category.</td></tr>
+<tr><td valign="top"><a href="#move_end-2">move_end/2</a></td><td>Move the category to the end of all categories, making it a top category in the process.</td></tr>
+<tr><td valign="top"><a href="#name_to_id-2">name_to_id/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#name_to_id_check-2">name_to_id_check/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#ranges-2">ranges/2</a></td><td>Given a list of category ids, return the list of numeric ranges they cover.</td></tr>
+<tr><td valign="top"><a href="#renumber-1">renumber/1</a></td><td>Renumber all categories so that the left/right and level indices are correct.</td></tr>
+<tr><td valign="top"><a href="#renumber_pivot_task-2">renumber_pivot_task/2</a></td><td>Resync all ids that have their category nr changed.</td></tr>
+<tr><td valign="top"><a href="#tree-1">tree/1</a></td><td>Return the tree of all categories.</td></tr>
+<tr><td valign="top"><a href="#tree-2">tree/2</a></td><td>Return the tree of all categories below a category id.</td></tr>
+<tr><td valign="top"><a href="#tree_depth-2">tree_depth/2</a></td><td>Return the tree of all categories till a certain depth.</td></tr>
+<tr><td valign="top"><a href="#tree_depth-3">tree_depth/3</a></td><td>Return the tree of all categories below a category id till a certain depth.</td></tr>
+<tr><td valign="top"><a href="#update_sequence-2">update_sequence/2</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="all_flat-1">all_flat/1</a></h3>
+<div class="spec">
+<p><tt>all_flat(Context) -&gt; any()</tt></p>
+</div><p>Return a flattened representation of the complete category tree.  Can be used for overviews or select boxes.
+  The "meta" categories of predicate, category and group are suppressed.</p>
+
+<h3 class="function"><a name="all_flat-2">all_flat/2</a></h3>
+<div class="spec">
+<p><tt>all_flat(CatId, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="all_flat_meta-1">all_flat_meta/1</a></h3>
+<div class="spec">
+<p><tt>all_flat_meta(Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="boundaries-2">boundaries/2</a></h3>
+<div class="spec">
+<p><tt>boundaries(CatId::Id, Context::C) -&gt; {Left, Right}</tt></p>
+</div>
+
+<h3 class="function"><a name="delete-3">delete/3</a></h3>
+<div class="spec">
+<p><tt>delete(Id::<a href="#type-int">int()</a>, TransferId::<a href="#type-int">int()</a>, Context) -&gt; ok | {error, Reason}</tt></p>
+</div><p>Delete the category, move referring pages to another category. Fails when the transfer id is not a category.</p>
+
+<h3 class="function"><a name="enumerate-1">enumerate/1</a></h3>
+<div class="spec">
+<p><tt>enumerate(Cats::[Cat]) -&gt; [Sort]</tt>
+<ul class="definitions"><li><tt>Cat = {CatId, Parent, NodeSeq}</tt></li>
+<li><tt>Sort = {CatId, Nr, Level, Left, Right, Path}</tt></li>
+</ul></p>
+</div><p>Take a category list and make it into a tree, recalculating the left/right and lvl nrs</p>
+
+<h3 class="function"><a name="get-2">get/2</a></h3>
+<div class="spec">
+<p><tt>get(Name, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="get_by_name-2">get_by_name/2</a></h3>
+<div class="spec">
+<p><tt>get_by_name(Name, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="get_by_parent-2">get_by_parent/2</a></h3>
+<div class="spec">
+<p><tt>get_by_parent(Id, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="get_page_count-2">get_page_count/2</a></h3>
+<div class="spec">
+<p><tt>get_page_count(Id, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="get_path-2">get_path/2</a></h3>
+<div class="spec">
+<p><tt>get_path(Id, Context) -&gt; [CatId]</tt></p>
+</div><p>Return the path from a root to the category (excluding the category itself)</p>
+
+<h3 class="function"><a name="get_range-2">get_range/2</a></h3>
+<div class="spec">
+<p><tt>get_range(Id, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="get_range_by_name-2">get_range_by_name/2</a></h3>
+<div class="spec">
+<p><tt>get_range_by_name(Name, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="get_root-1">get_root/1</a></h3>
+<div class="spec">
+<p><tt>get_root(Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="id_to_name-2">id_to_name/2</a></h3>
+<div class="spec">
+<p><tt>id_to_name(Name, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="image-2">image/2</a></h3>
+<div class="spec">
+<p><tt>image(Id, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="insert-4">insert/4</a></h3>
+<div class="spec">
+<p><tt>insert(ParentId, Name, Props, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="is_a-2">is_a/2</a></h3>
+<div class="spec">
+<p><tt>is_a(Id::<a href="#type-int">int()</a>, Context) -&gt; <a href="#type-atomlist">atomlist()</a></tt></p>
+</div><p>Return the list of categories (as atoms) that the category is part of</p>
+
+<h3 class="function"><a name="is_a-3">is_a/3</a></h3>
+<div class="spec">
+<p><tt>is_a(Id::<a href="#type-int">int()</a>, Cat, Context) -&gt; <a href="#type-atomlist">atomlist()</a></tt></p>
+</div><p>Check if the id is within another category.</p>
+
+<h3 class="function"><a name="last_modified-2">last_modified/2</a></h3>
+<div class="spec">
+<p><tt>last_modified(Cat::term(), Context) -&gt; {ok, {{Y, M, D}, {Hour, Min, Sec}}} | {error, Reason}</tt></p>
+</div><p>Return the last modification date of the category. Returns false</p>
+
+<h3 class="function"><a name="m_find_value-3">m_find_value/3</a></h3>
+<div class="spec">
+<p><tt>m_find_value(Index::Key, M::Source, Context) -&gt; term()</tt></p>
+</div><p>Fetch the value for the key from a model source</p>
+
+<h3 class="function"><a name="m_to_list-2">m_to_list/2</a></h3>
+<div class="spec">
+<p><tt>m_to_list(M::Source, Context) -&gt; List</tt></p>
+</div><p>Transform a m_config value to a list, used for template loops</p>
+
+<h3 class="function"><a name="m_value-2">m_value/2</a></h3>
+<div class="spec">
+<p><tt>m_value(M::Source, Context) -&gt; term()</tt></p>
+</div><p>Transform a model value so that it can be formatted or piped through filters</p>
+
+<h3 class="function"><a name="move_before-3">move_before/3</a></h3>
+<div class="spec">
+<p><tt>move_before(CatId::<a href="#type-int">int()</a>, BeforeCatId::<a href="#type-int">int()</a>, Context) -&gt; ok | {error, Reason}</tt></p>
+</div><p>Move a category in front of another category, resetting the parent of the moved category to
+  the parent of the other category.</p>
+
+<h3 class="function"><a name="move_below-3">move_below/3</a></h3>
+<div class="spec">
+<p><tt>move_below(CatId::<a href="#type-int">int()</a>, NewParentId::<a href="#type-int">int()</a>, Context) -&gt; ok | {error, Reason}</tt></p>
+</div><p>Move the category below another category, placing it at the end of the children of that category.</p>
+
+<h3 class="function"><a name="move_end-2">move_end/2</a></h3>
+<div class="spec">
+<p><tt>move_end(CatId::<a href="#type-int">int()</a>, Context) -&gt; ok | {error, Reason}</tt></p>
+</div><p>Move the category to the end of all categories, making it a top category in the process</p>
+
+<h3 class="function"><a name="name_to_id-2">name_to_id/2</a></h3>
+<div class="spec">
+<p><tt>name_to_id(Id, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="name_to_id_check-2">name_to_id_check/2</a></h3>
+<div class="spec">
+<p><tt>name_to_id_check(Name, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="ranges-2">ranges/2</a></h3>
+<div class="spec">
+<p><tt>ranges(Cat::CatList, Context) -&gt; RangeList</tt></p>
+</div><p>Given a list of category ids, return the list of numeric ranges they cover.</p>
+
+<h3 class="function"><a name="renumber-1">renumber/1</a></h3>
+<div class="spec">
+<p><tt>renumber(Context) -&gt; ok</tt></p>
+</div><p>Renumber all categories so that the left/right and level indices are correct.</p>
+
+<h3 class="function"><a name="renumber_pivot_task-2">renumber_pivot_task/2</a></h3>
+<div class="spec">
+<p><tt>renumber_pivot_task(LowId, Context) -&gt; any()</tt></p>
+</div><p>Resync all ids that have their category nr changed.</p>
+
+<h3 class="function"><a name="tree-1">tree/1</a></h3>
+<div class="spec">
+<p><tt>tree(Context) -&gt; Tree</tt></p>
+</div><p>Return the tree of all categories</p>
+
+<h3 class="function"><a name="tree-2">tree/2</a></h3>
+<div class="spec">
+<p><tt>tree(CatId, Context) -&gt; TreeNode</tt></p>
+</div><p>Return the tree of all categories below a category id</p>
+
+<h3 class="function"><a name="tree_depth-2">tree_depth/2</a></h3>
+<div class="spec">
+<p><tt>tree_depth(Depth, Context) -&gt; Tree</tt></p>
+</div><p>Return the tree of all categories till a certain depth</p>
+
+<h3 class="function"><a name="tree_depth-3">tree_depth/3</a></h3>
+<div class="spec">
+<p><tt>tree_depth(CatId, Depth, Context) -&gt; TreeNode</tt></p>
+</div><p>Return the tree of all categories below a category id till a certain depth</p>
+
+<h3 class="function"><a name="update_sequence-2">update_sequence/2</a></h3>
+<div class="spec">
+<p><tt>update_sequence(Ids, Context) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:44.</i></p>
+</body>
+</html>

doc/core/m_config.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module m_config</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module m_config</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Model for the zotonic config table.
+<p>Copyright � 2009 Marc Worrell
+  Date: 2009-04-09
+ </p>
+
+<p><b>Behaviours:</b> <a href="gen_model.html"><tt>gen_model</tt></a>.</p>
+<p><b>Authors:</b> Marc Worrell (<a href="mailto:marc@worrell.nl"><tt>marc@worrell.nl</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>Model for the zotonic config table. Performs a fallback to the site configuration when
+  a key is not defined in the configuration table.
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#all-1">all/1</a></td><td>Return all configurations from the configuration table.</td></tr>
+<tr><td valign="top"><a href="#delete-3">delete/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#get-2">get/2</a></td><td>Get the list of configuration key for the module.</td></tr>
+<tr><td valign="top"><a href="#get-3">get/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#get_id-3">get_id/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#get_value-3">get_value/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#get_value-4">get_value/4</a></td><td></td></tr>
+<tr><td valign="top"><a href="#m_find_value-3">m_find_value/3</a></td><td>Fetch the value for the key from a model source.</td></tr>
+<tr><td valign="top"><a href="#m_to_list-2">m_to_list/2</a></td><td>Transform a m_config value to a list, used for template loops.</td></tr>
+<tr><td valign="top"><a href="#m_value-2">m_value/2</a></td><td>Transform a model value so that it can be formatted or piped through filters.</td></tr>
+<tr><td valign="top"><a href="#set_prop-5">set_prop/5</a></td><td></td></tr>
+<tr><td valign="top"><a href="#set_value-4">set_value/4</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="all-1">all/1</a></h3>
+<div class="spec">
+<p><tt>all(Context) -&gt; any()</tt></p>
+</div><p>Return all configurations from the configuration table. Returns a nested proplist (module, key)</p>
+
+<h3 class="function"><a name="delete-3">delete/3</a></h3>
+<div class="spec">
+<p><tt>delete(Module, Key, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="get-2">get/2</a></h3>
+<div class="spec">
+<p><tt>get(Module, Context) -&gt; any()</tt></p>
+</div><p>Get the list of configuration key for the module.</p>
+
+<h3 class="function"><a name="get-3">get/3</a></h3>
+<div class="spec">
+<p><tt>get(Module, Key, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="get_id-3">get_id/3</a></h3>
+<div class="spec">
+<p><tt>get_id(Module, Key, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="get_value-3">get_value/3</a></h3>
+<div class="spec">
+<p><tt>get_value(Module, Key, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="get_value-4">get_value/4</a></h3>
+<div class="spec">
+<p><tt>get_value(Module, Key, Default, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="m_find_value-3">m_find_value/3</a></h3>
+<div class="spec">
+<p><tt>m_find_value(Module::Key, M::Source, Context) -&gt; term()</tt></p>
+</div><p>Fetch the value for the key from a model source</p>
+
+<h3 class="function"><a name="m_to_list-2">m_to_list/2</a></h3>
+<div class="spec">
+<p><tt>m_to_list(M::Source, Context) -&gt; List</tt></p>
+</div><p>Transform a m_config value to a list, used for template loops</p>
+
+<h3 class="function"><a name="m_value-2">m_value/2</a></h3>
+<div class="spec">
+<p><tt>m_value(M::Source, Context) -&gt; term()</tt></p>
+</div><p>Transform a model value so that it can be formatted or piped through filters</p>
+
+<h3 class="function"><a name="set_prop-5">set_prop/5</a></h3>
+<div class="spec">
+<p><tt>set_prop(Module, Key, Prop, PropValue, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="set_value-4">set_value/4</a></h3>
+<div class="spec">
+<p><tt>set_value(Module, Key, Value, Context) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:44.</i></p>
+</body>
+</html>

doc/core/m_edge.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module m_edge</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module m_edge</h1>
+<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+<p>Copyright � 2009 Marc Worrell
+  Date: 2009-04-09
+ 
+  Copyright 2009 Marc Worrell
+ 
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+ 
+      http://www.apache.org/licenses/LICENSE-2.0
+ 
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.</p>
+
+<p><b>Behaviours:</b> <a href="gen_model.html"><tt>gen_model</tt></a>.</p>
+<p><b>Authors:</b> Marc Worrell (<a href="mailto:marc@worrell.nl"><tt>marc@worrell.nl</tt></a>).</p>
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#delete-2">delete/2</a></td><td>Delete an edge by Id.</td></tr>
+<tr><td valign="top"><a href="#delete-4">delete/4</a></td><td>Delete an edge by subject, object and predicate id.</td></tr>
+<tr><td valign="top"><a href="#delete_multiple-4">delete_multiple/4</a></td><td>Delete multiple edges between the subject and the object.</td></tr>
+<tr><td valign="top"><a href="#duplicate-3">duplicate/3</a></td><td>Duplicate all edges from one id to another id.</td></tr>
+<tr><td valign="top"><a href="#get-2">get/2</a></td><td>Get the complete edge with the id.</td></tr>
+<tr><td valign="top"><a href="#get_edges-2">get_edges/2</a></td><td>Return the full description of all edges from a subject, grouped by predicate.</td></tr>
+<tr><td valign="top"><a href="#get_id-4">get_id/4</a></td><td>Get the edge id of a subject/pred/object combination.</td></tr>
+<tr><td valign="top"><a href="#get_triple-2">get_triple/2</a></td><td>Get the edge as a triple {subject_id, predicate, object_id}.</td></tr>
+<tr><td valign="top"><a href="#insert-4">insert/4</a></td><td></td></tr>
+<tr><td valign="top"><a href="#m_find_value-3">m_find_value/3</a></td><td>Fetch all object/edge ids for a subject/predicate.</td></tr>
+<tr><td valign="top"><a href="#m_to_list-2">m_to_list/2</a></td><td>Transform a m_config value to a list, used for template loops.</td></tr>
+<tr><td valign="top"><a href="#m_value-2">m_value/2</a></td><td>Transform a model value so that it can be formatted or piped through filters.</td></tr>
+<tr><td valign="top"><a href="#object-4">object/4</a></td><td>Return the Nth object with a certaing predicate of a subject.</td></tr>
+<tr><td valign="top"><a href="#object_edge_ids-3">object_edge_ids/3</a></td><td>Return all object ids with the edge id for a predicate/subject_id.</td></tr>
+<tr><td valign="top"><a href="#object_predicate_ids-2">object_predicate_ids/2</a></td><td>Return the list of predicate ids in use by edges to objects from the id.</td></tr>
+<tr><td valign="top"><a href="#object_predicates-2">object_predicates/2</a></td><td>Return the list of predicates in use by edges to objects from the id.</td></tr>
+<tr><td valign="top"><a href="#objects-2">objects/2</a></td><td>Return all object ids of the resource.</td></tr>
+<tr><td valign="top"><a href="#objects-3">objects/3</a></td><td>Return all object ids of an id with a certain predicate.</td></tr>
+<tr><td valign="top"><a href="#subject-4">subject/4</a></td><td>Return the Nth subject with a certaing predicate of an object.</td></tr>
+<tr><td valign="top"><a href="#subject_edge_ids-3">subject_edge_ids/3</a></td><td>Return all subject ids with the edge id for a predicate/object_id.</td></tr>
+<tr><td valign="top"><a href="#subject_predicate_ids-2">subject_predicate_ids/2</a></td><td>Return the list of predicates is use by edges from subjects to the id.</td></tr>
+<tr><td valign="top"><a href="#subject_predicates-2">subject_predicates/2</a></td><td>Return the list of predicates is use by edges from subjects to the id.</td></tr>
+<tr><td valign="top"><a href="#subjects-2">subjects/2</a></td><td>Return all subject ids of the resource.</td></tr>
+<tr><td valign="top"><a href="#subjects-3">subjects/3</a></td><td>Return all subject ids of an object id with a certain predicate.</td></tr>
+<tr><td valign="top"><a href="#update_nth-5">update_nth/5</a></td><td>Update the nth edge of a subject.</td></tr>
+<tr><td valign="top"><a href="#update_sequence-4">update_sequence/4</a></td><td>Reorder the edges so that the mentioned ids are in front, in the listed order.</td></tr>
+<tr><td valign="top"><a href="#update_sequence_edge_ids-4">update_sequence_edge_ids/4</a></td><td>Update the sequence for the given edge ids.</td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="delete-2">delete/2</a></h3>
+<div class="spec">
+<p><tt>delete(Id, Context) -&gt; any()</tt></p>
+</div><p>Delete an edge by Id</p>
+
+<h3 class="function"><a name="delete-4">delete/4</a></h3>
+<div class="spec">
+<p><tt>delete(SubjectId, Pred, ObjectId, Context) -&gt; any()</tt></p>
+</div><p>Delete an edge by subject, object and predicate id</p>
+
+<h3 class="function"><a name="delete_multiple-4">delete_multiple/4</a></h3>
+<div class="spec">
+<p><tt>delete_multiple(SubjectId, Preds, ObjectId, Context) -&gt; any()</tt></p>
+</div><p>Delete multiple edges between the subject and the object</p>
+
+<h3 class="function"><a name="duplicate-3">duplicate/3</a></h3>
+<div class="spec">
+<p><tt>duplicate(Id, ToId, Context) -&gt; any()</tt></p>
+</div><p>Duplicate all edges from one id to another id.  Skip all edges that give ACL errors.</p>
+
+<h3 class="function"><a name="get-2">get/2</a></h3>
+<div class="spec">
+<p><tt>get(Id, Context) -&gt; any()</tt></p>
+</div><p>Get the complete edge with the id</p>
+
+<h3 class="function"><a name="get_edges-2">get_edges/2</a></h3>
+<div class="spec">
+<p><tt>get_edges(SubjectId, Context) -&gt; any()</tt></p>
+</div><p>Return the full description of all edges from a subject, grouped by predicate</p>
+
+<h3 class="function"><a name="get_id-4">get_id/4</a></h3>
+<div class="spec">
+<p><tt>get_id(SubjectId, Pred, ObjectId, Context) -&gt; any()</tt></p>
+</div><p>Get the edge id of a subject/pred/object combination</p>
+
+<h3 class="function"><a name="get_triple-2">get_triple/2</a></h3>
+<div class="spec">
+<p><tt>get_triple(Id, Context) -&gt; any()</tt></p>
+</div><p>Get the edge as a triple {subject_id, predicate, object_id}</p>
+
+<h3 class="function"><a name="insert-4">insert/4</a></h3>
+<div class="spec">
+<p><tt>insert(SubjectId, PredId, ObjectId, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="m_find_value-3">m_find_value/3</a></h3>
+<div class="spec">
+<p><tt>m_find_value(Key, M::Source, Context) -&gt; term()</tt></p>
+</div><p>Fetch all object/edge ids for a subject/predicate</p>
+
+<h3 class="function"><a name="m_to_list-2">m_to_list/2</a></h3>
+<div class="spec">
+<p><tt>m_to_list(M::Source, Context) -&gt; List</tt></p>
+</div><p>Transform a m_config value to a list, used for template loops</p>
+
+<h3 class="function"><a name="m_value-2">m_value/2</a></h3>
+<div class="spec">
+<p><tt>m_value(M::Source, Context) -&gt; term()</tt></p>
+</div><p>Transform a model value so that it can be formatted or piped through filters</p>
+
+<h3 class="function"><a name="object-4">object/4</a></h3>
+<div class="spec">
+<p><tt>object(Id, Pred, N, Context) -&gt; any()</tt></p>
+</div><p>Return the Nth object with a certaing predicate of a subject.</p>
+
+<h3 class="function"><a name="object_edge_ids-3">object_edge_ids/3</a></h3>
+<div class="spec">
+<p><tt>object_edge_ids(Id, Predicate, Context) -&gt; list()</tt></p>
+</div><p>Return all object ids with the edge id for a predicate/subject_id</p>
+
+<h3 class="function"><a name="object_predicate_ids-2">object_predicate_ids/2</a></h3>
+<div class="spec">
+<p><tt>object_predicate_ids(Id, Context) -&gt; List</tt></p>
+</div><p>Return the list of predicate ids in use by edges to objects from the id</p>
+
+<h3 class="function"><a name="object_predicates-2">object_predicates/2</a></h3>
+<div class="spec">
+<p><tt>object_predicates(Id, Context) -&gt; List</tt></p>
+</div><p>Return the list of predicates in use by edges to objects from the id</p>
+
+<h3 class="function"><a name="objects-2">objects/2</a></h3>
+<div class="spec">
+<p><tt>objects(Id, Context) -&gt; list()</tt></p>
+</div><p>Return all object ids of the resource</p>
+
+<h3 class="function"><a name="objects-3">objects/3</a></h3>
+<div class="spec">
+<p><tt>objects(Id, Pred, Context) -&gt; List</tt></p>
+</div><p>Return all object ids of an id with a certain predicate.  The order of the ids is deterministic.</p>
+
+<h3 class="function"><a name="subject-4">subject/4</a></h3>
+<div class="spec">
+<p><tt>subject(Id, Pred, N, Context) -&gt; any()</tt></p>
+</div><p>Return the Nth subject with a certaing predicate of an object.</p>
+
+<h3 class="function"><a name="subject_edge_ids-3">subject_edge_ids/3</a></h3>
+<div class="spec">
+<p><tt>subject_edge_ids(Id, Predicate, Context) -&gt; list()</tt></p>
+</div><p>Return all subject ids with the edge id for a predicate/object_id</p>
+
+<h3 class="function"><a name="subject_predicate_ids-2">subject_predicate_ids/2</a></h3>
+<div class="spec">
+<p><tt>subject_predicate_ids(Id, Context) -&gt; List</tt></p>
+</div><p>Return the list of predicates is use by edges from subjects to the id</p>
+
+<h3 class="function"><a name="subject_predicates-2">subject_predicates/2</a></h3>
+<div class="spec">
+<p><tt>subject_predicates(Id, Context) -&gt; List</tt></p>
+</div><p>Return the list of predicates is use by edges from subjects to the id</p>
+
+<h3 class="function"><a name="subjects-2">subjects/2</a></h3>
+<div class="spec">
+<p><tt>subjects(Id, Context) -&gt; list()</tt></p>
+</div><p>Return all subject ids of the resource</p>
+
+<h3 class="function"><a name="subjects-3">subjects/3</a></h3>
+<div class="spec">
+<p><tt>subjects(Id, Pred, Context) -&gt; List</tt></p>
+</div><p>Return all subject ids of an object id with a certain predicate.   The order of the ids is deterministic.</p>
+
+<h3 class="function"><a name="update_nth-5">update_nth/5</a></h3>
+<div class="spec">
+<p><tt>update_nth(SubjectId::<a href="#type-int">int()</a>, Predicate, Nth::<a href="#type-int">int()</a>, ObjectId, Context) -&gt; {ok, EdgeId} | {error, Reason}</tt></p>
+</div><p>Update the nth edge of a subject.  Set a new object, keep the predicate.
+  When there are not enough edges then an error is returned. The first edge is nr 1.</p>
+
+<h3 class="function"><a name="update_sequence-4">update_sequence/4</a></h3>
+<div class="spec">
+<p><tt>update_sequence(Id, Pred::Predicate, ObjectIds, Context) -&gt; ok | {error, Reason}</tt></p>
+</div><p>Reorder the edges so that the mentioned ids are in front, in the listed order.</p>
+
+<h3 class="function"><a name="update_sequence_edge_ids-4">update_sequence_edge_ids/4</a></h3>
+<div class="spec">
+<p><tt>update_sequence_edge_ids(Id, Pred::Predicate, EdgeIds, Context) -&gt; ok | {error, Reason}</tt></p>
+</div><p>Update the sequence for the given edge ids.  Optionally rename the predicate on the edge.</p>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:44.</i></p>
+</body>
+</html>

doc/core/m_identity.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module m_identity</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module m_identity</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Manage identities of users.
+<p>Copyright � 2009 Marc Worrell
+  Date: 2009-04-25
+ </p>
+
+<p><b>Behaviours:</b> <a href="gen_model.html"><tt>gen_model</tt></a>.</p>
+<p><b>Authors:</b> Marc Worrell (<a href="mailto:marc@worrell.nl"><tt>marc@worrell.nl</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>Manage identities of users.  An identity can be an username/password, openid, oauth credentials etc.
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#check_username_pw-3">check_username_pw/3</a></td><td>Return the rsc_id with the given username/password.</td></tr>
+<tr><td valign="top"><a href="#delete-2">delete/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#delete_by_type-3">delete_by_type/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#delete_username-2">delete_username/2</a></td><td>Delete an username from a resource.</td></tr>
+<tr><td valign="top"><a href="#get_props-4">get_props/4</a></td><td></td></tr>
+<tr><td valign="top"><a href="#get_rsc-2">get_rsc/2</a></td><td>Fetch all credentials belonging to the user "id".</td></tr>
+<tr><td valign="top"><a href="#get_rsc-3">get_rsc/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#get_username-1">get_username/1</a></td><td>Return the username of the current user.</td></tr>
+<tr><td valign="top"><a href="#get_username-2">get_username/2</a></td><td>Return the username of the resource id, undefined if no username.</td></tr>
+<tr><td valign="top"><a href="#hash-1">hash/1</a></td><td>Hash a password, using sha1 and a salt.</td></tr>
+<tr><td valign="top"><a href="#hash_is_equal-2">hash_is_equal/2</a></td><td>Compare if a password is the same as a hash.</td></tr>
+<tr><td valign="top"><a href="#insert-4">insert/4</a></td><td>Create an identity record.</td></tr>
+<tr><td valign="top"><a href="#insert-5">insert/5</a></td><td></td></tr>
+<tr><td valign="top"><a href="#insert_unique-4">insert_unique/4</a></td><td>Create an unique identity record.</td></tr>
+<tr><td valign="top"><a href="#insert_unique-5">insert_unique/5</a></td><td></td></tr>
+<tr><td valign="top"><a href="#is_user-2">is_user/2</a></td><td>Check if the resource has any credentials that will make him/her an user.</td></tr>
+<tr><td valign="top"><a href="#is_verified-2">is_verified/2</a></td><td>Check if there is a verified identity for the user, beyond the username_pw.</td></tr>
+<tr><td valign="top"><a href="#lookup_by_type_and_key-3">lookup_by_type_and_key/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#lookup_by_type_and_key_multi-3">lookup_by_type_and_key_multi/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#lookup_by_username-2">lookup_by_username/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#lookup_by_verify_key-2">lookup_by_verify_key/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#m_find_value-3">m_find_value/3</a></td><td>Fetch the value for the key from a model source.</td></tr>
+<tr><td valign="top"><a href="#m_to_list-2">m_to_list/2</a></td><td>Transform a m_config value to a list, used for template loops.</td></tr>
+<tr><td valign="top"><a href="#m_value-2">m_value/2</a></td><td>Transform a model value so that it can be formatted or piped through filters.</td></tr>
+<tr><td valign="top"><a href="#set_by_type-4">set_by_type/4</a></td><td></td></tr>
+<tr><td valign="top"><a href="#set_props-5">set_props/5</a></td><td>Replace any existing identity property with a new value.</td></tr>
+<tr><td valign="top"><a href="#set_username-3">set_username/3</a></td><td>Change the username of the resource id, only possible if there is already an username/password set.</td></tr>
+<tr><td valign="top"><a href="#set_username_pw-4">set_username_pw/4</a></td><td>Set the username/password of a resource.</td></tr>
+<tr><td valign="top"><a href="#set_verified-2">set_verified/2</a></td><td>Set the verified flag on a record.</td></tr>
+<tr><td valign="top"><a href="#set_verified-4">set_verified/4</a></td><td></td></tr>
+<tr><td valign="top"><a href="#set_verify_key-2">set_verify_key/2</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="check_username_pw-3">check_username_pw/3</a></h3>
+<div class="spec">
+<p><tt>check_username_pw(Username, Password, Context) -&gt; {ok, Id} | {error, Reason}</tt></p>
+</div><p>Return the rsc_id with the given username/password.  When succesful then updates the 'visited' timestamp of the entry.</p>
+
+<h3 class="function"><a name="delete-2">delete/2</a></h3>
+<div class="spec">
+<p><tt>delete(IdnId, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="delete_by_type-3">delete_by_type/3</a></h3>
+<div class="spec">
+<p><tt>delete_by_type(RscId, Type, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="delete_username-2">delete_username/2</a></h3>
+<div class="spec">
+<p><tt>delete_username(Id::ResourceId, Context) -&gt; void</tt></p>
+</div><p>Delete an username from a resource.</p>
+
+<h3 class="function"><a name="get_props-4">get_props/4</a></h3>
+<div class="spec">
+<p><tt>get_props(RscId, Type, Key, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="get_rsc-2">get_rsc/2</a></h3>
+<div class="spec">
+<p><tt>get_rsc(Id::integer(), Context::<a href="#type-context">context()</a>) -&gt; list()</tt></p>
+</div><p>Fetch all credentials belonging to the user "id"</p>
+
+<h3 class="function"><a name="get_rsc-3">get_rsc/3</a></h3>
+<div class="spec">
+<p><tt>get_rsc(Id, Type, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="get_username-1">get_username/1</a></h3>
+<div class="spec">
+<p><tt>get_username(Context) -&gt; Username | undefined</tt></p>
+</div><p>Return the username of the current user</p>
+
+<h3 class="function"><a name="get_username-2">get_username/2</a></h3>
+<div class="spec">
+<p><tt>get_username(Id::ResourceId, Context) -&gt; Username | undefined</tt></p>
+</div><p>Return the username of the resource id, undefined if no username</p>
+
+<h3 class="function"><a name="hash-1">hash/1</a></h3>
+<div class="spec">
+<p><tt>hash(Pw::Password) -&gt; tuple()</tt></p>
+</div><p>Hash a password, using sha1 and a salt</p>
+
+<h3 class="function"><a name="hash_is_equal-2">hash_is_equal/2</a></h3>
+<div class="spec">
+<p><tt>hash_is_equal(Pw::Password, X2::Hash) -&gt; bool()</tt></p>
+</div><p>Compare if a password is the same as a hash.</p>
+
+<h3 class="function"><a name="insert-4">insert/4</a></h3>
+<div class="spec">
+<p><tt>insert(RscId, Type, Key, Context) -&gt; any()</tt></p>
+</div><p>Create an identity record.</p>
+
+<h3 class="function"><a name="insert-5">insert/5</a></h3>
+<div class="spec">
+<p><tt>insert(RscId, Type, Key, Props, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="insert_unique-4">insert_unique/4</a></h3>
+<div class="spec">
+<p><tt>insert_unique(RscId, Type, Key, Context) -&gt; any()</tt></p>
+</div><p>Create an unique identity record.</p>
+
+<h3 class="function"><a name="insert_unique-5">insert_unique/5</a></h3>
+<div class="spec">
+<p><tt>insert_unique(RscId, Type, Key, Props, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="is_user-2">is_user/2</a></h3>
+<div class="spec">
+<p><tt>is_user(Id, Context) -&gt; any()</tt></p>
+</div><p>Check if the resource has any credentials that will make him/her an user</p>
+
+<h3 class="function"><a name="is_verified-2">is_verified/2</a></h3>
+<div class="spec">
+<p><tt>is_verified(RscId, Context) -&gt; any()</tt></p>
+</div><p>Check if there is a verified identity for the user, beyond the username_pw</p>
+
+<h3 class="function"><a name="lookup_by_type_and_key-3">lookup_by_type_and_key/3</a></h3>
+<div class="spec">
+<p><tt>lookup_by_type_and_key(Type, Key, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="lookup_by_type_and_key_multi-3">lookup_by_type_and_key_multi/3</a></h3>
+<div class="spec">
+<p><tt>lookup_by_type_and_key_multi(Type, Key, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="lookup_by_username-2">lookup_by_username/2</a></h3>
+<div class="spec">
+<p><tt>lookup_by_username(Key, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="lookup_by_verify_key-2">lookup_by_verify_key/2</a></h3>
+<div class="spec">
+<p><tt>lookup_by_verify_key(Key, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="m_find_value-3">m_find_value/3</a></h3>
+<div class="spec">
+<p><tt>m_find_value(Id::Key, M::Source, Context) -&gt; term()</tt></p>
+</div><p>Fetch the value for the key from a model source</p>
+
+<h3 class="function"><a name="m_to_list-2">m_to_list/2</a></h3>
+<div class="spec">
+<p><tt>m_to_list(M::Source, Context) -&gt; List</tt></p>
+</div><p>Transform a m_config value to a list, used for template loops</p>
+
+<h3 class="function"><a name="m_value-2">m_value/2</a></h3>
+<div class="spec">
+<p><tt>m_value(M::Source, Context) -&gt; term()</tt></p>
+</div><p>Transform a model value so that it can be formatted or piped through filters</p>
+
+<h3 class="function"><a name="set_by_type-4">set_by_type/4</a></h3>
+<div class="spec">
+<p><tt>set_by_type(RscId, Type, Key, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="set_props-5">set_props/5</a></h3>
+<div class="spec">
+<p><tt>set_props(RscId, Type, Key, Props, Context) -&gt; any()</tt></p>
+</div><p>Replace any existing identity property with a new value</p>
+
+<h3 class="function"><a name="set_username-3">set_username/3</a></h3>
+<div class="spec">
+<p><tt>set_username(Id::ResourceId, Username, Context) -&gt; ok | {error, Reason}</tt></p>
+</div><p>Change the username of the resource id, only possible if there is already an username/password set</p>
+
+<h3 class="function"><a name="set_username_pw-4">set_username_pw/4</a></h3>
+<div class="spec">
+<p><tt>set_username_pw(Id::RscId, Username, Password, Context) -&gt; ok | {error, Reason}</tt></p>
+</div><p>Set the username/password of a resource.  Replaces any existing username/password.</p>
+
+<h3 class="function"><a name="set_verified-2">set_verified/2</a></h3>
+<div class="spec">
+<p><tt>set_verified(Id, Context) -&gt; any()</tt></p>
+</div><p>Set the verified flag on a record.</p>
+
+<h3 class="function"><a name="set_verified-4">set_verified/4</a></h3>
+<div class="spec">
+<p><tt>set_verified(RscId, Type, Key, Context) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="set_verify_key-2">set_verify_key/2</a></h3>
+<div class="spec">
+<p><tt>set_verify_key(Id, Context) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Feb 24 2011, 19:20:44.</i></p>
+</body>
+</html>

doc/core/m_media.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module m_media</title>
+<link rel="stylesheet"