Updated API documentation
authorTuomas Jormola <tj@solitudo.net>
Mon, 17 Jan 2011 21:39:31 +0000 (23:39 +0200)
committerTuomas Jormola <tj@solitudo.net>
Mon, 17 Jan 2011 21:39:31 +0000 (23:39 +0200)
api/html/files/metar.html [new file with mode: 0644]
api/html/index.html [new file with mode: 0644]
api/html/luadoc.css [new file with mode: 0644]
api/html/modules/metar.html [new file with mode: 0644]
api/ikiwiki/files/metar.lua.mdwn [new file with mode: 0644]
api/ikiwiki/index.mdwn [new file with mode: 0644]
api/ikiwiki/modules/metar.mdwn [new file with mode: 0644]

diff --git a/api/html/files/metar.html b/api/html/files/metar.html
new file mode 100644 (file)
index 0000000..e7213e8
--- /dev/null
@@ -0,0 +1,590 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/metar.html">metar</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+       <li><strong>metar.lua</strong></li>
+       
+</ul>
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+<h1>File <code>metar.lua</code></h1>
+
+
+<p>Lua class to parse METAR coded weather reports and fetch current METAR reports from <a href="http://www.noaa.gov">NOAA</a> <a href="http://weather.noaa.gov">Internet Weather Service</a>. The parser is pretty simple and by no means claims to support every feature one might find in METAR coded weather reports. For example, weather forecasts and automatic weather reports are not detected. Unsupported features in the weather reports are silently dropped.</p>
+
+
+<p><b>Author:</b>
+<table class="authors_list">
+
+       <tr><td class="name">Tuomas Jormola</td></tr>
+
+</table>
+</p>
+
+
+<p>Copyright &copy;© 2010 Tuomas Jormola <a href="mailto:tj@solitudo.net">tj@solitudo.net</a> <a href="http://solitudo.net">http://solitudo.net</a> Licensed under the terms of the <a href="http://www.gnu.org/licenses/gpl-2.0.html">GNU General Public License Version 2.0</a>.  </p>
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#metatable.__index:get_metar_data">metatable.__index:get_metar_data</a>&nbsp;()</td>
+       <td class="summary">Return parsed METAR data as a table </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#new">new</a>&nbsp;(args)</td>
+       <td class="summary">Create a new METAR object </td>
+       </tr>
+
+</table>
+
+
+
+
+<h2>Tables</h2>
+<table class="table_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#CLOUD_COVERAGE">CLOUD_COVERAGE</a></td>
+       <td class="summary">Could coverage table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#CLOUD_TYPE">CLOUD_TYPE</a></td>
+       <td class="summary">Could type table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#SKY_STATUS">SKY_STATUS</a></td>
+       <td class="summary">Could type table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#WEATHER_DESCRIPTOR">WEATHER_DESCRIPTOR</a></td>
+       <td class="summary">Weather descriptor table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#WEATHER_INTENSITY">WEATHER_INTENSITY</a></td>
+       <td class="summary">Weather intensity table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#WEATHER_PHENOMENA">WEATHER_PHENOMENA</a></td>
+       <td class="summary">Weather phenomena table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#WIND_DIRECTION">WIND_DIRECTION</a></td>
+       <td class="summary">Wind direction table.</td>
+       </tr>
+
+</table>
+
+
+
+<br/>
+<br/>
+
+
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="metatable.__index:get_metar_data"></a><strong>metatable.__index:get_metar_data</strong>&nbsp;()</dt>
+<dd>
+Return parsed METAR data as a table
+
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>var m = metar.new('EFHF')          -- Weather station Helsinki/Malmi
+       
+       <li>var md = m:get_metar_data()        -- metardata.temperature contains the temperature etc.
+       
+       <li>if md.temperature >= 30 then print("It's hot!") end
+       
+       <li>if md.weather.intensity and md.weather.intensity == m.WEATHER_INTENSITY.HEAVY and md.weather.phenomena and md.weather.phenomena == m.WEATHER_PHENOMENA.RAIN then print("It's raining a lot!") end
+       
+</ul>
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Table containing the data parsed from the METAR data. If an error occurs, returns nil as the first return value. The table may contain following entries <ul> <li><code>timestamp</code> <code>os.time</code> table which represents the timestamp when the METAR data was generated. Time is in UTC. Always included.</li> <li><code>wind</code> A table representing the wind phenomena with the following keys. Optional, but usually included.</li> <ul> <li><code>direction</code> Wind direction as a value of the <a href="#WIND_DIRECTION">WIND_DIRECTION</a> table.</li> <li><code>speed</code> Wind speed in knots.</li> <li><code>gust</code> Gust speed in knots, optional.</li> </ul> <li><code>visibility</code> A list of tables that represent the visibility towards different directions. Tables contain the following keys. Optional, but if defined, at least one visibility entry exists in the list. Usually included.</li> <ul> <li><code>direction</code> Direction as a value of the <a href="#WIND_DIRECTION">WIND_DIRECTION</a> table. Optional.</li> <li><code>distance</code> Visibility distance in meters</li> </ul> <li><code>vertical_visibility</code> Vertical visibility in meters. Optional.</li> <li><code>runway_visual_range</code> A table representing runway visual range with the following keys. Optional.</li> <ul> <li><code>runway</code> Runway code</li> <li><code>visibility</code> Visibility in meters</li> </ul> <li><code>clouds</code> A list of tables that represent clouds at different altitudes. Tables contain the following keys. Optional, but if defined, at least one cloud entry exists in the list. Usually included.</li> <ul> <li><code>coverage</code> Cloud coverate as a value of the <a href="#CLOUD_COVERAGE">CLOUD_COVERAGE</a> table.</li> <li><code>altitude</code> Altitude of the clouds in feet.</li> <li><code>type</code> Cloud type as a value of the <a href="#CLOUD_TYPE">CLOUD_TYPE</a> table.</li> </ul> <li><code>weather</code> A table representing weather conditions with the following keys. Optional, but usually included.</li> <ul> <li><code>intensity</code> Weather intensity as a value of the <a href="#WEATHER_INTENSITY">WEATHER_INTENSITY</a> table. Optional.</li></li> <li><code>descriptor</code> Weather descriptor as a value of the <a href="#WEATHER_DESCRIPTOR">WEATHER_DESCRIPTOR</a> table. Optional.</li> <li><code>phenomena</code> Weather phenomena as a value of the <a href="#WEATHER_PHENOMENA">WEATHER_PHENOMENA</a> table. Always included.</li> </ul> <li><code>sky</code> Sky status as a value of the <a href="#SKY_STATUS">SKY_STATUS</a> table. Always included.</li> <li><code>temperature</code> Temperature in Celcius. Always  included.</li> <li><code>dewpoint</code> Dewpoint temperature in Celcius. Always included.</li> <li><code>pressure</code> Pressure in hectopascals. Optional, but usually included.</li> </ul>
+       
+       <li>Error string in case an error occurred and nil METAR table is returned
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="new"></a><strong>new</strong>&nbsp;(args)</dt>
+<dd>
+Create a new METAR object
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         args: String that is either the METAR data string (one line) to parse or the four-letter, upper-case <a href="http://en.wikipedia.org/wiki/International_Civil_Aviation_Organization_airport_code">ICAO code</a> for the weather station. If weather station code is given, the current METAR data for the station is downloaded from <a href="http://weather.noaa.gov">IWS</a>.
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+A table which is the metar object for METAR data given or downloaded from IWS for the given weather station code
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+<h2><a name="tables"></a>Tables</h2>
+<dl class="table">
+
+<dt><a name="CLOUD_COVERAGE"></a><strong>CLOUD_COVERAGE</strong></dt>
+<dd>Could coverage table. Values from this table are used in the result table with key <code>clouds[n].coverage</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+<em>Fields</em>
+<ul>
+       
+       <li>
+         CLEAR: Clear
+       </li>
+       
+       <li>
+         FEW: Few clouds
+       </li>
+       
+       <li>
+         SCATTERED: Scattered clouds
+       </li>
+       
+       <li>
+         BROKEN_SKY: Broken sky
+       </li>
+       
+       <li>
+         OVERCAST: Overcast
+       </li>
+       
+</ul>
+
+
+</dd>
+
+
+<dt><a name="CLOUD_TYPE"></a><strong>CLOUD_TYPE</strong></dt>
+<dd>Could type table. Values from this table are used in the result table with key <code>clouds[n].type</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+<em>Fields</em>
+<ul>
+       
+       <li>
+         CUMULONIMBUS: Cumulonimbus clouds
+       </li>
+       
+       <li>
+         TOWERING_CUMULUS: Towering Cumulus clouds
+       </li>
+       
+</ul>
+
+
+</dd>
+
+
+<dt><a name="SKY_STATUS"></a><strong>SKY_STATUS</strong></dt>
+<dd>Could type table. Values from this table are used in the result table with key <code>sky</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+<em>Fields</em>
+<ul>
+       
+       <li>
+         UNKNOWN: Sky type is unknown
+       </li>
+       
+       <li>
+         OBSCURE: Obscured sky
+       </li>
+       
+       <li>
+         CLOUDS: Clouds in the sky
+       </li>
+       
+       <li>
+         CLEAR: Clear sky
+       </li>
+       
+       <li>
+         NO_SIGNIFICANT_CLOUDS: No significant clouds detected
+       </li>
+       
+       <li>
+         NO_CLOUDS_DETECTED: No clouds detected
+       </li>
+       
+</ul>
+
+
+</dd>
+
+
+<dt><a name="WEATHER_DESCRIPTOR"></a><strong>WEATHER_DESCRIPTOR</strong></dt>
+<dd>Weather descriptor table. Values from this table are used in the result table with key <code>weather.descriptor</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+<em>Fields</em>
+<ul>
+       
+       <li>
+         SHALLOW: Shallow phenomena
+       </li>
+       
+       <li>
+         PARTIAL: Partial phenomena
+       </li>
+       
+       <li>
+         PATCHES: Patches phenomena
+       </li>
+       
+       <li>
+         DRIFTING: Drifring phenomena
+       </li>
+       
+       <li>
+         BLOWING: Blowing phenomena
+       </li>
+       
+       <li>
+         SHOWERS: Showers phenomena
+       </li>
+       
+       <li>
+         THUNDERSTORM: Thunderstorm phenomena
+       </li>
+       
+       <li>
+         FREEZING: Freezing phenomena
+       </li>
+       
+</ul>
+
+
+</dd>
+
+
+<dt><a name="WEATHER_INTENSITY"></a><strong>WEATHER_INTENSITY</strong></dt>
+<dd>Weather intensity table. Values from this table are used in the result table with key <code>weather.intensity</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+<em>Fields</em>
+<ul>
+       
+       <li>
+         MODERATE: Moderate phenomena
+       </li>
+       
+       <li>
+         LIGHT: Light phenomena
+       </li>
+       
+       <li>
+         HEAVY: Heavy phenomena
+       </li>
+       
+       <li>
+         VICINITY: In the vicinity of the weather observation point
+       </li>
+       
+</ul>
+
+
+</dd>
+
+
+<dt><a name="WEATHER_PHENOMENA"></a><strong>WEATHER_PHENOMENA</strong></dt>
+<dd>Weather phenomena table. Values from this table are used in the result table with key <code>weather.phenomena</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+<em>Fields</em>
+<ul>
+       
+       <li>
+         DRIZZLE: Drizzle
+       </li>
+       
+       <li>
+         RAIN: Rain
+       </li>
+       
+       <li>
+         SNOW: Snow
+       </li>
+       
+       <li>
+         SNOW_GRAINS: Snow grains
+       </li>
+       
+       <li>
+         ICE_CRYSTALS: Ice crystals
+       </li>
+       
+       <li>
+         ICE_PELLETS: Ice pellets
+       </li>
+       
+       <li>
+         HAIL: Hail
+       </li>
+       
+       <li>
+         SMALL_HAIL: Small hail
+       </li>
+       
+       <li>
+         UNKNOWN: Unknown phenomena
+       </li>
+       
+       <li>
+         MIST: Mist
+       </li>
+       
+       <li>
+         FOG: Fog
+       </li>
+       
+       <li>
+         SMOKE: Smoke
+       </li>
+       
+       <li>
+         VOLCANIC_ASH: Volcanic ash
+       </li>
+       
+       <li>
+         WIDESPREAD_DUST: Widespread dust
+       </li>
+       
+       <li>
+         SAND: Sand
+       </li>
+       
+       <li>
+         HAZE: Haze
+       </li>
+       
+       <li>
+         SPRAY: Spray
+       </li>
+       
+       <li>
+         DUST_WHIRLS: Dust whirls
+       </li>
+       
+       <li>
+         SQUALLS: Squalls
+       </li>
+       
+       <li>
+         FUNNEL_CLOUD: Funnel cloud
+       </li>
+       
+       <li>
+         SAND_STORM: Sand storm
+       </li>
+       
+       <li>
+         DUST_STORM: Dust storm
+       </li>
+       
+</ul>
+
+
+</dd>
+
+
+<dt><a name="WIND_DIRECTION"></a><strong>WIND_DIRECTION</strong></dt>
+<dd>Wind direction table. Values from this table are used in the result table with key <code>wind.direction</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+<em>Fields</em>
+<ul>
+       
+       <li>
+         VRB: Index value for variable speed direction
+       </li>
+       
+       <li>
+         N: Index value for North
+       </li>
+       
+       <li>
+         NNE: Index value for North - North East
+       </li>
+       
+       <li>
+         NE: Index value for Nort - East
+       </li>
+       
+       <li>
+         ENE: Index value for East - North East
+       </li>
+       
+       <li>
+         E: Index value for East
+       </li>
+       
+       <li>
+         ESE: Index value for East - South East
+       </li>
+       
+       <li>
+         SE: Index value for South East
+       </li>
+       
+       <li>
+         SSE: Index value for South - South Est
+       </li>
+       
+       <li>
+         S: Index value for South
+       </li>
+       
+       <li>
+         SSW: Index value for South - South West
+       </li>
+       
+       <li>
+         SW: Index value for South West
+       </li>
+       
+       <li>
+         WSW: Index value for West - South West
+       </li>
+       
+       <li>
+         W: Index value for West
+       </li>
+       
+       <li>
+         WNW: Index value for West - North West
+       </li>
+       
+       <li>
+         NW: Index value for North West
+       </li>
+       
+       <li>
+         NNW: Index value for North - North West
+       </li>
+       
+</ul>
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" --> 
+</body>
+</html>
diff --git a/api/html/index.html b/api/html/index.html
new file mode 100644 (file)
index 0000000..40305e2
--- /dev/null
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><strong>Index</strong></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="modules/metar.html">metar</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+       <li>
+               <a href="files/metar.html">metar.lua</a>
+       </li>
+
+</ul>
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+
+
+<h2>Modules</h2>
+<table class="module_list">
+<!--<tr><td colspan="2">Modules</td></tr>-->
+
+       <tr>
+               <td class="name"><a href="modules/metar.html">metar</a></td>
+               <td class="summary">Lua class to parse METAR coded weather reports and fetch current METAR reports from <a href="http://www.noaa.gov">NOAA</a> <a href="http://weather.noaa.gov">Internet Weather Service</a>.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+<h2>Files</h2>
+<table class="file_list">
+<!--<tr><td colspan="2">Files</td></tr>-->
+
+       <tr>
+               <td class="name"><a href="files/metar.html">metar.lua</a></td>
+               <td class="summary"></td>
+       </tr>
+
+</table>
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" --> 
+</body>
+</html>
diff --git a/api/html/luadoc.css b/api/html/luadoc.css
new file mode 100644 (file)
index 0000000..bc0f98a
--- /dev/null
@@ -0,0 +1,286 @@
+body { 
+    margin-left: 1em; 
+    margin-right: 1em; 
+    font-family: arial, helvetica, geneva, sans-serif;
+       background-color:#ffffff; margin:0px;
+}
+
+code {
+    font-family: "Andale Mono", monospace; 
+}
+
+tt {
+    font-family: "Andale Mono", monospace; 
+}
+
+body, td, th { font-size: 11pt; }
+
+h1, h2, h3, h4 { margin-left: 0em; }
+
+textarea, pre, tt { font-size:10pt; }
+body, td, th { color:#000000; }
+small { font-size:0.85em; }
+h1 { font-size:1.5em; }
+h2 { font-size:1.25em; }
+h3 { font-size:1.15em; }
+h4 { font-size:1.06em; }
+
+a:link { font-weight:bold; color: #004080; text-decoration: none; }
+a:visited { font-weight:bold; color: #006699; text-decoration: none; }
+a:link:hover { text-decoration:underline; }
+hr { color:#cccccc }
+img { border-width: 0px; }
+
+
+h3 { padding-top: 1em; }
+
+p { margin-left: 1em; }
+
+p.name { 
+    font-family: "Andale Mono", monospace; 
+    padding-top: 1em;
+    margin-left: 0em; 
+}
+
+blockquote { margin-left: 3em; }
+
+pre.example {
+    background-color: rgb(245, 245, 245);
+    border-top-width: 1px;
+    border-right-width: 1px;
+    border-bottom-width: 1px;
+    border-left-width: 1px;
+    border-top-style: solid;
+    border-right-style: solid;
+    border-bottom-style: solid;
+    border-left-style: solid;
+    border-top-color: silver;
+    border-right-color: silver;
+    border-bottom-color: silver;
+    border-left-color: silver;
+    padding: 1em;
+    margin-left: 1em;
+    margin-right: 1em;
+    font-family: "Andale Mono", monospace; 
+    font-size: smaller;
+}
+
+
+hr { 
+    margin-left: 0em;
+       background: #00007f; 
+       border: 0px;
+       height: 1px;
+}
+
+ul { list-style-type: disc; }
+
+table.index { border: 1px #00007f; }
+table.index td { text-align: left; vertical-align: top; }
+table.index ul { padding-top: 0em; margin-top: 0em; }
+
+table {
+    border: 1px solid black;
+       border-collapse: collapse;
+    margin-left: auto;
+    margin-right: auto;
+}
+th {
+    border: 1px solid black;
+    padding: 0.5em;
+}
+td {
+    border: 1px solid black;
+    padding: 0.5em;
+}
+div.header, div.footer { margin-left: 0em; }
+
+#container
+{
+       margin-left: 1em;
+       margin-right: 1em;
+       background-color: #f0f0f0;
+}
+
+#product
+{
+       text-align: center;
+       border-bottom: 1px solid #cccccc;
+       background-color: #ffffff;
+}
+
+#product big {
+       font-size: 2em;
+}
+
+#product_logo
+{
+}
+
+#product_name
+{
+}
+
+#product_description
+{
+}
+
+#main
+{
+       background-color: #f0f0f0;
+       border-left: 2px solid #cccccc;
+}
+
+#navigation
+{
+       float: left;
+       width: 18em;
+       margin: 0;
+       vertical-align: top;
+       background-color: #f0f0f0;
+       overflow:visible;
+}
+
+#navigation h1 {
+       background-color:#e7e7e7;
+       font-size:1.1em;
+       color:#000000;
+       text-align:left;
+       margin:0px;
+       padding:0.2em;
+       border-top:1px solid #dddddd;
+       border-bottom:1px solid #dddddd;
+}
+
+#navigation ul
+{
+       font-size:1em;
+       list-style-type: none;
+       padding: 0;
+       margin: 1px;
+}
+
+#navigation li
+{
+       text-indent: -1em;
+       margin: 0em 0em 0em 0.5em;
+       display: block;
+       padding: 3px 0px 0px 12px;
+}
+
+#navigation li li a
+{
+       padding: 0px 3px 0px -1em;
+}
+
+#content
+{
+       margin-left: 18em;
+       padding: 1em;
+       border-left: 2px solid #cccccc;
+       border-right: 2px solid #cccccc;
+       background-color: #ffffff;
+}
+
+#about
+{
+       clear: both;
+       margin: 0;
+       padding: 5px;
+       border-top: 2px solid #cccccc;
+       background-color: #ffffff;
+}
+
+@media print {
+       body { 
+               font: 12pt "Times New Roman", "TimeNR", Times, serif;
+       }
+       a { font-weight:bold; color: #004080; text-decoration: underline; }
+       
+       #main\r  {\r              background-color: #ffffff;\r             border-left: 0px;\r      }\r      
+       #container\r     {\r              margin-left: 2%;\r               margin-right: 2%;\r              background-color: #ffffff;\r     }
+       
+       #content\r       {\r              margin-left: 0px;\r              padding: 1em;\r          border-left: 0px;\r              border-right: 0px;\r             background-color: #ffffff;\r     }
+       
+       #navigation\r    {\r              display: none;
+       }
+       pre.example {
+               font-family: "Andale Mono", monospace; 
+               font-size: 10pt;
+               page-break-inside: avoid;
+       }
+}
+
+table.module_list td
+{
+       border-width: 1px;
+       padding: 3px;
+       border-style: solid;
+       border-color: #cccccc;
+}
+table.module_list td.name { background-color: #f0f0f0; }
+table.module_list td.summary { width: 100%; }
+
+table.file_list
+{
+       border-width: 1px;
+       border-style: solid;
+       border-color: #cccccc;
+       border-collapse: collapse;
+}
+table.file_list td
+{
+       border-width: 1px;
+       padding: 3px;
+       border-style: solid;
+       border-color: #cccccc;
+}
+table.file_list td.name { background-color: #f0f0f0; }
+table.file_list td.summary { width: 100%; }
+
+
+table.function_list
+{
+       border-width: 1px;
+       border-style: solid;
+       border-color: #cccccc;
+       border-collapse: collapse;
+}
+table.function_list td
+{
+       border-width: 1px;
+       padding: 3px;
+       border-style: solid;
+       border-color: #cccccc;
+}
+table.function_list td.name { background-color: #f0f0f0; }
+table.function_list td.summary { width: 100%; }
+
+
+table.table_list
+{
+       border-width: 1px;
+       border-style: solid;
+       border-color: #cccccc;
+       border-collapse: collapse;
+}
+table.table_list td
+{
+       border-width: 1px;
+       padding: 3px;
+       border-style: solid;
+       border-color: #cccccc;
+}
+table.table_list td.name { background-color: #f0f0f0; }
+table.table_list td.summary { width: 100%; }
+
+dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;}
+dl.function dd {padding-bottom: 1em;}
+dl.function h3 {padding: 0; margin: 0; font-size: medium;}
+
+dl.table dt {border-top: 1px solid #ccc; padding-top: 1em;}
+dl.table dd {padding-bottom: 1em;}
+dl.table h3 {padding: 0; margin: 0; font-size: medium;}
+
+#TODO: make module_list, file_list, function_list, table_list inherit from a list
+
diff --git a/api/html/modules/metar.html b/api/html/modules/metar.html
new file mode 100644 (file)
index 0000000..152537b
--- /dev/null
@@ -0,0 +1,586 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li><strong>metar</strong></li>
+       
+</ul>
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+       <li>
+               <a href="../files/metar.html">metar.lua</a>
+       </li>
+
+</ul>
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Module <code>metar</code></h1>
+
+<p>Lua class to parse METAR coded weather reports and fetch current METAR reports from <a href="http://www.noaa.gov">NOAA</a> <a href="http://weather.noaa.gov">Internet Weather Service</a>. The parser is pretty simple and by no means claims to support every feature one might find in METAR coded weather reports. For example, weather forecasts and automatic weather reports are not detected. Unsupported features in the weather reports are silently dropped.</p>
+
+<p><b>Author:</b>
+<table class="authors_list">
+
+       <tr><td class="name">Tuomas Jormola</td></tr>
+
+</table>
+</p>
+
+
+<p>Copyright&copy; © 2010 Tuomas Jormola <a href="mailto:tj@solitudo.net">tj@solitudo.net</a> <a href="http://solitudo.net">http://solitudo.net</a> Licensed under the terms of the <a href="http://www.gnu.org/licenses/gpl-2.0.html">GNU General Public License Version 2.0</a>.  </p>
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#metatable.__index:get_metar_data">metatable.__index:get_metar_data</a>&nbsp;()</td>
+       <td class="summary">Return parsed METAR data as a table </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#new">new</a>&nbsp;(args)</td>
+       <td class="summary">Create a new METAR object </td>
+       </tr>
+
+</table>
+
+
+
+
+<h2>Tables</h2>
+<table class="table_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#CLOUD_COVERAGE">CLOUD_COVERAGE</a></td>
+       <td class="summary">Could coverage table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#CLOUD_TYPE">CLOUD_TYPE</a></td>
+       <td class="summary">Could type table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#SKY_STATUS">SKY_STATUS</a></td>
+       <td class="summary">Could type table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#WEATHER_DESCRIPTOR">WEATHER_DESCRIPTOR</a></td>
+       <td class="summary">Weather descriptor table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#WEATHER_INTENSITY">WEATHER_INTENSITY</a></td>
+       <td class="summary">Weather intensity table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#WEATHER_PHENOMENA">WEATHER_PHENOMENA</a></td>
+       <td class="summary">Weather phenomena table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#WIND_DIRECTION">WIND_DIRECTION</a></td>
+       <td class="summary">Wind direction table.</td>
+       </tr>
+
+</table>
+
+
+
+<br/>
+<br/>
+
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="metatable.__index:get_metar_data"></a><strong>metatable.__index:get_metar_data</strong>&nbsp;()</dt>
+<dd>
+Return parsed METAR data as a table
+
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>var m = metar.new('EFHF')          -- Weather station Helsinki/Malmi
+       
+       <li>var md = m:get_metar_data()        -- metardata.temperature contains the temperature etc.
+       
+       <li>if md.temperature >= 30 then print("It's hot!") end
+       
+       <li>if md.weather.intensity and md.weather.intensity == m.WEATHER_INTENSITY.HEAVY and md.weather.phenomena and md.weather.phenomena == m.WEATHER_PHENOMENA.RAIN then print("It's raining a lot!") end
+       
+</ul>
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Table containing the data parsed from the METAR data. If an error occurs, returns nil as the first return value. The table may contain following entries <ul> <li><code>timestamp</code> <code>os.time</code> table which represents the timestamp when the METAR data was generated. Time is in UTC. Always included.</li> <li><code>wind</code> A table representing the wind phenomena with the following keys. Optional, but usually included.</li> <ul> <li><code>direction</code> Wind direction as a value of the <a href="#WIND_DIRECTION">WIND_DIRECTION</a> table.</li> <li><code>speed</code> Wind speed in knots.</li> <li><code>gust</code> Gust speed in knots, optional.</li> </ul> <li><code>visibility</code> A list of tables that represent the visibility towards different directions. Tables contain the following keys. Optional, but if defined, at least one visibility entry exists in the list. Usually included.</li> <ul> <li><code>direction</code> Direction as a value of the <a href="#WIND_DIRECTION">WIND_DIRECTION</a> table. Optional.</li> <li><code>distance</code> Visibility distance in meters</li> </ul> <li><code>vertical_visibility</code> Vertical visibility in meters. Optional.</li> <li><code>runway_visual_range</code> A table representing runway visual range with the following keys. Optional.</li> <ul> <li><code>runway</code> Runway code</li> <li><code>visibility</code> Visibility in meters</li> </ul> <li><code>clouds</code> A list of tables that represent clouds at different altitudes. Tables contain the following keys. Optional, but if defined, at least one cloud entry exists in the list. Usually included.</li> <ul> <li><code>coverage</code> Cloud coverate as a value of the <a href="#CLOUD_COVERAGE">CLOUD_COVERAGE</a> table.</li> <li><code>altitude</code> Altitude of the clouds in feet.</li> <li><code>type</code> Cloud type as a value of the <a href="#CLOUD_TYPE">CLOUD_TYPE</a> table.</li> </ul> <li><code>weather</code> A table representing weather conditions with the following keys. Optional, but usually included.</li> <ul> <li><code>intensity</code> Weather intensity as a value of the <a href="#WEATHER_INTENSITY">WEATHER_INTENSITY</a> table. Optional.</li></li> <li><code>descriptor</code> Weather descriptor as a value of the <a href="#WEATHER_DESCRIPTOR">WEATHER_DESCRIPTOR</a> table. Optional.</li> <li><code>phenomena</code> Weather phenomena as a value of the <a href="#WEATHER_PHENOMENA">WEATHER_PHENOMENA</a> table. Always included.</li> </ul> <li><code>sky</code> Sky status as a value of the <a href="#SKY_STATUS">SKY_STATUS</a> table. Always included.</li> <li><code>temperature</code> Temperature in Celcius. Always  included.</li> <li><code>dewpoint</code> Dewpoint temperature in Celcius. Always included.</li> <li><code>pressure</code> Pressure in hectopascals. Optional, but usually included.</li> </ul>
+       
+       <li>Error string in case an error occurred and nil METAR table is returned
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="new"></a><strong>new</strong>&nbsp;(args)</dt>
+<dd>
+Create a new METAR object
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         args: String that is either the METAR data string (one line) to parse or the four-letter, upper-case <a href="http://en.wikipedia.org/wiki/International_Civil_Aviation_Organization_airport_code">ICAO code</a> for the weather station. If weather station code is given, the current METAR data for the station is downloaded from <a href="http://weather.noaa.gov">IWS</a>.
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+A table which is the metar object for METAR data given or downloaded from IWS for the given weather station code
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+<h2><a name="tables"></a>Tables</h2>
+<dl class="table">
+
+<dt><a name="CLOUD_COVERAGE"></a><strong>CLOUD_COVERAGE</strong></dt>
+<dd>Could coverage table. Values from this table are used in the result table with key <code>clouds[n].coverage</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+<em>Fields</em>
+<ul>
+       
+       <li>
+         CLEAR: Clear
+       </li>
+       
+       <li>
+         FEW: Few clouds
+       </li>
+       
+       <li>
+         SCATTERED: Scattered clouds
+       </li>
+       
+       <li>
+         BROKEN_SKY: Broken sky
+       </li>
+       
+       <li>
+         OVERCAST: Overcast
+       </li>
+       
+</ul>
+
+
+</dd>
+
+
+<dt><a name="CLOUD_TYPE"></a><strong>CLOUD_TYPE</strong></dt>
+<dd>Could type table. Values from this table are used in the result table with key <code>clouds[n].type</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+<em>Fields</em>
+<ul>
+       
+       <li>
+         CUMULONIMBUS: Cumulonimbus clouds
+       </li>
+       
+       <li>
+         TOWERING_CUMULUS: Towering Cumulus clouds
+       </li>
+       
+</ul>
+
+
+</dd>
+
+
+<dt><a name="SKY_STATUS"></a><strong>SKY_STATUS</strong></dt>
+<dd>Could type table. Values from this table are used in the result table with key <code>sky</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+<em>Fields</em>
+<ul>
+       
+       <li>
+         UNKNOWN: Sky type is unknown
+       </li>
+       
+       <li>
+         OBSCURE: Obscured sky
+       </li>
+       
+       <li>
+         CLOUDS: Clouds in the sky
+       </li>
+       
+       <li>
+         CLEAR: Clear sky
+       </li>
+       
+       <li>
+         NO_SIGNIFICANT_CLOUDS: No significant clouds detected
+       </li>
+       
+       <li>
+         NO_CLOUDS_DETECTED: No clouds detected
+       </li>
+       
+</ul>
+
+
+</dd>
+
+
+<dt><a name="WEATHER_DESCRIPTOR"></a><strong>WEATHER_DESCRIPTOR</strong></dt>
+<dd>Weather descriptor table. Values from this table are used in the result table with key <code>weather.descriptor</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+<em>Fields</em>
+<ul>
+       
+       <li>
+         SHALLOW: Shallow phenomena
+       </li>
+       
+       <li>
+         PARTIAL: Partial phenomena
+       </li>
+       
+       <li>
+         PATCHES: Patches phenomena
+       </li>
+       
+       <li>
+         DRIFTING: Drifring phenomena
+       </li>
+       
+       <li>
+         BLOWING: Blowing phenomena
+       </li>
+       
+       <li>
+         SHOWERS: Showers phenomena
+       </li>
+       
+       <li>
+         THUNDERSTORM: Thunderstorm phenomena
+       </li>
+       
+       <li>
+         FREEZING: Freezing phenomena
+       </li>
+       
+</ul>
+
+
+</dd>
+
+
+<dt><a name="WEATHER_INTENSITY"></a><strong>WEATHER_INTENSITY</strong></dt>
+<dd>Weather intensity table. Values from this table are used in the result table with key <code>weather.intensity</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+<em>Fields</em>
+<ul>
+       
+       <li>
+         MODERATE: Moderate phenomena
+       </li>
+       
+       <li>
+         LIGHT: Light phenomena
+       </li>
+       
+       <li>
+         HEAVY: Heavy phenomena
+       </li>
+       
+       <li>
+         VICINITY: In the vicinity of the weather observation point
+       </li>
+       
+</ul>
+
+
+</dd>
+
+
+<dt><a name="WEATHER_PHENOMENA"></a><strong>WEATHER_PHENOMENA</strong></dt>
+<dd>Weather phenomena table. Values from this table are used in the result table with key <code>weather.phenomena</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+<em>Fields</em>
+<ul>
+       
+       <li>
+         DRIZZLE: Drizzle
+       </li>
+       
+       <li>
+         RAIN: Rain
+       </li>
+       
+       <li>
+         SNOW: Snow
+       </li>
+       
+       <li>
+         SNOW_GRAINS: Snow grains
+       </li>
+       
+       <li>
+         ICE_CRYSTALS: Ice crystals
+       </li>
+       
+       <li>
+         ICE_PELLETS: Ice pellets
+       </li>
+       
+       <li>
+         HAIL: Hail
+       </li>
+       
+       <li>
+         SMALL_HAIL: Small hail
+       </li>
+       
+       <li>
+         UNKNOWN: Unknown phenomena
+       </li>
+       
+       <li>
+         MIST: Mist
+       </li>
+       
+       <li>
+         FOG: Fog
+       </li>
+       
+       <li>
+         SMOKE: Smoke
+       </li>
+       
+       <li>
+         VOLCANIC_ASH: Volcanic ash
+       </li>
+       
+       <li>
+         WIDESPREAD_DUST: Widespread dust
+       </li>
+       
+       <li>
+         SAND: Sand
+       </li>
+       
+       <li>
+         HAZE: Haze
+       </li>
+       
+       <li>
+         SPRAY: Spray
+       </li>
+       
+       <li>
+         DUST_WHIRLS: Dust whirls
+       </li>
+       
+       <li>
+         SQUALLS: Squalls
+       </li>
+       
+       <li>
+         FUNNEL_CLOUD: Funnel cloud
+       </li>
+       
+       <li>
+         SAND_STORM: Sand storm
+       </li>
+       
+       <li>
+         DUST_STORM: Dust storm
+       </li>
+       
+</ul>
+
+
+</dd>
+
+
+<dt><a name="WIND_DIRECTION"></a><strong>WIND_DIRECTION</strong></dt>
+<dd>Wind direction table. Values from this table are used in the result table with key <code>wind.direction</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+<em>Fields</em>
+<ul>
+       
+       <li>
+         VRB: Index value for variable speed direction
+       </li>
+       
+       <li>
+         N: Index value for North
+       </li>
+       
+       <li>
+         NNE: Index value for North - North East
+       </li>
+       
+       <li>
+         NE: Index value for Nort - East
+       </li>
+       
+       <li>
+         ENE: Index value for East - North East
+       </li>
+       
+       <li>
+         E: Index value for East
+       </li>
+       
+       <li>
+         ESE: Index value for East - South East
+       </li>
+       
+       <li>
+         SE: Index value for South East
+       </li>
+       
+       <li>
+         SSE: Index value for South - South Est
+       </li>
+       
+       <li>
+         S: Index value for South
+       </li>
+       
+       <li>
+         SSW: Index value for South - South West
+       </li>
+       
+       <li>
+         SW: Index value for South West
+       </li>
+       
+       <li>
+         WSW: Index value for West - South West
+       </li>
+       
+       <li>
+         W: Index value for West
+       </li>
+       
+       <li>
+         WNW: Index value for West - North West
+       </li>
+       
+       <li>
+         NW: Index value for North West
+       </li>
+       
+       <li>
+         NNW: Index value for North - North West
+       </li>
+       
+</ul>
+
+
+</dd>
+
+
+</dl>
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" --> 
+</body>
+</html>
diff --git a/api/ikiwiki/files/metar.lua.mdwn b/api/ikiwiki/files/metar.lua.mdwn
new file mode 100644 (file)
index 0000000..03af34b
--- /dev/null
@@ -0,0 +1,330 @@
+[[!meta title="LuaDoc - metar.lua"]]
+
+<div id="luadoc" markdown="1">
+
+[[Jump to content|ikiwiki/files/metar.lua#luadoc-content"]]
+
+# LuaDoc
+
+
+* [[Index|ikiwiki]]
+
+
+
+# Modules
+
+* [[metar|ikiwiki/modules/metar]]
+
+
+
+
+# Files
+
+* **metar.lua**
+
+
+
+
+---
+
+<span id="luadoc-content" />
+
+# File `metar.lua`
+
+
+Lua class to parse METAR coded weather reports and fetch current METAR reports from <a href="http://www.noaa.gov">NOAA</a> <a href="http://weather.noaa.gov">Internet Weather Service</a>. The parser is pretty simple and by no means claims to support every feature one might find in METAR coded weather reports. For example, weather forecasts and automatic weather reports are not detected. Unsupported features in the weather reports are silently dropped.
+
+
+
+**Author:**
+
+* Tuomas Jormola
+
+
+
+
+Copyright: © 2010 Tuomas Jormola <a href="mailto:tj@solitudo.net">tj@solitudo.net</a> <a href="http://solitudo.net">http://solitudo.net</a> Licensed under the terms of the <a href="http://www.gnu.org/licenses/gpl-2.0.html">GNU General Public License Version 2.0</a>.  
+
+
+
+
+
+## Functions summary
+
+| - | - |
+
+| [[`metatable.__index:get_metar_data`|ikiwiki/files/metar.lua#luadoc-function-metatable.__index:get_metar_data]] `(`*``*`)` | Return parsed METAR data as a table  |
+
+| [[`new`|ikiwiki/files/metar.lua#luadoc-function-new]] `(`*`args`*`)` | Create a new METAR object  |
+
+
+
+
+## Tables summary
+
+| - | - |
+| [[`CLOUD_COVERAGE`|ikiwiki/files/metar.lua#luadoc-table-CLOUD_COVERAGE]] | Could coverage table. |
+| [[`CLOUD_TYPE`|ikiwiki/files/metar.lua#luadoc-table-CLOUD_TYPE]] | Could type table. |
+| [[`SKY_STATUS`|ikiwiki/files/metar.lua#luadoc-table-SKY_STATUS]] | Could type table. |
+| [[`WEATHER_DESCRIPTOR`|ikiwiki/files/metar.lua#luadoc-table-WEATHER_DESCRIPTOR]] | Weather descriptor table. |
+| [[`WEATHER_INTENSITY`|ikiwiki/files/metar.lua#luadoc-table-WEATHER_INTENSITY]] | Weather intensity table. |
+| [[`WEATHER_PHENOMENA`|ikiwiki/files/metar.lua#luadoc-table-WEATHER_PHENOMENA]] | Weather phenomena table. |
+| [[`WIND_DIRECTION`|ikiwiki/files/metar.lua#luadoc-table-WIND_DIRECTION]] | Wind direction table. |
+
+
+
+
+## Functions
+
+---
+
+<span id="luadoc-function-metatable.__index:get_metar_data" />
+
+### metatable.__index:get_metar_data ()
+
+
+Return parsed METAR data as a table
+
+
+
+
+
+**Usage**
+
+* `var m = metar.new('EFHF')          -- Weather station Helsinki/Malmi`
+* `var md = m:get_metar_data()        -- metardata.temperature contains the temperature etc.`
+* `if md.temperature >= 30 then print("It's hot!") end`
+* `if md.weather.intensity and md.weather.intensity == m.WEATHER_INTENSITY.HEAVY and md.weather.phenomena and md.weather.phenomena == m.WEATHER_PHENOMENA.RAIN then print("It's raining a lot!") end`
+
+
+
+
+**Return values:**
+
+1. Table containing the data parsed from the METAR data. If an error occurs, returns nil as the first return value. The table may contain following entries <ul> <li><code>timestamp</code> <code>os.time</code> table which represents the timestamp when the METAR data was generated. Time is in UTC. Always included.</li> <li><code>wind</code> A table representing the wind phenomena with the following keys. Optional, but usually included.</li> <ul> <li><code>direction</code> Wind direction as a value of the <a href="#WIND_DIRECTION">WIND_DIRECTION</a> table.</li> <li><code>speed</code> Wind speed in knots.</li> <li><code>gust</code> Gust speed in knots, optional.</li> </ul> <li><code>visibility</code> A list of tables that represent the visibility towards different directions. Tables contain the following keys. Optional, but if defined, at least one visibility entry exists in the list. Usually included.</li> <ul> <li><code>direction</code> Direction as a value of the <a href="#WIND_DIRECTION">WIND_DIRECTION</a> table. Optional.</li> <li><code>distance</code> Visibility distance in meters</li> </ul> <li><code>vertical_visibility</code> Vertical visibility in meters. Optional.</li> <li><code>runway_visual_range</code> A table representing runway visual range with the following keys. Optional.</li> <ul> <li><code>runway</code> Runway code</li> <li><code>visibility</code> Visibility in meters</li> </ul> <li><code>clouds</code> A list of tables that represent clouds at different altitudes. Tables contain the following keys. Optional, but if defined, at least one cloud entry exists in the list. Usually included.</li> <ul> <li><code>coverage</code> Cloud coverate as a value of the <a href="#CLOUD_COVERAGE">CLOUD_COVERAGE</a> table.</li> <li><code>altitude</code> Altitude of the clouds in feet.</li> <li><code>type</code> Cloud type as a value of the <a href="#CLOUD_TYPE">CLOUD_TYPE</a> table.</li> </ul> <li><code>weather</code> A table representing weather conditions with the following keys. Optional, but usually included.</li> <ul> <li><code>intensity</code> Weather intensity as a value of the <a href="#WEATHER_INTENSITY">WEATHER_INTENSITY</a> table. Optional.</li></li> <li><code>descriptor</code> Weather descriptor as a value of the <a href="#WEATHER_DESCRIPTOR">WEATHER_DESCRIPTOR</a> table. Optional.</li> <li><code>phenomena</code> Weather phenomena as a value of the <a href="#WEATHER_PHENOMENA">WEATHER_PHENOMENA</a> table. Always included.</li> </ul> <li><code>sky</code> Sky status as a value of the <a href="#SKY_STATUS">SKY_STATUS</a> table. Always included.</li> <li><code>temperature</code> Temperature in Celcius. Always  included.</li> <li><code>dewpoint</code> Dewpoint temperature in Celcius. Always included.</li> <li><code>pressure</code> Pressure in hectopascals. Optional, but usually included.</li> </ul>
+1. Error string in case an error occurred and nil METAR table is returned
+
+
+
+
+
+
+---
+
+<span id="luadoc-function-new" />
+
+### new (args)
+
+
+Create a new METAR object
+
+
+
+**Parameters**
+
+* `args`: String that is either the METAR data string (one line) to parse or the four-letter, upper-case <a href="http://en.wikipedia.org/wiki/International_Civil_Aviation_Organization_airport_code">ICAO code</a> for the weather station. If weather station code is given, the current METAR data for the station is downloaded from <a href="http://weather.noaa.gov">IWS</a>.
+
+
+
+
+
+
+**Return value:**
+
+A table which is the metar object for METAR data given or downloaded from IWS for the given weather station code
+
+
+
+
+
+
+
+
+## Tables
+
+---
+
+<span id="luadoc-table-CLOUD_COVERAGE" />
+
+### CLOUD_COVERAGE
+
+
+Could coverage table. Values from this table are used in the result table with key <code>clouds[n].coverage</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+
+**Fields**
+
+* `CLEAR`: Clear
+* `FEW`: Few clouds
+* `SCATTERED`: Scattered clouds
+* `BROKEN_SKY`: Broken sky
+* `OVERCAST`: Overcast
+
+
+
+
+---
+
+<span id="luadoc-table-CLOUD_TYPE" />
+
+### CLOUD_TYPE
+
+
+Could type table. Values from this table are used in the result table with key <code>clouds[n].type</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+
+**Fields**
+
+* `CUMULONIMBUS`: Cumulonimbus clouds
+* `TOWERING_CUMULUS`: Towering Cumulus clouds
+
+
+
+
+---
+
+<span id="luadoc-table-SKY_STATUS" />
+
+### SKY_STATUS
+
+
+Could type table. Values from this table are used in the result table with key <code>sky</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+
+**Fields**
+
+* `UNKNOWN`: Sky type is unknown
+* `OBSCURE`: Obscured sky
+* `CLOUDS`: Clouds in the sky
+* `CLEAR`: Clear sky
+* `NO_SIGNIFICANT_CLOUDS`: No significant clouds detected
+* `NO_CLOUDS_DETECTED`: No clouds detected
+
+
+
+
+---
+
+<span id="luadoc-table-WEATHER_DESCRIPTOR" />
+
+### WEATHER_DESCRIPTOR
+
+
+Weather descriptor table. Values from this table are used in the result table with key <code>weather.descriptor</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+
+**Fields**
+
+* `SHALLOW`: Shallow phenomena
+* `PARTIAL`: Partial phenomena
+* `PATCHES`: Patches phenomena
+* `DRIFTING`: Drifring phenomena
+* `BLOWING`: Blowing phenomena
+* `SHOWERS`: Showers phenomena
+* `THUNDERSTORM`: Thunderstorm phenomena
+* `FREEZING`: Freezing phenomena
+
+
+
+
+---
+
+<span id="luadoc-table-WEATHER_INTENSITY" />
+
+### WEATHER_INTENSITY
+
+
+Weather intensity table. Values from this table are used in the result table with key <code>weather.intensity</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+
+**Fields**
+
+* `MODERATE`: Moderate phenomena
+* `LIGHT`: Light phenomena
+* `HEAVY`: Heavy phenomena
+* `VICINITY`: In the vicinity of the weather observation point
+
+
+
+
+---
+
+<span id="luadoc-table-WEATHER_PHENOMENA" />
+
+### WEATHER_PHENOMENA
+
+
+Weather phenomena table. Values from this table are used in the result table with key <code>weather.phenomena</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+
+**Fields**
+
+* `DRIZZLE`: Drizzle
+* `RAIN`: Rain
+* `SNOW`: Snow
+* `SNOW_GRAINS`: Snow grains
+* `ICE_CRYSTALS`: Ice crystals
+* `ICE_PELLETS`: Ice pellets
+* `HAIL`: Hail
+* `SMALL_HAIL`: Small hail
+* `UNKNOWN`: Unknown phenomena
+* `MIST`: Mist
+* `FOG`: Fog
+* `SMOKE`: Smoke
+* `VOLCANIC_ASH`: Volcanic ash
+* `WIDESPREAD_DUST`: Widespread dust
+* `SAND`: Sand
+* `HAZE`: Haze
+* `SPRAY`: Spray
+* `DUST_WHIRLS`: Dust whirls
+* `SQUALLS`: Squalls
+* `FUNNEL_CLOUD`: Funnel cloud
+* `SAND_STORM`: Sand storm
+* `DUST_STORM`: Dust storm
+
+
+
+
+---
+
+<span id="luadoc-table-WIND_DIRECTION" />
+
+### WIND_DIRECTION
+
+
+Wind direction table. Values from this table are used in the result table with key <code>wind.direction</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+
+**Fields**
+
+* `VRB`: Index value for variable speed direction
+* `N`: Index value for North
+* `NNE`: Index value for North - North East
+* `NE`: Index value for Nort - East
+* `ENE`: Index value for East - North East
+* `E`: Index value for East
+* `ESE`: Index value for East - South East
+* `SE`: Index value for South East
+* `SSE`: Index value for South - South Est
+* `S`: Index value for South
+* `SSW`: Index value for South - South West
+* `SW`: Index value for South West
+* `WSW`: Index value for West - South West
+* `W`: Index value for West
+* `WNW`: Index value for West - North West
+* `NW`: Index value for North West
+* `NNW`: Index value for North - North West
+
+
+
+
+
+
+</div>
diff --git a/api/ikiwiki/index.mdwn b/api/ikiwiki/index.mdwn
new file mode 100644 (file)
index 0000000..dd70ed9
--- /dev/null
@@ -0,0 +1,48 @@
+[[!meta title="LuaDoc"]]
+
+<div id="luadoc" markdown="1">
+
+[[Jump to content|ikiwiki#luadoc-content"]]
+
+# LuaDoc
+
+
+* **Index**
+
+
+
+# Modules
+
+* [[metar|ikiwiki/modules/metar]]
+
+
+
+
+# Files
+
+* [[metar.lua|ikiwiki/files/metar.lua]]
+
+
+
+
+---
+
+<span id="luadoc-content" />
+
+
+## Modules
+
+| - | - |
+| [[metar|ikiwiki/modules/metar]] | Lua class to parse METAR coded weather reports and fetch current METAR reports from <a href="http://www.noaa.gov">NOAA</a> <a href="http://weather.noaa.gov">Internet Weather Service</a>. |
+
+
+
+
+## Files
+
+| - |
+| [[metar.lua|ikiwiki/files/metar.lua]] |
+
+
+
+</div>
diff --git a/api/ikiwiki/modules/metar.mdwn b/api/ikiwiki/modules/metar.mdwn
new file mode 100644 (file)
index 0000000..460244a
--- /dev/null
@@ -0,0 +1,328 @@
+[[!meta title="LuaDoc - metar"]]
+
+<div id="luadoc" markdown="1">
+
+[[Jump to content|ikiwiki/modules/metar#luadoc-content"]]
+
+# LuaDoc
+
+
+* [[Index|ikiwiki]]
+
+
+
+# Modules
+
+* **metar**
+
+
+
+
+# Files
+
+* [[metar.lua|ikiwiki/files/metar.lua]]
+
+
+
+
+---
+
+<span id="luadoc-content" />
+
+# Module `metar`
+
+
+Lua class to parse METAR coded weather reports and fetch current METAR reports from <a href="http://www.noaa.gov">NOAA</a> <a href="http://weather.noaa.gov">Internet Weather Service</a>. The parser is pretty simple and by no means claims to support every feature one might find in METAR coded weather reports. For example, weather forecasts and automatic weather reports are not detected. Unsupported features in the weather reports are silently dropped.
+
+
+
+**Author:**
+
+* Tuomas Jormola
+
+
+
+
+Copyright: © 2010 Tuomas Jormola <a href="mailto:tj@solitudo.net">tj@solitudo.net</a> <a href="http://solitudo.net">http://solitudo.net</a> Licensed under the terms of the <a href="http://www.gnu.org/licenses/gpl-2.0.html">GNU General Public License Version 2.0</a>.  
+
+
+
+
+
+## Functions summary
+
+| - | - |
+| [[`metatable.__index:get_metar_data`|ikiwiki/modules/metar#luadoc-function-metatable.__index:get_metar_data]] `(`*``*`)` | Return parsed METAR data as a table  |
+| [[`new`|ikiwiki/modules/metar#luadoc-function-new]] `(`*`args`*`)` | Create a new METAR object  |
+
+
+
+
+## Tables summary
+
+| - | - |
+| [[`CLOUD_COVERAGE`|ikiwiki/modules/metar#luadoc-table-CLOUD_COVERAGE]] | Could coverage table. |
+| [[`CLOUD_TYPE`|ikiwiki/modules/metar#luadoc-table-CLOUD_TYPE]] | Could type table. |
+| [[`SKY_STATUS`|ikiwiki/modules/metar#luadoc-table-SKY_STATUS]] | Could type table. |
+| [[`WEATHER_DESCRIPTOR`|ikiwiki/modules/metar#luadoc-table-WEATHER_DESCRIPTOR]] | Weather descriptor table. |
+| [[`WEATHER_INTENSITY`|ikiwiki/modules/metar#luadoc-table-WEATHER_INTENSITY]] | Weather intensity table. |
+| [[`WEATHER_PHENOMENA`|ikiwiki/modules/metar#luadoc-table-WEATHER_PHENOMENA]] | Weather phenomena table. |
+| [[`WIND_DIRECTION`|ikiwiki/modules/metar#luadoc-table-WIND_DIRECTION]] | Wind direction table. |
+
+
+
+
+## Functions
+
+---
+
+<span id="luadoc-function-metatable.__index:get_metar_data" />
+
+### metatable.__index:get_metar_data ()
+
+
+Return parsed METAR data as a table
+
+
+
+
+
+**Usage**
+
+* `var m = metar.new('EFHF')          -- Weather station Helsinki/Malmi`
+* `var md = m:get_metar_data()        -- metardata.temperature contains the temperature etc.`
+* `if md.temperature >= 30 then print("It's hot!") end`
+* `if md.weather.intensity and md.weather.intensity == m.WEATHER_INTENSITY.HEAVY and md.weather.phenomena and md.weather.phenomena == m.WEATHER_PHENOMENA.RAIN then print("It's raining a lot!") end`
+
+
+
+
+**Return values:**
+
+1. Table containing the data parsed from the METAR data. If an error occurs, returns nil as the first return value. The table may contain following entries <ul> <li><code>timestamp</code> <code>os.time</code> table which represents the timestamp when the METAR data was generated. Time is in UTC. Always included.</li> <li><code>wind</code> A table representing the wind phenomena with the following keys. Optional, but usually included.</li> <ul> <li><code>direction</code> Wind direction as a value of the <a href="#WIND_DIRECTION">WIND_DIRECTION</a> table.</li> <li><code>speed</code> Wind speed in knots.</li> <li><code>gust</code> Gust speed in knots, optional.</li> </ul> <li><code>visibility</code> A list of tables that represent the visibility towards different directions. Tables contain the following keys. Optional, but if defined, at least one visibility entry exists in the list. Usually included.</li> <ul> <li><code>direction</code> Direction as a value of the <a href="#WIND_DIRECTION">WIND_DIRECTION</a> table. Optional.</li> <li><code>distance</code> Visibility distance in meters</li> </ul> <li><code>vertical_visibility</code> Vertical visibility in meters. Optional.</li> <li><code>runway_visual_range</code> A table representing runway visual range with the following keys. Optional.</li> <ul> <li><code>runway</code> Runway code</li> <li><code>visibility</code> Visibility in meters</li> </ul> <li><code>clouds</code> A list of tables that represent clouds at different altitudes. Tables contain the following keys. Optional, but if defined, at least one cloud entry exists in the list. Usually included.</li> <ul> <li><code>coverage</code> Cloud coverate as a value of the <a href="#CLOUD_COVERAGE">CLOUD_COVERAGE</a> table.</li> <li><code>altitude</code> Altitude of the clouds in feet.</li> <li><code>type</code> Cloud type as a value of the <a href="#CLOUD_TYPE">CLOUD_TYPE</a> table.</li> </ul> <li><code>weather</code> A table representing weather conditions with the following keys. Optional, but usually included.</li> <ul> <li><code>intensity</code> Weather intensity as a value of the <a href="#WEATHER_INTENSITY">WEATHER_INTENSITY</a> table. Optional.</li></li> <li><code>descriptor</code> Weather descriptor as a value of the <a href="#WEATHER_DESCRIPTOR">WEATHER_DESCRIPTOR</a> table. Optional.</li> <li><code>phenomena</code> Weather phenomena as a value of the <a href="#WEATHER_PHENOMENA">WEATHER_PHENOMENA</a> table. Always included.</li> </ul> <li><code>sky</code> Sky status as a value of the <a href="#SKY_STATUS">SKY_STATUS</a> table. Always included.</li> <li><code>temperature</code> Temperature in Celcius. Always  included.</li> <li><code>dewpoint</code> Dewpoint temperature in Celcius. Always included.</li> <li><code>pressure</code> Pressure in hectopascals. Optional, but usually included.</li> </ul>
+1. Error string in case an error occurred and nil METAR table is returned
+
+
+
+
+
+
+---
+
+<span id="luadoc-function-new" />
+
+### new (args)
+
+
+Create a new METAR object
+
+
+
+**Parameters**
+
+* `args`: String that is either the METAR data string (one line) to parse or the four-letter, upper-case <a href="http://en.wikipedia.org/wiki/International_Civil_Aviation_Organization_airport_code">ICAO code</a> for the weather station. If weather station code is given, the current METAR data for the station is downloaded from <a href="http://weather.noaa.gov">IWS</a>.
+
+
+
+
+
+
+**Return value:**
+
+A table which is the metar object for METAR data given or downloaded from IWS for the given weather station code
+
+
+
+
+
+
+
+
+## Tables
+
+---
+
+<span id="luadoc-table-CLOUD_COVERAGE" />
+
+### CLOUD_COVERAGE
+
+
+Could coverage table. Values from this table are used in the result table with key <code>clouds[n].coverage</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+
+**Fields**
+
+* `CLEAR`: Clear
+* `FEW`: Few clouds
+* `SCATTERED`: Scattered clouds
+* `BROKEN_SKY`: Broken sky
+* `OVERCAST`: Overcast
+
+
+
+
+---
+
+<span id="luadoc-table-CLOUD_TYPE" />
+
+### CLOUD_TYPE
+
+
+Could type table. Values from this table are used in the result table with key <code>clouds[n].type</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+
+**Fields**
+
+* `CUMULONIMBUS`: Cumulonimbus clouds
+* `TOWERING_CUMULUS`: Towering Cumulus clouds
+
+
+
+
+---
+
+<span id="luadoc-table-SKY_STATUS" />
+
+### SKY_STATUS
+
+
+Could type table. Values from this table are used in the result table with key <code>sky</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+
+**Fields**
+
+* `UNKNOWN`: Sky type is unknown
+* `OBSCURE`: Obscured sky
+* `CLOUDS`: Clouds in the sky
+* `CLEAR`: Clear sky
+* `NO_SIGNIFICANT_CLOUDS`: No significant clouds detected
+* `NO_CLOUDS_DETECTED`: No clouds detected
+
+
+
+
+---
+
+<span id="luadoc-table-WEATHER_DESCRIPTOR" />
+
+### WEATHER_DESCRIPTOR
+
+
+Weather descriptor table. Values from this table are used in the result table with key <code>weather.descriptor</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+
+**Fields**
+
+* `SHALLOW`: Shallow phenomena
+* `PARTIAL`: Partial phenomena
+* `PATCHES`: Patches phenomena
+* `DRIFTING`: Drifring phenomena
+* `BLOWING`: Blowing phenomena
+* `SHOWERS`: Showers phenomena
+* `THUNDERSTORM`: Thunderstorm phenomena
+* `FREEZING`: Freezing phenomena
+
+
+
+
+---
+
+<span id="luadoc-table-WEATHER_INTENSITY" />
+
+### WEATHER_INTENSITY
+
+
+Weather intensity table. Values from this table are used in the result table with key <code>weather.intensity</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+
+**Fields**
+
+* `MODERATE`: Moderate phenomena
+* `LIGHT`: Light phenomena
+* `HEAVY`: Heavy phenomena
+* `VICINITY`: In the vicinity of the weather observation point
+
+
+
+
+---
+
+<span id="luadoc-table-WEATHER_PHENOMENA" />
+
+### WEATHER_PHENOMENA
+
+
+Weather phenomena table. Values from this table are used in the result table with key <code>weather.phenomena</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+
+**Fields**
+
+* `DRIZZLE`: Drizzle
+* `RAIN`: Rain
+* `SNOW`: Snow
+* `SNOW_GRAINS`: Snow grains
+* `ICE_CRYSTALS`: Ice crystals
+* `ICE_PELLETS`: Ice pellets
+* `HAIL`: Hail
+* `SMALL_HAIL`: Small hail
+* `UNKNOWN`: Unknown phenomena
+* `MIST`: Mist
+* `FOG`: Fog
+* `SMOKE`: Smoke
+* `VOLCANIC_ASH`: Volcanic ash
+* `WIDESPREAD_DUST`: Widespread dust
+* `SAND`: Sand
+* `HAZE`: Haze
+* `SPRAY`: Spray
+* `DUST_WHIRLS`: Dust whirls
+* `SQUALLS`: Squalls
+* `FUNNEL_CLOUD`: Funnel cloud
+* `SAND_STORM`: Sand storm
+* `DUST_STORM`: Dust storm
+
+
+
+
+---
+
+<span id="luadoc-table-WIND_DIRECTION" />
+
+### WIND_DIRECTION
+
+
+Wind direction table. Values from this table are used in the result table with key <code>wind.direction</code> returned by <a href="#metatable.__index:get_metar_data"><code>get_metar_data()</code></a>.
+
+
+
+**Fields**
+
+* `VRB`: Index value for variable speed direction
+* `N`: Index value for North
+* `NNE`: Index value for North - North East
+* `NE`: Index value for Nort - East
+* `ENE`: Index value for East - North East
+* `E`: Index value for East
+* `ESE`: Index value for East - South East
+* `SE`: Index value for South East
+* `SSE`: Index value for South - South Est
+* `S`: Index value for South
+* `SSW`: Index value for South - South West
+* `SW`: Index value for South West
+* `WSW`: Index value for West - South West
+* `W`: Index value for West
+* `WNW`: Index value for West - North West
+* `NW`: Index value for North West
+* `NNW`: Index value for North - North West
+
+
+
+
+
+
+</div>