diff options
author | chai <chaifix@163.com> | 2021-11-15 11:54:17 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-11-15 11:54:17 +0800 |
commit | 30f2f46474bf4eda5f10d4c64a07cde01d469f66 (patch) | |
tree | 6ff2ed3262037b3c9bae2d2b9059a1d65773f31c /Data/BuiltIn/Libraries/json4lua/doc | |
parent | 4c36bed53fe63ae6056730b3ecad2573f03d88f8 (diff) |
*rename DefaultContent -> BuiltIn
Diffstat (limited to 'Data/BuiltIn/Libraries/json4lua/doc')
-rw-r--r-- | Data/BuiltIn/Libraries/json4lua/doc/INSTALL.txt | 4 | ||||
-rw-r--r-- | Data/BuiltIn/Libraries/json4lua/doc/LICENCE.txt | 21 | ||||
-rw-r--r-- | Data/BuiltIn/Libraries/json4lua/doc/README.txt | 5 | ||||
-rw-r--r-- | Data/BuiltIn/Libraries/json4lua/doc/VERSION.txt | 4 | ||||
-rw-r--r-- | Data/BuiltIn/Libraries/json4lua/doc/cgilua_patch.html | 187 | ||||
-rw-r--r-- | Data/BuiltIn/Libraries/json4lua/doc/index.html | 394 | ||||
-rw-r--r-- | Data/BuiltIn/Libraries/json4lua/doc/pics/json4lua.gif | bin | 0 -> 5023 bytes | |||
-rw-r--r-- | Data/BuiltIn/Libraries/json4lua/doc/pics/lunartone.gif | bin | 0 -> 312 bytes |
8 files changed, 615 insertions, 0 deletions
diff --git a/Data/BuiltIn/Libraries/json4lua/doc/INSTALL.txt b/Data/BuiltIn/Libraries/json4lua/doc/INSTALL.txt new file mode 100644 index 0000000..3e7cad3 --- /dev/null +++ b/Data/BuiltIn/Libraries/json4lua/doc/INSTALL.txt @@ -0,0 +1,4 @@ +INSTALLATION
+============
+
+See INSTALLATION section in doc/index.html
\ No newline at end of file diff --git a/Data/BuiltIn/Libraries/json4lua/doc/LICENCE.txt b/Data/BuiltIn/Libraries/json4lua/doc/LICENCE.txt new file mode 100644 index 0000000..48f61e7 --- /dev/null +++ b/Data/BuiltIn/Libraries/json4lua/doc/LICENCE.txt @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2009 Craig Mason-Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE.
\ No newline at end of file diff --git a/Data/BuiltIn/Libraries/json4lua/doc/README.txt b/Data/BuiltIn/Libraries/json4lua/doc/README.txt new file mode 100644 index 0000000..59e5b7b --- /dev/null +++ b/Data/BuiltIn/Libraries/json4lua/doc/README.txt @@ -0,0 +1,5 @@ +===================================================================================================================
+== README.txt
+===================================================================================================================
+
+Please see doc/index.html
diff --git a/Data/BuiltIn/Libraries/json4lua/doc/VERSION.txt b/Data/BuiltIn/Libraries/json4lua/doc/VERSION.txt new file mode 100644 index 0000000..deae881 --- /dev/null +++ b/Data/BuiltIn/Libraries/json4lua/doc/VERSION.txt @@ -0,0 +1,4 @@ +JSON4Lua and JSONRPC4Lua
+Version 1.0.0
+4 March 2015
+http://github.com/craigmj/json4lua/
\ No newline at end of file diff --git a/Data/BuiltIn/Libraries/json4lua/doc/cgilua_patch.html b/Data/BuiltIn/Libraries/json4lua/doc/cgilua_patch.html new file mode 100644 index 0000000..1b4d6b3 --- /dev/null +++ b/Data/BuiltIn/Libraries/json4lua/doc/cgilua_patch.html @@ -0,0 +1,187 @@ +<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>Home Page</h1>
+ <div class="navItem"><a href="index.html#news">Latest News</a></div>
+ <div class="navItem"><a href="index.html#introduction">Introduction</a></div>
+ <div class="navItem"><a href="index.html#licence">Licence</a></div>
+ <div class="navItem"><a href="index.html#requirements">Requirements</a></div>
+ <div class="navItem"><a href="index.html#download">Download</a></div>
+ <div class="navItem"><a href="index.html#installation">Installation</a></div>
+ <div class="navItem"><a href="index.html#usage">Usage & Reference</a></div>
+ <div class="navItem"><a href="index.html#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">Patching CGILua to handle <code>text/plain</code></div>
+
+ <!-- cgilua_patch.html -->
+JSON RPC (both the JSONRPC4Lua implementation and the <a href="http://www.jsolait.net/">jsolait Javascript</a> implementation) send the http request with a Content-Type of <code>text/plain</code>.<p/>
+
+CGILua 5.0 does not accept <code>text/plain</code> content, and will generate an error of 'Unsupported Media Type: text/plain'.<p/>
+
+This is easily patched in CGILua 5.0 by making the following change to <code>cgilua/post.lua</code>, line 286:<p/>
+Change:<pre>
+ elseif strfind (contenttype, "text/xml") then
+</pre>
+to
+<pre>
+ elseif strfind (contenttype, "text/xml") or strfind (contenttype, "text/plain") then
+</pre>
+This makes CGILua handle <code>text/plain</code> as it does <code>text/xml</code>, without parsing the incoming POST data.<p/>
+
+<b>Please note:</b> I have requested the maintainers of CGILua to make this change to CGILua, whereafter this patch will no longer be required.
+
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="copyright">© 2005 Craig Mason-Jones</td>
+ </tr>
+</table>
+</body>
+</html>
\ No newline at end of file diff --git a/Data/BuiltIn/Libraries/json4lua/doc/index.html b/Data/BuiltIn/Libraries/json4lua/doc/index.html new file mode 100644 index 0000000..12ec6c7 --- /dev/null +++ b/Data/BuiltIn/Libraries/json4lua/doc/index.html @@ -0,0 +1,394 @@ +<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 diff --git a/Data/BuiltIn/Libraries/json4lua/doc/pics/json4lua.gif b/Data/BuiltIn/Libraries/json4lua/doc/pics/json4lua.gif Binary files differnew file mode 100644 index 0000000..938bcb9 --- /dev/null +++ b/Data/BuiltIn/Libraries/json4lua/doc/pics/json4lua.gif diff --git a/Data/BuiltIn/Libraries/json4lua/doc/pics/lunartone.gif b/Data/BuiltIn/Libraries/json4lua/doc/pics/lunartone.gif Binary files differnew file mode 100644 index 0000000..e914a8f --- /dev/null +++ b/Data/BuiltIn/Libraries/json4lua/doc/pics/lunartone.gif |