diff options
Diffstat (limited to 'Data/DefaultContent/Libraries/json4lua/doc/index.html')
-rw-r--r-- | Data/DefaultContent/Libraries/json4lua/doc/index.html | 394 |
1 files changed, 0 insertions, 394 deletions
diff --git a/Data/DefaultContent/Libraries/json4lua/doc/index.html b/Data/DefaultContent/Libraries/json4lua/doc/index.html deleted file mode 100644 index 12ec6c7..0000000 --- a/Data/DefaultContent/Libraries/json4lua/doc/index.html +++ /dev/null @@ -1,394 +0,0 @@ -<html> -<head> -<title>JSON4Lua and JSONRPC4Lua</title> -<style type="text/css"> -body { - font-family: Arial, Helvetica, Geneva; - font-size: 10pt; -} - -.copyright { - color: #999999; - font-size: 8pt; - text-align:center; -} - -.navBar { - border-left: 1px solid lightgray; - border-right: 1px solid lightgray; - border-bottom: 1px solid lightgray; - margin-top:5px; - margin-bottom: 5px; -} -.navBar h1 { - background-image: url('pics/lunartone.gif'); - background-color: #e0c088; - color: white; - font-size: 9pt; - margin: 0px; - padding: 4px; -} - -.navBar .navItem a { - color: #999999; - font-size: 8pt; - padding: 2px 2px 2px 10px; - text-decoration:none; -} - -.navBar .navItem a:hover { - color: #ff9900; - text-decoration: underline; -} - -.titleBar { - border-bottom: 2px dotted gray; - font-size: 20pt; - font-weight: bold; - margin-bottom: 15px; - width: 100%; -} - -.workArea { - border: 1px none lightgray; - font-family: Times New Roman; - padding: 8px; - padding-left: 15px; -} - -.workArea a { - font-weight: bold; - text-decoration: none; -} - -.workArea a:hover { - color: #ff9900; - text-decoration: underline; -} - -.workArea .downloadTable { - border: 1px solid lightgray; - padding: 0px; - margin: 0px; -} - -.workArea .downloadTable * th { - background-color: #e0c088; - background-image: url('pics/lunartone.gif'); - color: white; -} - -.workArea .downloadTable * tr { - border: 1px solid lightgray; -} - -.workArea .downloadTable * td { - vertical-align: top; -} - -.workArea * dt { - font-size: 12pt; - margin-top: 10px; -} - -.workArea * .example { - background-color: #ffffcc; - border: 1px dashed lightgray; - padding: 10px; -} - -.workArea h1 { - font-size: 16pt; - font-weight: bold; -} - -.workArea h2 { - font-size: 14pt; - font-weight: normal; - color: gray; -} - -</style> -<body> -<table border="0"> - <tr> - <td valign="top"> - <img src="pics/json4lua.gif"><p/> - <!-- NAVIGATION BARS --> - - <div class="navBar"> - <h1>This Page</h1> - <div class="navItem"><a href="#news">Latest News</a></div> - <div class="navItem"><a href="#introduction">Introduction</a></div> - <div class="navItem"><a href="#licence">Licence</a></div> - <div class="navItem"><a href="#requirements">Requirements</a></div> - <div class="navItem"><a href="#download">Download</a></div> - <div class="navItem"><a href="#installation">Installation</a></div> - <div class="navItem"><a href="#usage">Usage & Reference</a> - <div class="navItem" style="margin-left: 4px"><a href="#json_decode">decode</a></div> - <div class="navItem" style="margin-left: 4px"><a href="#json_encode">encode</a></div> - <div class="navItem" style="margin-left: 4px"><a href="#json_null">null</a></div> - <div class="navItem" style="margin-left: 4px"><a href="#json_rpc_call">rpc.call</a></div> - <div class="navItem" style="margin-left: 4px"><a href="#json_rpc_proxy">rpc.proxy</a></div> - <div class="navItem" style="margin-left: 4px"><a href="#json_rpcserver_serve">rpcserver.serve</a></div> - - </div> - <div class="navItem"><a href="#roadmap">History & Roadmap</a></div> - </div> <!-- end of navigation bar: This Site --> - - <div class="navBar"> - <h1>json.luaforge</h1> - <div class="navItem"><a href="http://luaforge.net/projects/json/">Summary</a></div> - <div class="navItem"><a href="http://luaforge.net/forum/?group_id=143">Forums</a></div> - <div class="navItem"><a href="http://luaforge.net/tracker/?group_id=143">Tracker</a></div> - <div class="navItem"><a href="http://luaforge.net/news/?group_id=143">News</a></div> - <!--<div class="navItem"><a href="http://luaforge.net/scm/?group_id=143">CVS</a></div>--> - <div class="navItem"><a href="http://luaforge.net/frs/?group_id=143">Files</a></div> - </div> <!-- end of navigation bar: json.luaforge --> - - <div class="navBar"> - <h1>Lua</h1> - <div class="navItem"><a href="http://www.lua.org/">Lua</a></div> - <div class="navItem"><a href="http://www.luaforge.net/">Lua Forge</a></div> - <div class="navItem"><a href="http://www.keplerproject.org/cgilua/">CGI Lua</a></div> - <div class="navItem"><a href="http://www.keplerproject.org/compat/">Lua compat-5.1</a></div> - <div class="navItem"><a href="http://www.cs.princeton.edu/~diego/professional/luasocket/">Lua Socket 2.0</a></div> - <div class="navItem"><a href="http://www.keplerproject.org/xavante/">Xavante</a></div> - </div> <!-- end of navigation bar: Lua Resources --> - - <div class="navBar"> - <h1>JSON</h1> - <div class="navItem"><a href="http://www.json.org/">json.org</a></div> - <div class="navItem"><a href="http://www.json-rpc.org/">json-rpc.org</a></div> - </div> <!-- end of navigation bar: Lua Resources --> - - </td> - <!-- MAIN WORK AREA --> - <td valign="top" class="workArea"> - <div class="titleBar">JSON4Lua and JSONRPC4Lua</div> - <!-- ***************** LATEST NEWS ***************** --> - <h1><a name="news"></a>Latest News</h1> - <p><small>(2009-08-06)</small> We've changed the JSON4Lua and JSONRPC4Lua licence from the GPL to the MIT licence, like Lua itself.</p> - <p> - The 0.9.20 release fixes a bug in Lua 5.1 operation, introduces a <a href="#json_null"><code>json.null</code></a> value to force null values in JSON encodings, improves performance (over 50% faster on some tests), and permits <code>/* comments */</code> in the JSON string being decoded. - </p> - - <!-- ***************** INTRODUCTION ***************** --> - <h1><a name="introduction"></a>Introduction</h1> - JSON4Lua and JSONRPC4Lua implement <a href="http://www.json.org">JSON (JavaScript Object Notation)</a> encoding and decoding and a <a href="http://www.json-rpc.org/">JSON-RPC-over-http</a> client for <a href="http://www.lua.org/">Lua</a>.<p/> - -JSON is JavaScript Object Notation, a simple encoding of Javascript-like objects that is ideal for lightweight transmission of relatively weakly-typed data. -A sub-package of JSON4Lua is JSONRPC4Lua, which provides a simple JSON-RPC-over-http client and server (in a CGILua environment) for Lua. Please seen the documentation below for JSONRPC4Lua. - - <!-- ***************** LICENCE ***************** --> - <h1><a name="licence"></a>Licence</h1> - JSON4Lua is licensed under the MIT Consortium licence like Lua itself. Please see <a href="LICENCE.txt">LICENCE.txt</a> for details.<p/> - - <!-- ***************** REQUIREMENTS ***************** --> - <a name="requirements"></a><h1>Requirements</h1> - JSON4Lua is a pure-Lua module that is Lua 5.0 compatible (if you have <a href="http://www.keplerproject.org/compat/">compat-5.1</a> for Lua 5.0). JSON4Lua also works (perfectly, I hope) under Lua 5.1, which is where I largely use it nowadays. Since Lua is platform independent, so is JSON4Lua.<p/> - - The JSON4RPC sub-module requires <a href="http://www.cs.princeton.edu/~diego/professional/luasocket/">Lua Socket 2.0</a>. It uses <code>socket.http</code> for for the RPC over http connection. Socket 2.0 includes <code>ltn12</code>, which is also used by JSON4RPC.<p /> - - To use <code>json.rpcserver</code> you need a <a href="http://www.keplerproject.org/cgilua/">CGILua</a> enabled webserver. However, a quick <a href="cgilua_patch.html">patch</a> is required in CGILua 5.0 to support JSON-RPC. - - <!-- ***************** START OF DOWNLOAD SECTION ***************** --> - <h1><a name="download"></a>Download</h1> - JSON4Lua is hosted on <a href="http://www.luaforge.net">LuaForge</a>. - <table cols="2" class="downloadTable"> - <tr><th>Version</th><th>Date</th><th>Notes</th></tr> - <tr><td><a href="http://luaforge.net/frs/?group_id=143">0.9.30</a></td><td>6 August 2009</td><td> - Changed to MIT Licence. - </td></tr> - <tr><td><a href="http://luaforge.net/frs/?group_id=143">0.9.20</a></td><td>4 January 2006</td><td> - Introduction of local Lua functions for private functions (removed _ function prefix). <br /> - Fixed Lua 5.1 compatibility issues.<br /> - Introduced <code>json.null</code> to have null values in associative arrays.<br /> - Performance improvement (more than 50% on some tests) through <code>table.concat</code> rather than <code>..</code> operator.<br/> - <code>json.decode</code> now ignores <code>/* */</code> comments in the JSON string.<br /> - </td></tr> - <tr><td><a href="http://luaforge.net/frs/?group_id=143">0.9.10</a></td><td>20 December 2005</td><td> - Fixes bug with array representation when nil / null values occur in the array.<br /> - Adds content-type header of <code>text/plain</code> to JSON RPC http requests.<br /> - Introduces <code>json.rpcserver</code> module with simple JSON RPC enablement for Lua objects.<br /> - Moved the <code>json.lua</code> file into the <code>json</code> directory. Ensure, therefore, that your <code>LUA_PATH</code> contains a module-finding form like <code>LUA_PATH = c:\proj\lua\?\?.lua;?.lua</code>.<br/> - </td></tr> - <tr> - <td><a href="http://luaforge.net/frs/?group_id=143">0.9.01</a></td> - <td>19 December 2005</td> - <td>Minor corrections to documentation.</td> - </tr> - <tr> - <td><a href="http://luaforge.net/frs/?group_id=143">0.9.00</a></td> - <td>19 December 2005</td> - <td>First release</td> - </tr> - </table> - <!-- END OF DOWNLOAD SECTION --> - - <!-- ***************** START OF INSTALLATION SECTION ***************** --> - <h1><a name="installation"></a>Installation</h1> - As of version 0.9.10, all the JSON4Lua files are contained in the <code>json</code> subdirectory in the distribution zip.<p /> - Simply copy the <code>json</code> subdirectory so that it is in your Lua path.<p /> - Ensure that your <code>LUA_PATH</code> variable permits module resolution of the form <code>?/?.lua</code>.<p /> - <b>Example</b> - <div class="example"> - </div> - <h2>Using Windows</h2> - Under Windows, set your Lua path as (my Lua installation is in <code>c:\proj\lua\</code>): <p/> - <code> - set LUA_PATH=c:\proj\lua\?.lua;c:\proj\lua\?\?.lua;?.lua - </code><p/> - For compat-5.1.lua to start when Lua starts (if you're using Lua 5.0), you also need:<p/> - <code> - set LUA_INIT=@c:\proj\lua\compat-5.1.lua - </code><p /> - You probably also want to set your library path:<p/> - <code>set LUA_CPATH=c:\proj\lua\lib\?.dll;?.dll</code> - - <!------------------------ USAGE AND REFERENCE --------------------> - <h1><a name="usage"></a>Usage & Reference</h1> - The following functions in <b>JSON4Lua</b> and <b>JSONRPC4Lua</b> are of interest:<p /> - <dl> - <dt><a name="json_encode"></a><code>string <b>json.encode</b>( lua_object )</code></dt> - <dd>Returns the Lua object JSON encoded into a string.<p/> - <b>Example</b> - <div class="example"> - <code> - json = require("json")<br/> - print (json.encode( { 1, 2, 'fred', {first='mars',second='venus',third='earth'} } )) - </code><p/> - prints<p/><code> [1,2,"fred", {"first":"mars","second":"venus","third","earth"}]</code> - </div> - - </dd> - <dt><a name="json_decode"></a><code>lua_object <b>json.decode</b>( json_string )</code></dt> - <dd>Decodes the JSON encoded data structure, and returns a Lua object with the appropriate data.<p/> - <b>Example</b> - - <div class="example"> - <code> - json = require("json")<br/> - - testString = [[ { "one":1 , "two":2, "primes":[2,3,5,7] } ]]<br/> - o = json.decode(testString)<br/> - table.foreach(o,print)<br /> - print ("Primes are:")<br /> - table.foreach(o.primes,print) - </code><p/> - prints:<p/> - <pre> -one 1 -two 2 -primes table: 0032B928 -Primes are: -1 2 -2 3 -3 5 -4 7</pre> - </div></dd> - - <dt><a name="json_null"></a><code><b>json.null</b></code></dt> - <dd>Returns a unique value that will be encoded as a <code>null</code> in a JSON encoding. - <p>This is necessary in one situation. In Lua, if a key in a table has a <code>nil</code> value, the key is simply discarded (since any non-existent key has a nil value). The encoding of arrays has been built to manage this nil-values in arrays, but associative arrays provide a problem. Consider: - <div class="example"><pre>t = { user="test", password=nil }</pre></div> - Since Lua simply discards the <code>password</code> key, JSON4Lua encodes this as the JSON string - <div class="example"><pre>{"user":"test"}</pre></div> - If, for some reason, your JSON RPC Server requires a defined <code>null</code> value, use the following code: - <div class="example"><pre>t = { user="test", password=json.null }</pre></div> - This will now correctly encode to: - <div class="example"><pre>{"user":"test","password":null}</pre></div> - Incidentally, <code>json.null</code> is simply a function that returns itself, so that you can use either <code>json.null</code> or <code>json.null()</code> as you fancy. - </dd> - - - <dt><a name="json_rpc_call"></a><code>result, error <b>json.rpc.call</b> ( url, method, ...)</code></dt> - <dd>Calls the named method on the given url with the arg parameters. Returns the result and the error. If <code>error</code> is <code>nil</code>, no error occurred.<p/> - <b>Example</b> - <div class="example"> - <pre>require ("json.rpc") -result, error = json.rpc.call("http://jsolait.net/testj.py","echo","Test echo!") -print(result)</pre> - <p />prints<p /> - <pre>Test echo!</pre> - </div> - </dd> - <dt><a name="json_rpc_proxy"></a><code>proxyServer = <b>json.rpc.proxy</b> (url)</code></dt> - <dd>Creates a proxy server object on which JSON-RPC calls can be made. Each call will return the <code>result, error</code>. If <code>error</code> is <code>nil</code>, no error occurred.<p/> - <b>Example</b> - <div class="example"> - <pre> -require ("json.rpc") -server = json.rpc.proxy("http://jsolait.net/testj.py") -result, error = server.echo('Test echo!') -print(result)</pre> - <p />prints<p /> - <pre>Test echo!</pre> - </div> - </dd> - - <dt><a name="json_rpcserver_serve"></a><code><b>json.rpcserver.serve</b>(object[, packReturn])</code></dt> - <dd> - Handles an incoming CGILua request as a JSON RPC request and serves the request from - the given object. - <p />The optional <code>packReturn</code> parameter, if set <code>true</code>, will, if the requested - method returns more than one value, pack these returned values into an array. If only a single value - is returned, it is not packed into an array. If <code>packReturn</code> is <code>false</code> (or not set), only the first - return value from the requested method will be returned. This is necessitated since the JSON protocol does not permit a method call to return more than a single value. - <p/> - - <code>serve</code> returns nothing.<p/> - - <b>Example</b> - <div class="example"> - <pre> --- --- jsonrpc.lua --- Installed in a CGILua webserver environment (with necessary CGI Lua 5.0 patch) --- -require ('json.rpcserver') - --- The Lua class that is to serve JSON RPC requests -local myServer = { - echo = function (msg) return msg end, - average = function(...) - local total=0 - local count=0 - for i=1, table.getn(arg) do - total = total + arg[i] - count = count + 1 - end - return { average= total/count, sum = total, n=count } - end -} - -json.rpcserver.serve(myServer) -</pre> -An example of using this JSON RPC server from a Lua file: -<pre> -require ('json.rpc') -local server = json.rpc.proxy('http://www.myserver.com/jsonrpc.lua') -table.foreach(server.average(10,15,23), print) -</pre> -Prints: -<pre> -average 16 -sum 48 -n 3 -</pre> - </div> - - </dd> - </dl> - - <!-- ***************** HISTORY AND ROADMAP ***************** --> - <h1><a name="roadmap"></a>History & Roadmap</h1> - The downloads sections details the versions and their related histories. I will wait for Lua 5.1 to be final (expected late January) before making the JSON4Lua module beta. If no serious bugs or objections are encountered, I will make the module 1.0 on 1 April 2006 (to coincide with April Fool's day!) - </td> - </tr> - <tr> - <td colspan="2" class="copyright">© 2005, 2006 Craig Mason-Jones</td> - </tr> -</table> -</body> -</html>
\ No newline at end of file |