pax_global_header00006660000000000000000000000064122734073550014522gustar00rootroot0000000000000052 comment=3af9701ed29aa9f9c7151771f225896ae31590ef lua-orbit-2.2.1+dfsg/000077500000000000000000000000001227340735500143415ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/Makefile000066400000000000000000000012571227340735500160060ustar00rootroot00000000000000# $Id: Makefile,v 1.4 2008/04/04 19:52:07 mascarenhas Exp $ include config all: config: touch config install: mkdir -p $(LUA_DIR) cp src/orbit.lua $(LUA_DIR) mkdir -p $(LUA_DIR)/orbit cp src/orbit/model.lua $(LUA_DIR)/orbit cp src/orbit/cache.lua $(LUA_DIR)/orbit cp src/orbit/pages.lua $(LUA_DIR)/orbit cp src/orbit/ophandler.lua $(LUA_DIR)/orbit mkdir -p $(BIN_DIR) cp src/launchers/orbit $(BIN_DIR) if [ -f ./wsapi/Makefile ]; then \ cd wsapi && make install; \ fi install-rocks: install mkdir -p $(PREFIX)/samples cp -r samples/* $(PREFIX)/samples mkdir -p $(PREFIX)/doc cp -r doc/* $(PREFIX)/doc mkdir -p $(PREFIX)/test cp -r test/* $(PREFIX)/test clean: lua-orbit-2.2.1+dfsg/Makefile.win000066400000000000000000000013621227340735500165770ustar00rootroot00000000000000# $Id: Makefile.win,v 1.7 2008/07/31 18:55:46 mascarenhas Exp $ LUA_DIR= c:\lua5.1\lua BIN_DIR= c:\lua5.1\bin all: install: IF NOT EXIST "$(LUA_DIR)\orbit" mkdir "$(LUA_DIR)\orbit" copy src\orbit.lua "$(LUA_DIR)" copy src\model.lua "$(LUA_DIR)\orbit" copy src\cache.lua "$(LUA_DIR)\orbit" copy src\pages.lua "$(LUA_DIR)\orbit" copy src\ophandler.lua "$(LUA_DIR)\orbit" IF NOT EXIST "$(BIN_DIR)" mkdir "$(BIN_DIR)" copy src\orbit "$(BIN_DIR)" install-rocks: install IF NOT EXIST "$(PREFIX)\samples" mkdir "$(PREFIX)\samples" IF NOT EXIST "$(PREFIX)\doc" mkdir "$(PREFIX)\doc" IF NOT EXIST "$(PREFIX)\test" mkdir "$(PREFIX)\test" xcopy /E samples "$(PREFIX)\samples\" xcopy /E doc "$(PREFIX)\doc\" xcopy /E test "$(PREFIX)\test\" clean: lua-orbit-2.2.1+dfsg/README000066400000000000000000000072271227340735500152310ustar00rootroot00000000000000Orbit 2.2.1 http://keplerproject.github.com/orbit Orbit is an MVC web framework for Lua. The design is inspired by lightweight Ruby frameworks such as Camping. It completely abandons the CGILua model of "scripts" in favor of applications, where each Orbit application can fit in a single file, but you can split it into multiple files if you want. All Orbit applications follow the WSAPI protocol, so they currently work with Xavante, CGI and Fastcgi. It includes a launcher that makes it easy to launch a Xavante instance for development. History * Version 2.2.1 (12/Jan/2014) bugfix release for Lua 5.1 NOT 5.2 compliant documentation corrections support for Wsapi 1.6 and other dependency modules that no longer use "module" additional orbit model datatypes: real, float, timestamp, numeric MIME type application/json included * Version 2.2.0 (31/Mar/2010) Reparse response to resume the dispatcher better parser for orbit.model conditions, fixes parsing bugs orbit launcher has parameters to control logging and port op.cgi/op.fcgi launchers have the same parameters as wsapi.cgi/wsapi.fcgi Optional Sinatra-like (http://www.sinatrarb.com/) route parser, using LPEG Pluggable route parsers (route patterns can be strings or objects that answer to :match) * Version 2.1.0 (29/Oct/2009) better decoupling of orbit and orbit.model support for anything with a match method as patterns new options for orbit.model finders: distinct, fields count option for orbit.model now limits number of rows in the SQL logging of queries in orbit.model overhaul of the "orbit" script: better options, --help, sets application path content_type method in the web object to set content type support for PUT and DELETE (methods `dispatch_put` and `dispatch_delete`) orbit.model.recycle(*conn_builder*, *timeout*) function, to make a connection that automatically reopens after a certain time more samples in the samples folder added a "higher-order" $if to Orbit Pages * Version 2.0.2 (10/Mar/2009) url-decodes path captures (suggested by Ignacio Burgueno on a Jul 24 email to the Kepler list) added tutorial and new examples fixed escape.string web:delete_cookie receives a path parameter in order to correctly remove the cookie. Bug report and patch by Ignacio Burgueño stripping UTF-8 BOM from templates read from disk removing SoLazer files in order to make the Orbit package smaller added alternate name for integer (int) better error reporting for missing escape and convert functions removed toboolean fixed bugs 13451 and 25418: setting status 500 on application errors not throwing an error if file not exists when invalidating cache * Version 2.0.1 (10/Jun/2008): bug-fix release, fixed bug in Orbit pages' redirect function (thanks for Ignacio Burgueño for finding the bug) * Version 2.0 (06/Jun/2008): Complete rewrite of Orbit * Version 1.0: Initial release, obsolete Download and Installation Download and Installation The easiest way to download and install Orbit is via LuaRocks. You can install Orbit with a simple command: luarocks install orbit Go to the path where LuaRocks put Orbit to see the sample apps and this documentation. LuaRocks will automatically fetch and install any dependencies you don't already have. To run the supplied example, go to the samples/hello directory of this distribution and do: orbit hello.lua After the server is running go to your web browser. Some sample urls for hello.lua: http://127.0.0.1:8080/ will show "Hello World!" http://127.0.0.1:8080/say/foo will show "Hello foo!" http://127.0.0.1:8080/anythingelse will show "Not found!" For more information please check http://keplerproject.github.com/orbit lua-orbit-2.2.1+dfsg/configure000077500000000000000000000015061227340735500162520ustar00rootroot00000000000000#!/bin/sh if [ $1 == "--help" ]; then echo "Usage: configure lua51" echo "where lua51 is the name of your Lua executable" exit 0 fi echo "Trying to find where you installed Lua..." if [ $1 != "" ]; then lua=$1 else lua="lua51" fi lua_bin=`which $lua` lua_bin_dir=`dirname $lua_bin` lua_root=`dirname $lua_bin_dir` if [ $lua_root != "" ]; then echo "Lua is in $lua_root" echo "Writing config" lua_share=$lua_root/share/lua/5.1 lua_lib=$lua_root/lib/lua/5.1 bin_dir=$lua_root/bin echo "LUA_DIR= $lua_share" > config echo "BIN_DIR= $bin_dir" >> config echo "LUA_LIBDIR= $lua_lib" >> config echo "Now run 'make && sudo make install'" else echo "Lua not found, please install Lua 5.1 (and put in your PATH)" fi if [ -f ./wsapi/configure ]; then echo "Configuring wsapi..." cd wsapi ./configure $1 fi lua-orbit-2.2.1+dfsg/doc/000077500000000000000000000000001227340735500151065ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/doc/us/000077500000000000000000000000001227340735500155355ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/doc/us/example.html000066400000000000000000000714371227340735500200720ustar00rootroot00000000000000 Orbit
Orbit
MVC for Lua Web Development

Orbit Tutorial

This tutorial shows how to create a simple blog application in Orbit, backed by a database. It's very simple because it does not include any "admin" pages; you have to add posts directly to the database (though you can do it through a Lua console, and this tutorial will show how), but there is an interface for commenting on posts.

The tutorial assumes you have already installed Orbit (preferrably as part of Kepler, or via LuaRocks, and already have a web server that supports WSAPI set up (the Xavante web server that comes with Kepler is a good choice).

Complete source code for this blog is in the samples folder of Orbit's distribution. If you have installed Orbit via Kepler or LuaRocks look inside the rocks folder of your installation.

Initialization

You should create a blog.lua file, which will be the main source file for our application. The first thing you should put in this file is the code to load Orbit and other libraries you are going to use in your app:

local orbit = require "orbit"
local orcache = require "orbit.cache"
local markdown = require "markdown"
local wsutil = require "wsapi.util"

In this example we are going to use Orbit's page cache, and the Markdown parser for marking up posts.

We will now create the blog application and set it as the global environment for the rest of the module:

local blog = setmetatable(orbit.new(), { __index = _G })
if _VERSION == "Lua 5.2" then
  _ENV = blog
else
  setfenv(1, blog)
end

orbit.new injects quite a lot of stuff in the blog module's namespace. The most important of these are the dispatch_get, dispatch_post, and model methods that let you define the main functionality of the application. It also defines a mapper variable that Orbit uses to create the models (Orbit initializes this variable to its default OR mapper). Finally, it defines default controllers for 404 and 500 HTTP error codes as the not_found and server_error variables, respectively. Override those if you want custom pages for your application.

Let's load a configuration script for the blog (a common pattern in applications). You can get this script from here.

wsutil.loadfile("blog_config.lua", blog)()

The next few lines load one of LuaSQL's database driver (defined in the configuration), and sets up Orbit's OR mapper.

local luasql = require("luasql." .. database.driver)
local env = luasql[database.driver]()
mapper.conn = env:connect(unpack(database.conn_data))
mapper.driver = database.driver

Orbit's mapper needs a database connection to use, and which driver you are using (currently only "sqlite3" and "mysql" are supported).

You need to initialize the mapper before creating your application's models because Orbit's mapper hits the database on model creation to get the schema. Speaking of schema, now is a good time to create your blogs' database. I will assume you are using SQLite3. Create a blog.db database with the following SQL script:

CREATE TABLE blog_post
       ("id" INTEGER PRIMARY KEY NOT NULL,
       "title" VARCHAR(255) DEFAULT NULL,
       "body" TEXT DEFAULT NULL,
       "n_comments" INTEGER DEFAULT NULL,
       "published_at" DATETIME DEFAULT NULL);

CREATE TABLE blog_comment
       ("id" INTEGER PRIMARY KEY NOT NULL,
       "post_id" INTEGER DEFAULT NULL,
       "author" VARCHAR(255) DEFAULT NULL,
       "email" VARCHAR(255) DEFAULT NULL,
       "url" VARCHAR(255) DEFAULT NULL,
       "body" TEXT DEFAULT NULL,
       "created_at" DATETIME DEFAULT NULL);

CREATE TABLE blog_page
       ("id" INTEGER PRIMARY KEY NOT NULL,
       "title" VARCHAR(30) DEFAULT NULL,
       "body" TEXT DEFAULT NULL);

Orbit's mapper uses the id field to identify objects in the database, so you need it for every kind of object you are mapping.

Finally, let's initialize Orbit's page cache before creating our models:

local cache = orbit.cache.new(blog, cache_path)

The page cache greatly speeds access to any page that you cache, but you need to be careful and invalidate the cache for a page when any content on that page changes. We will see how to cache and invalidate pages in the controller section of this tutorial.

Creating Models

Our blog application has three kinds of objects: posts, comments, and "static" pages (things like an "About" page for the blog, for example). It's no coincidence that we also have three tables in the database, each table maps to a kind of object our application handles, and for each kind we will create a model. We first create a model object for posts:

posts = blog:model "post"

The parameter for the model method is the name of a table in the database. The posts object that this method creates represents the collection of posts, and at the same time is a prototype for all posts (we will see the implications of that shortly). Orbit's mapper creates a rather functional object by itself: you can do posts:find(3), for example, and get the post with id 3, or posts:find_all("n_comments < ?", { 3, order = "published_at desc" }) and get a list of all posts with less than three comments, ordered by most recent to least.

You can use the predefined find methods for all queries to the database, but it helps to abstract common queries in your own methods. You can do that by adding methods to the posts object:

function posts:find_recent()
   return self:find_all("published_at is not null",
            { order = "published_at desc",
               count = recent_count })
end

The lines above add a find_recent method to the posts object that returns a list of the most recent published posts (the number is in the configuration script), ordered from most recent to least. The application is going to use this method to generate the list of posts in the home page, as well as the "Recent Posts" section of the blog's sidebar.

Another feature of our blog is going to be archive pages that show all posts of a certain month and year. We will define a method for that too:

function posts:find_by_month_and_year(month, year)
   local s = os.time({ year = year, month = month, day = 1 })
   local e = os.time({ year = year + math.floor(month / 12),
            month = (month % 12) + 1,
            day = 1 })
   return self:find_all("published_at >= ? and published_at < ?",
            { s, e, order = "published_at desc" })
end

This is a more complicated method, as we have to convert from a simple month and year to start and end dates in the standard Lua format. Finally, we will also define a method that returns all months (and years) that have posts, to later generate the links for the "Archive" section in the sidebar:

function posts:find_months()
   local months = {}
   local previous_month = {}
   local posts = self:find_all("published_at is not null", 
                               { order = "published_at desc" })
   for _, post in ipairs(posts) do
      local date = os.date("*t", post.published_at)
      if previous_month.month ~= date.month or
     previous_month.year ~= date.year then
     previous_month = { month = date.month, year = date.year,
        date_str = os.date("%Y/%m", post.published_at) }
     months[#months + 1] = previous_month
      end
   end
   return months
end

This method gets all posts in the database, ordered by date, and iterates over them storing the each unique pair of month and year in a list.

We can also define methods for individual post objects by defining methods in the posts object, the only difference is how they are used (you use find_recent by doing posts:find_recent(), but you will use find_comments by doing p:find_comments(), where p is a particular post object. We will define a method to retrieve all comments of a post:

function posts:find_comments()
   return comments:find_all_by_post_id{ self.id }
end

This method uses a predefined method of the comments object (which we will create shortly) that gets all comments with field post_id equal to the id of the current post (self.id). This method establishes a relation between posts and comments; a future version of Orbit's mapper will let you define these declaratively.

Creating the comments object is simple:

comments = blog:model "comment"

Let's just add a convenience method for comments that build the comment's link from the its data:

function comments:make_link()
   local author = self.author or strings.anonymous_author
   if self.url and self.url ~= "" then
      return "" .. author .. ""
   elseif self.email and self.email ~= "" then
      return "" .. author .. ""
   else
      return author
   end
end

The pages object is even simpler, the default functionality provided by Orbit's mapper is enough, so we just create it with model:

pages = blog:model "pages"

This concludes the "model" part of our application. We can now move on to defining the applications' page flow, by defining controllers and mapping them to URLs.

Defining Controllers

Controllers are the interface between the web and your application. With Orbit you can map the path part of your application's URLs (in http://myserver.com/myapp.ws/foo/bar the path is /foo/bar, for example) to controllers. In Lua terms, an Orbit controller is a function that receives a request/response object (usually called web) plus parameters extracted from the path, and returns text that is sent to the client (usually HTML, but can be XML, or even an image).

You map paths to controllers with the dispatch_get and dispatch_post methods, for GET and POST requests, respectively. The first parameter to these methods is the controller, a Lua function, and all the other parameters are mapping patterns, written using Lua's string matching syntax, so one controller can answer to multiple mappings.

Below is the controller for the main page of the blog:

function index(web)
   local ps = posts:find_recent()
   local ms = posts:find_months()
   local pgs = pgs or pages:find_all()
   return render_index(web, { posts = ps, months = ms,
              recent = ps, pages = pgs })
end

blog:dispatch_get(cache(index), "/", "/index") 

The last line sets up the mapping between the index function and the root of the application. The call to cache sets up page caching for this controller, using the cache we created earlier (this is another common Lua idiom, functions as decorators).

The index controller shows all recent posts, and is pretty straightforward. It just fetches the required model data from the database, then calls an auxiliary function (called a view in MVC terminology) to render the actual HTML code.

Another important controller is the one that shows single posts:

function view_post(web, post_id, comment_missing)
   local post = posts:find(tonumber(post_id))
   if post then
      local recent = posts:find_recent()
      local pgs = pages:find_all()
      post.comments = post:find_comments()
      local months = posts:find_months()
      return render_post(web, { post = post, months = months,
                recent = recent, pages = pgs,
                comment_missing = comment_missing })
   else
      return not_found(web)
   end
end

blog:dispatch_get(cache(view_post), "/post/(%d+)")

Here we map all paths like /post/53 to the view_post controller. The pattern captures the number, and this is passed along to the controller by Orbit. For /post/53, the controller receives the string "53" as post_id and uses this to fetch the corresponding post. Again, HTML rendering is factored out to another function, and this controller is cached.

If no post with that id is found then the default controller for missing pages gets called, blog.not_found (orbit.app put it in the blog namespace). Orbit also calls this controller is it does not find a valid match for the path. Another default controller is server_error, called when any unprotected error happens in controller/view code.

Archives and pages are similar in structure:

function view_archive(web, year, month)
   local ps = posts:find_by_month_and_year(tonumber(month),
                       tonumber(year))
   local months = posts:find_months()
   local recent = posts:find_recent()
   local pgs = pages:find_all()
   return render_index(web, { posts = ps, months = months,
              recent = recent, pages = pgs })
end

blog:dispatch_get(cache(view_archive), "/archive/(%d%d%d%d)/(%d%d)")

function view_page(web, page_id)
   local page = pages:find(tonumber(page_id))
   if page then
      local recent = posts:find_recent()
      local months = posts:find_months()
      local pgs = pages:find_all()
      return render_page(web, { page = page, months = months,
             recent = recent, pages = pgs })
   else
      not_found(web)
   end
end

blog:dispatch_get(cache(view_page), "/page/(%d+)")

The archives use the same layout as the index, so they reuse its HTML generator. Archives also extract two parameters from the path, the month and the year, so paths are like /archive/2008/05.

Finally, you can also set up Orbit to serve static files with the dispatch_static convenience method:

blog:dispatch_static("/head%.jpg", "/style%.css")

These are also patterns, so the dots are escaped. You can set up a whole folder in your application as static with blog:dispatch_static("/templates/.+"). Orbit always looks for the files in your application's folder. Of course you are free to let your application only handle dynamic content and let your web server serve static content; dispatch_static is just a convenience to have "zero-configuration" applications.

There is one controller left, for adding comments. This one will answer to POST instead of GET:

function add_comment(web, post_id)
   local input = web.input
   if string.find(input.comment, "^%s*$") then
      return view_post(web, post_id, true)
   else
      local comment = comments:new()
      comment.post_id = tonumber(post_id)
      comment.body = markdown(input.comment)
      if not string.find(input.author, "^%s*$") then
     comment.author = input.author
      end
      if not string.find(input.email, "^%s*$") then
     comment.email = input.email
      end
      if not string.find(input.url, "^%s*$") then
     comment.url = input.url
      end
      comment:save()
      local post = posts:find(tonumber(post_id))
      post.n_comments = (post.n_comments or 0) + 1
      post:save()
      cache:invalidate("/")
      cache:invalidate("/post/" .. post_id)
      cache:invalidate("/archive/" .. os.date("%Y/%m", post.published_at))
      return web:redirect(web:link("/post/" .. post_id))
   end
end

blog:dispatch_post(add_comment, "/post/(%d+)/addcomment")

The add_comment controller first validates the input, delegating to view_post if the comment field is empty (which will show an error message in the page). You access POST parameters via the web.input table, which is conveniently aliased to an input local variable.

The controller creates a new comment object and fills it with data, then saves it to the database. It also updates the post object to increase the number of comments the post has by one, and also saves it. It then proceeds to invalidate (in the cache) all pages that may show this information: the index, the post's page, and the archives for this particular post. Finally, it redirects to the post's page, which will show the new comment. This is a common idiom in web programming called POST-REDIRECT-GET, where every POST is followed by a redirect to a GET. This avoids double posting in case the user hits reload.

The only thing left now is the HTML generation itself. This is the topic of the next section.

Views: Generating HTML

Views are the last component of the MVC triad. For Orbit views are just simple functions that generate content (usually HTML), and are strictly optional, meaning you can return content directly from the controller. But it's still good programming practice to separate controllers and views.

How you generate content is up to you: concatenate Lua strings, use table.concat, use a third-party template library... Orbit provides programmatic HTML/XML generation through orbit.htmlify, but you are free to use any method you want. In this tutorial we will stick with programmatic generation, though, as the other methods (straight strings, Cosmo, etc.) are thoroughly documented elsewhere.

When you htmlify a function, Orbit changes the function's environment to let you generate HTML by calling the tags as functions. It's better to show how it works than to explain, so here is the basic view of the blog application, layout:

function layout(web, args, inner_html)
   return html{
      head{
     title(blog_title),
     meta{ ["http-equiv"] = "Content-Type",
        content = "text/html; charset=utf-8" },
     link{ rel = 'stylesheet', type = 'text/css', 
        href = web:static_link('/style.css'), media = 'screen' }
      },
      body{
     div{ id = "container",
        div{ id = "header", title = "sitename" },
        div{ id = "mainnav",
           _menu(web, args)
        }, 
            div{ id = "menu",
           _sidebar(web, args)
        },  
        div{ id = "contents", inner_html },
        div{ id = "footer", copyright_notice }
     }
      }
   } 
end

This view is a decorator for other views, and generates the boilerplate for each page in the blog (header, footer, sidebar). You can see the HTML-generating functions througout the code, such as title, html, head, div. Each takes either a string or a table, and generates the corresponding HTML. If you pass a table, the array part is concatenated and used as the content, while the hash part os used as HTML attributes for that tag. A tag with no content generates a self-closing tag (meta and link in the code above).

Of note in the code above are the calls to web:static_link and to the _menu and _sidebar functions. The static_link method generates a link to a static resource of the application, stripping out the SCRIPT_NAME from the URL (for example, if the URL is http://myserver.com/myblog/blog.ws/index it will return /myblog/style.css as the link).

The _menu and _sidebar functions are just helper views to generate the blog's menubar and sidebar:

function _menu(web, args)
   local res = { li(a{ href= web:link("/"), strings.home_page_name }) }
   for _, page in pairs(args.pages) do
      res[#res + 1] = li(a{ href = web:link("/page/" .. page.id), page.title })
   end
   return ul(res)
end

function _sidebar(web, args)
   return {
      h3(strings.about_title),
      ul(li(about_blurb)),
      h3(strings.last_posts),
      _recent(web, args),
      h3(strings.blogroll_title),
      _blogroll(web, blogroll),
      h3(strings.archive_title),
      _archives(web, args)
   }
end

Here you see a mixture of standard Lua idioms (filling a table and passing it to a concatenation function) and Orbit's programmatic HTML. They also use the web:link method, which generates intra-application links. The sidebar function uses a few more convenience functions, for better factoring:

function _blogroll(web, blogroll)
   local res = {}
   for _, blog_link in ipairs(blogroll) do
      res[#res + 1] = li(a{ href=blog_link[1], blog_link[2] })
   end
   return ul(res)
end

function _recent(web, args)
   local res = {}
   for _, post in ipairs(args.recent) do
      res[#res + 1] = li(a{ href=web:link("/post/" .. post.id), post.title })
   end
   return ul(res)
end

function _archives(web, args)
   local res = {}
   for _, month in ipairs(args.months) do
      res[#res + 1] = li(a{ href=web:link("/archive/" .. month.date_str), 
                blog.month(month) })
   end
   return ul(res)
end

Notice how these functions do not call anything in the model, just using whichever data was passed by them (all the way from the controller).

We can now get to the main view functions. Let's start with the easiest, and smallest, one, to render pages:

function render_page(web, args)
   return layout(web, args, div.blogentry(markdown(args.page.body)))
end

This is a straightforward call to layout, passing the body of the page inside a div. The only thing of note is the div.blogentry syntax, which generates a div with a class attribute equal to "blogentry", instead of a straight div.

Moving on, we will now write the view for index pages (and archive pages):

function render_index(web, args)
   if #args.posts == 0 then
      return layout(web, args, p(strings.no_posts))
   else
      local res = {}
      local cur_time
      for _, post in pairs(args.posts) do
     local str_time = date(post.published_at)
     if cur_time ~= str_time then
        cur_time = str_time
        res[#res + 1] = h2(str_time)
     end
     res[#res + 1] = h3(post.title)
     res[#res + 1] = _post(web, post)
      end
      return layout(web, args, div.blogentry(res))
   end
end

Again we mix Lua with programmatic generation, and factor part of the output (the HTML for the body of the posts themselves) to another function (we will be able to reuse this function for the single-post view). The only unusual piece of logic is to implement fancier dates, the code only prints a date when it changes, so several posts made in the same day appear under the same date.

The _post helper is pretty straightforward:

function _post(web, post)
   return {
      markdown(post.body),
      p.posted{ 
     strings.published_at .. " " .. 
        os.date("%H:%M", post.published_at), " | ",
     a{ href = web:link("/post/" .. post.id .. "#comments"), strings.comments ..
        " (" .. (post.n_comments or "0") .. ")" }
      }
   }
end

Now we can finally move to the piece-de-resistance, the view that renders single posts, along with their comments, and the "post a comment" form:

function render_post(web, args)
   local res = { 
      h2(span{ style="position: relative; float:left", args.post.title }
     .. " "),
      h3(date(args.post.published_at)),
      _post(web, args.post)
   }
   res[#res + 1] = a{ name = "comments" }
   if #args.post.comments > 0 then
      res[#res + 1] = h2(strings.comments)
      for _, comment in pairs(args.post.comments) do
     res[#res + 1 ] = _comment(web, comment)
      end
   end
   res[#res + 1] = h2(strings.new_comment)
   local err_msg = ""
   if args.comment_missing then
      err_msg = span{ style="color: red", strings.no_comment }
   end
   res[#res + 1] = form{
      method = "post",
      action = web:link("/post/" .. args.post.id .. "/addcomment"),
      p{ strings.form_name, br(), input{ type="text", name="author",
     value = web.input.author },
         br(), br(),
         strings.form_email, br(), input{ type="text", name="email",
     value = web.input.email },
         br(), br(),
         strings.form_url, br(), input{ type="text", name="url",
     value = web.input.url },
         br(), br(),
         strings.comments .. ":", br(), err_msg,
         textarea{ name="comment", rows="10", cols="60", web.input.comment },
     br(),
         em(" *" .. strings.italics .. "* "),
         strong(" **" .. strings.bold .. "** "), 
         " [" .. a{ href="/url", strings.link } .. "](http://url) ",
         br(), br(),
         input.button{ type="submit", value=strings.send }
      }
   }
   return layout(web, args, div.blogentry(res))
end

This is a lot of code to digest at once, so let's go piece by piece. The first few lines generate the body of the post, using the _post helper. Then we have the list of comments, again with the body of each comment generated by a helper, _comment. In the middle we have an error message that is generated if the user tried to post an empty comment, and then the "add a comment" form. A form needs a lot of HTML, so there's quite a lot of code, but it should be self-explanatory and is pretty basic HTML (making it pretty is the responsibility of the style sheet).

The _comment helper is pretty simple:

function _comment(web, comment)
   return { p(comment.body),
      p.posted{
     strings.written_by .. " " .. comment:make_link(),
     " " .. strings.on_date .. " " ..
        time(comment.created_at) 
      }
   }
end

Finally, we need to set all of these view functions up for programmatic HTML generation:

orbit.htmlify(blog, "layout", "_.+", "render_.+")

The orbit.htmlify function takes a table and a list of patterns, and sets all functions in that table with names that match one of the patterns up for HTML generation. Here we set the layout function, all the render_ functions, and all the helpers (the functions starting with _).

We end the file by returning the module:

return blog

Deployment

For this part of the tutorial it is better if you go to the samples/blog folder of Orbit's distribution (again, look inside the rocks folder if you installed with Kepler or LuaRocks). An Orbit application is a WSAPI application, so deployment is very easy, you can just copy all the application's files (blog.lua, blog_config.lua, blog.db, head.jpg, and style.css) to a folder in your web server's docroot (if you installed Kepler, to a folder inside kepler/htdocs), and create a launcher script in this folder. The launcher script is simple (call it blog.ws):

#!/usr/bin/env wsapi.cgi
return require "blog"

Depending on your configuration, you might need to install the luasql-sqlite3 and markdown rocks before running the application. Now just start Xavante, and point your browser to blog.ws, and you should see the index page of the blog. If you created a blog.db from scratch you are not going to see any posts, though. The blog application in `samples/blog' includes a blog.db filled with random posts and comments.

Valid XHTML 1.0!

lua-orbit-2.2.1+dfsg/doc/us/example.md000066400000000000000000000626421227340735500175240ustar00rootroot00000000000000## Orbit Tutorial This tutorial shows how to create a simple blog application in Orbit, backed by a database. It's very simple because it does not include any "admin" pages; you have to add posts directly to the database (though you can do it through a Lua console, and this tutorial will show how), but there is an interface for commenting on posts. The tutorial assumes you have already installed Orbit (preferrably as part of [Kepler](http://www.keplerproject.org), or via [LuaRocks](http://luarocks.org), and already have a web server that supports WSAPI set up (the Xavante web server that comes with Kepler is a good choice). Complete source code for this blog is in the `samples` folder of Orbit's distribution. If you have installed Orbit via Kepler or LuaRocks look inside the `rocks` folder of your installation. ## Initialization You should create a `blog.lua` file, which will be the main source file for our application. The first thing you should put in this file is the code to load Orbit and other libraries you are going to use in your app:
local orbit = require "orbit"
local orcache = require "orbit.cache"
local markdown = require "markdown"
local wsutil = require "wsapi.util"
In this example we are going to use Orbit's page cache, and the Markdown parser for marking up posts. We will now create the `blog` application and set it as the global environment for the rest of the module:
local blog = setmetatable(orbit.new(), { __index = _G })
if _VERSION == "Lua 5.2" then
  _ENV = blog
else
  setfenv(1, blog)
end
`orbit.new` injects quite a lot of stuff in the `blog` module's namespace. The most important of these are the `dispatch_get`, `dispatch_post`, and `model` methods that let you define the main functionality of the application. It also defines a `mapper` variable that Orbit uses to create the models (Orbit initializes this variable to its default OR mapper). Finally, it defines default controllers for 404 and 500 HTTP error codes as the `not_found` and `server_error` variables, respectively. Override those if you want custom pages for your application. Let's load a configuration script for the blog (a common pattern in applications). You can get this script from [here](blog_config.lua).
wsutil.loadfile("blog_config.lua", blog)()
The next few lines load one of LuaSQL's database driver (defined in the configuration), and sets up Orbit's OR mapper.
local luasql = require("luasql." .. database.driver)
local env = luasql[database.driver]()
mapper.conn = env:connect(unpack(database.conn_data))
mapper.driver = database.driver
Orbit's mapper needs a database connection to use, and which driver you are using (currently only "sqlite3" and "mysql" are supported). You need to initialize the mapper before creating your application's models because Orbit's mapper hits the database on model creation to get the schema. Speaking of schema, now is a good time to create your blogs' database. I will assume you are using SQLite3. Create a `blog.db` database with the following SQL script:
CREATE TABLE blog_post
       ("id" INTEGER PRIMARY KEY NOT NULL,
       "title" VARCHAR(255) DEFAULT NULL,
       "body" TEXT DEFAULT NULL,
       "n_comments" INTEGER DEFAULT NULL,
       "published_at" DATETIME DEFAULT NULL);

CREATE TABLE blog_comment
       ("id" INTEGER PRIMARY KEY NOT NULL,
       "post_id" INTEGER DEFAULT NULL,
       "author" VARCHAR(255) DEFAULT NULL,
       "email" VARCHAR(255) DEFAULT NULL,
       "url" VARCHAR(255) DEFAULT NULL,
       "body" TEXT DEFAULT NULL,
       "created_at" DATETIME DEFAULT NULL);

CREATE TABLE blog_page
       ("id" INTEGER PRIMARY KEY NOT NULL,
       "title" VARCHAR(30) DEFAULT NULL,
       "body" TEXT DEFAULT NULL);
Orbit's mapper uses the `id` field to identify objects in the database, so you need it for every kind of object you are mapping. Finally, let's initialize Orbit's page cache before creating our models:
local cache = orbit.cache.new(blog, cache_path)
The page cache greatly speeds access to any page that you cache, but you need to be careful and invalidate the cache for a page when any content on that page changes. We will see how to cache and invalidate pages in the controller section of this tutorial. ## Creating Models Our blog application has three kinds of objects: posts, comments, and "static" pages (things like an "About" page for the blog, for example). It's no coincidence that we also have three tables in the database, each table maps to a kind of object our application handles, and for each kind we will create a model. We first create a model object for posts:
posts = blog:model "post"
The parameter for the `model` method is the name of a table in the database. The `posts` object that this method creates represents the collection of posts, and at the same time is a prototype for all posts (we will see the implications of that shortly). Orbit's mapper creates a rather functional object by itself: you can do `posts:find(3)`, for example, and get the post with `id` 3, or `posts:find_all("n_comments < ?", { 3, order = "published_at desc" })` and get a list of all posts with less than three comments, ordered by most recent to least. You can use the predefined `find` methods for all queries to the database, but it helps to abstract common queries in your own methods. You can do that by adding methods to the `posts` object:
function posts:find_recent()
   return self:find_all("published_at is not null",
			{ order = "published_at desc",
			   count = recent_count })
end
The lines above add a `find_recent` method to the `posts` object that returns a list of the most recent published posts (the number is in the configuration script), ordered from most recent to least. The application is going to use this method to generate the list of posts in the home page, as well as the "Recent Posts" section of the blog's sidebar. Another feature of our blog is going to be archive pages that show all posts of a certain month and year. We will define a method for that too:
function posts:find_by_month_and_year(month, year)
   local s = os.time({ year = year, month = month, day = 1 })
   local e = os.time({ year = year + math.floor(month / 12),
			month = (month % 12) + 1,
			day = 1 })
   return self:find_all("published_at >= ? and published_at < ?",
			{ s, e, order = "published_at desc" })
end
This is a more complicated method, as we have to convert from a simple month and year to start and end dates in the standard Lua format. Finally, we will also define a method that returns all months (and years) that have posts, to later generate the links for the "Archive" section in the sidebar:
function posts:find_months()
   local months = {}
   local previous_month = {}
   local posts = self:find_all("published_at is not null", 
                               { order = "published_at desc" })
   for _, post in ipairs(posts) do
      local date = os.date("*t", post.published_at)
      if previous_month.month ~= date.month or
	 previous_month.year ~= date.year then
	 previous_month = { month = date.month, year = date.year,
	    date_str = os.date("%Y/%m", post.published_at) }
	 months[#months + 1] = previous_month
      end
   end
   return months
end
This method gets all posts in the database, ordered by date, and iterates over them storing the each unique pair of month and year in a list. We can also define methods for individual post objects by defining methods in the `posts` object, the only difference is how they are used (you use `find_recent` by doing `posts:find_recent()`, but you will use `find_comments` by doing `p:find_comments()`, where `p` is a particular post object. We will define a method to retrieve all comments of a post:
function posts:find_comments()
   return comments:find_all_by_post_id{ self.id }
end
This method uses a predefined method of the `comments` object (which we will create shortly) that gets all comments with field `post_id` equal to the id of the current post (`self.id`). This method establishes a relation between posts and comments; a future version of Orbit's mapper will let you define these declaratively. Creating the `comments` object is simple:
comments = blog:model "comment"
Let's just add a convenience method for comments that build the comment's link from the its data:
function comments:make_link()
   local author = self.author or strings.anonymous_author
   if self.url and self.url ~= "" then
      return "" .. author .. ""
   elseif self.email and self.email ~= "" then
      return "" .. author .. ""
   else
      return author
   end
end
The `pages` object is even simpler, the default functionality provided by Orbit's mapper is enough, so we just create it with `model`:
pages = blog:model "pages"
This concludes the "model" part of our application. We can now move on to defining the applications' page flow, by defining *controllers* and mapping them to URLs. ## Defining Controllers Controllers are the interface between the web and your application. With Orbit you can map the path part of your application's URLs (in http://myserver.com/myapp.ws/foo/bar the path is /foo/bar, for example) to controllers. In Lua terms, an Orbit controller is a function that receives a request/response object (usually called `web`) plus parameters extracted from the path, and returns text that is sent to the client (usually HTML, but can be XML, or even an image). You map paths to controllers with the `dispatch_get` and `dispatch_post` methods, for GET and POST requests, respectively. The first parameter to these methods is the controller, a Lua function, and all the other parameters are *mapping patterns*, written using Lua's string matching syntax, so one controller can answer to multiple mappings. Below is the controller for the main page of the blog:
function index(web)
   local ps = posts:find_recent()
   local ms = posts:find_months()
   local pgs = pgs or pages:find_all()
   return render_index(web, { posts = ps, months = ms,
			  recent = ps, pages = pgs })
end

blog:dispatch_get(cache(index), "/", "/index") 
The last line sets up the mapping between the `index` function and the root of the application. The call to `cache` sets up page caching for this controller, using the cache we created earlier (this is another common Lua idiom, functions as decorators). The `index` controller shows all recent posts, and is pretty straightforward. It just fetches the required model data from the database, then calls an auxiliary function (called a *view* in MVC terminology) to render the actual HTML code. Another important controller is the one that shows single posts:
function view_post(web, post_id, comment_missing)
   local post = posts:find(tonumber(post_id))
   if post then
      local recent = posts:find_recent()
      local pgs = pages:find_all()
      post.comments = post:find_comments()
      local months = posts:find_months()
      return render_post(web, { post = post, months = months,
			    recent = recent, pages = pgs,
			    comment_missing = comment_missing })
   else
      return not_found(web)
   end
end

blog:dispatch_get(cache(view_post), "/post/(%d+)")
Here we map all paths like /post/53 to the `view_post` controller. The pattern captures the number, and this is passed along to the controller by Orbit. For /post/53, the controller receives the string "53" as `post_id` and uses this to fetch the corresponding post. Again, HTML rendering is factored out to another function, and this controller is cached. If no post with that id is found then the default controller for missing pages gets called, `blog.not_found` (`orbit.app` put it in the `blog` namespace). Orbit also calls this controller is it does not find a valid match for the path. Another default controller is `server_error`, called when any unprotected error happens in controller/view code. Archives and pages are similar in structure:
function view_archive(web, year, month)
   local ps = posts:find_by_month_and_year(tonumber(month),
					   tonumber(year))
   local months = posts:find_months()
   local recent = posts:find_recent()
   local pgs = pages:find_all()
   return render_index(web, { posts = ps, months = months,
			  recent = recent, pages = pgs })
end

blog:dispatch_get(cache(view_archive), "/archive/(%d%d%d%d)/(%d%d)")

function view_page(web, page_id)
   local page = pages:find(tonumber(page_id))
   if page then
      local recent = posts:find_recent()
      local months = posts:find_months()
      local pgs = pages:find_all()
      return render_page(web, { page = page, months = months,
		     recent = recent, pages = pgs })
   else
      not_found(web)
   end
end

blog:dispatch_get(cache(view_page), "/page/(%d+)")
The archives use the same layout as the index, so they reuse its HTML generator. Archives also extract two parameters from the path, the month and the year, so paths are like /archive/2008/05. Finally, you can also set up Orbit to serve static files with the `dispatch_static` convenience method:
blog:dispatch_static("/head%.jpg", "/style%.css")
These are also patterns, so the dots are escaped. You can set up a whole folder in your application as static with `blog:dispatch_static("/templates/.+")`. Orbit always looks for the files in your application's folder. Of course you are free to let your application only handle dynamic content and let your web server serve static content; `dispatch_static` is just a convenience to have "zero-configuration" applications. There is one controller left, for adding comments. This one will answer to POST instead of GET:
function add_comment(web, post_id)
   local input = web.input
   if string.find(input.comment, "^%s*$") then
      return view_post(web, post_id, true)
   else
      local comment = comments:new()
      comment.post_id = tonumber(post_id)
      comment.body = markdown(input.comment)
      if not string.find(input.author, "^%s*$") then
	 comment.author = input.author
      end
      if not string.find(input.email, "^%s*$") then
	 comment.email = input.email
      end
      if not string.find(input.url, "^%s*$") then
	 comment.url = input.url
      end
      comment:save()
      local post = posts:find(tonumber(post_id))
      post.n_comments = (post.n_comments or 0) + 1
      post:save()
      cache:invalidate("/")
      cache:invalidate("/post/" .. post_id)
      cache:invalidate("/archive/" .. os.date("%Y/%m", post.published_at))
      return web:redirect(web:link("/post/" .. post_id))
   end
end

blog:dispatch_post(add_comment, "/post/(%d+)/addcomment")
The `add_comment` controller first validates the input, delegating to `view_post` if the comment field is empty (which will show an error message in the page). You access POST parameters via the `web.input` table, which is conveniently aliased to an `input` local variable. The controller creates a new comment object and fills it with data, then saves it to the database. It also updates the post object to increase the number of comments the post has by one, and also saves it. It then proceeds to invalidate (in the cache) all pages that may show this information: the index, the post's page, and the archives for this particular post. Finally, it redirects to the post's page, which will show the new comment. This is a common idiom in web programming called POST-REDIRECT-GET, where every POST is followed by a redirect to a GET. This avoids double posting in case the user hits reload. The only thing left now is the HTML generation itself. This is the topic of the next section. ## Views: Generating HTML Views are the last component of the MVC triad. For Orbit views are just simple functions that generate content (usually HTML), and are strictly optional, meaning you can return content directly from the controller. But it's still good programming practice to separate controllers and views. How you generate content is up to you: concatenate Lua strings, use `table.concat`, use a third-party template library... Orbit provides programmatic HTML/XML generation through `orbit.htmlify`, but you are free to use any method you want. In this tutorial we will stick with programmatic generation, though, as the other methods (straight strings, [Cosmo](http://cosmo.luaforge.net), etc.) are thoroughly documented elsewhere. When you htmlify a function, Orbit changes the function's environment to let you generate HTML by calling the tags as functions. It's better to show how it works than to explain, so here is the basic view of the blog application, `layout`:
function layout(web, args, inner_html)
   return html{
      head{
	 title(blog_title),
	 meta{ ["http-equiv"] = "Content-Type",
	    content = "text/html; charset=utf-8" },
	 link{ rel = 'stylesheet', type = 'text/css', 
	    href = web:static_link('/style.css'), media = 'screen' }
      },
      body{
	 div{ id = "container",
	    div{ id = "header", title = "sitename" },
	    div{ id = "mainnav",
	       _menu(web, args)
	    }, 
            div{ id = "menu",
	       _sidebar(web, args)
	    },  
	    div{ id = "contents", inner_html },
	    div{ id = "footer", copyright_notice }
	 }
      }
   } 
end
This view is a decorator for other views, and generates the boilerplate for each page in the blog (header, footer, sidebar). You can see the HTML-generating functions througout the code, such as `title`, `html`, `head`, `div`. Each takes either a string or a table, and generates the corresponding HTML. If you pass a table, the array part is concatenated and used as the content, while the hash part os used as HTML attributes for that tag. A tag with no content generates a self-closing tag (`meta` and `link` in the code above). Of note in the code above are the calls to `web:static_link` and to the `_menu` and `_sidebar` functions. The `static_link` method generates a link to a static resource of the application, stripping out the SCRIPT_NAME from the URL (for example, if the URL is http://myserver.com/myblog/blog.ws/index it will return /myblog/style.css as the link). The `_menu` and `_sidebar` functions are just helper views to generate the blog's menubar and sidebar:
function _menu(web, args)
   local res = { li(a{ href= web:link("/"), strings.home_page_name }) }
   for _, page in pairs(args.pages) do
      res[#res + 1] = li(a{ href = web:link("/page/" .. page.id), page.title })
   end
   return ul(res)
end

function _sidebar(web, args)
   return {
      h3(strings.about_title),
      ul(li(about_blurb)),
      h3(strings.last_posts),
      _recent(web, args),
      h3(strings.blogroll_title),
      _blogroll(web, blogroll),
      h3(strings.archive_title),
      _archives(web, args)
   }
end
Here you see a mixture of standard Lua idioms (filling a table and passing it to a concatenation function) and Orbit's programmatic HTML. They also use the `web:link` method, which generates intra-application links. The `sidebar` function uses a few more convenience functions, for better factoring:
function _blogroll(web, blogroll)
   local res = {}
   for _, blog_link in ipairs(blogroll) do
      res[#res + 1] = li(a{ href=blog_link[1], blog_link[2] })
   end
   return ul(res)
end

function _recent(web, args)
   local res = {}
   for _, post in ipairs(args.recent) do
      res[#res + 1] = li(a{ href=web:link("/post/" .. post.id), post.title })
   end
   return ul(res)
end

function _archives(web, args)
   local res = {}
   for _, month in ipairs(args.months) do
      res[#res + 1] = li(a{ href=web:link("/archive/" .. month.date_str), 
			    blog.month(month) })
   end
   return ul(res)
end
Notice how these functions do not call anything in the model, just using whichever data was passed by them (all the way from the controller). We can now get to the main view functions. Let's start with the easiest, and smallest, one, to render pages:
function render_page(web, args)
   return layout(web, args, div.blogentry(markdown(args.page.body)))
end
This is a straightforward call to `layout`, passing the body of the page inside a `div`. The only thing of note is the `div.blogentry` syntax, which generates a `div` with a `class` attribute equal to "blogentry", instead of a straight `div`. Moving on, we will now write the view for index pages (and archive pages):
function render_index(web, args)
   if #args.posts == 0 then
      return layout(web, args, p(strings.no_posts))
   else
      local res = {}
      local cur_time
      for _, post in pairs(args.posts) do
	 local str_time = date(post.published_at)
	 if cur_time ~= str_time then
	    cur_time = str_time
	    res[#res + 1] = h2(str_time)
	 end
	 res[#res + 1] = h3(post.title)
	 res[#res + 1] = _post(web, post)
      end
      return layout(web, args, div.blogentry(res))
   end
end
Again we mix Lua with programmatic generation, and factor part of the output (the HTML for the body of the posts themselves) to another function (we will be able to reuse this function for the single-post view). The only unusual piece of logic is to implement fancier dates, the code only prints a date when it changes, so several posts made in the same day appear under the same date. The `_post` helper is pretty straightforward:
function _post(web, post)
   return {
      markdown(post.body),
      p.posted{ 
	 strings.published_at .. " " .. 
	    os.date("%H:%M", post.published_at), " | ",
	 a{ href = web:link("/post/" .. post.id .. "#comments"), strings.comments ..
	    " (" .. (post.n_comments or "0") .. ")" }
      }
   }
end
Now we can finally move to the piece-de-resistance, the view that renders single posts, along with their comments, and the "post a comment" form:
function render_post(web, args)
   local res = { 
      h2(span{ style="position: relative; float:left", args.post.title }
	 .. " "),
      h3(date(args.post.published_at)),
      _post(web, args.post)
   }
   res[#res + 1] = a{ name = "comments" }
   if #args.post.comments > 0 then
      res[#res + 1] = h2(strings.comments)
      for _, comment in pairs(args.post.comments) do
	 res[#res + 1 ] = _comment(web, comment)
      end
   end
   res[#res + 1] = h2(strings.new_comment)
   local err_msg = ""
   if args.comment_missing then
      err_msg = span{ style="color: red", strings.no_comment }
   end
   res[#res + 1] = form{
      method = "post",
      action = web:link("/post/" .. args.post.id .. "/addcomment"),
      p{ strings.form_name, br(), input{ type="text", name="author",
	 value = web.input.author },
         br(), br(),
         strings.form_email, br(), input{ type="text", name="email",
	 value = web.input.email },
         br(), br(),
         strings.form_url, br(), input{ type="text", name="url",
	 value = web.input.url },
         br(), br(),
         strings.comments .. ":", br(), err_msg,
         textarea{ name="comment", rows="10", cols="60", web.input.comment },
	 br(),
         em(" *" .. strings.italics .. "* "),
         strong(" **" .. strings.bold .. "** "), 
         " [" .. a{ href="/url", strings.link } .. "](http://url) ",
         br(), br(),
         input.button{ type="submit", value=strings.send }
      }
   }
   return layout(web, args, div.blogentry(res))
end
This is a lot of code to digest at once, so let's go piece by piece. The first few lines generate the body of the post, using the `_post` helper. Then we have the list of comments, again with the body of each comment generated by a helper, `_comment`. In the middle we have an error message that is generated if the user tried to post an empty comment, and then the "add a comment" form. A form needs a lot of HTML, so there's quite a lot of code, but it should be self-explanatory and is pretty basic HTML (making it pretty is the responsibility of the style sheet). The `_comment` helper is pretty simple:
function _comment(web, comment)
   return { p(comment.body),
      p.posted{
	 strings.written_by .. " " .. comment:make_link(),
	 " " .. strings.on_date .. " " ..
	    time(comment.created_at) 
      }
   }
end
Finally, we need to set all of these view functions up for programmatic HTML generation:
orbit.htmlify(blog, "layout", "_.+", "render_.+")
The `orbit.htmlify` function takes a table and a list of patterns, and sets all functions in that table with names that match one of the patterns up for HTML generation. Here we set the `layout` function, all the `render_` functions, and all the helpers (the functions starting with `_`). We end the file by returning the module:
return blog
## Deployment For this part of the tutorial it is better if you go to the `samples/blog` folder of Orbit's distribution (again, look inside the `rocks` folder if you installed with Kepler or LuaRocks). An Orbit application is a WSAPI application, so deployment is very easy, you can just copy all the application's files (`blog.lua`, `blog_config.lua`, `blog.db`, `head.jpg`, and `style.css`) to a folder in your web server's docroot (if you installed Kepler, to a folder inside `kepler/htdocs`), and create a launcher script in this folder. The launcher script is simple (call it `blog.ws`):
#!/usr/bin/env wsapi.cgi
return require "blog"
Depending on your configuration, you might need to install the `luasql-sqlite3` and `markdown` rocks before running the application. Now just start Xavante, and point your browser to blog.ws, and you should see the index page of the blog. If you created a blog.db from scratch you are not going to see any posts, though. The blog application in `samples/blog' includes a blog.db filled with random posts and comments. lua-orbit-2.2.1+dfsg/doc/us/index.html000066400000000000000000000246401227340735500175400ustar00rootroot00000000000000 Orbit
Orbit
MVC for Lua Web Development

Overview

Orbit is an MVC web framework for Lua. The design is inspired by lightweight Ruby frameworks such as Camping. It completely abandons the CGILua model of "scripts" in favor of applications, where each Orbit application can fit in a single file, but you can split it into multiple files if you want. All Orbit applications follow the WSAPI protocol, so they currently work with Xavante, CGI and Fastcgi. It includes a launcher that makes it easy to launch a Xavante instance for development.

History

  • Version 2.2.1 (12/Jan/2014)

    • bugfix release for Lua 5.1
    • NOT 5.2 compliant
    • documentation corrections and updates
    • support for Wsapi 1.6 and other dependency modules that no longer use "module"
    • additional orbit model datatypes: real, float, timestamp, numeric
    • MIME type application/json included
  • Version 2.2.0 (31/Mar/2010)

    • Reparse response to resume the dispatcher
    • better parser for orbit.model conditions, fixes parsing bugs
    • orbit launcher has parameters to control logging and port
    • op.cgi/op.fcgi launchers have the same parameters as wsapi.cgi/wsapi.fcgi
    • Optional Sinatra-like route parser, using LPEG
    • Pluggable route parsers (route patterns can be strings or objects that answer to :match)
  • Version 2.1.0 (29/Oct/2009)

    • better decoupling of orbit and orbit.model
    • support for anything with a match method as patterns
    • new options for orbit.model finders: distinct, fields
    • count option for orbit.model now limits number of rows in the SQL
    • logging of queries in orbit.model
    • overhaul of the "orbit" script: better options, --help, sets application path
    • content_type method in the web object to set content type
    • support for PUT and DELETE (methods dispatch_put and dispatch_delete)
    • orbit.model.recycle(*conn_builder, *timeout) function, to make a connection that automatically reopens after a certain time
    • more samples in the samples folder
    • added a "higher-order" $if to Orbit Pages
  • Version 2.0.2 (10/Mar/2009)

    • url-decodes path captures (suggested by Ignacio Burgueño on a Jul 24 email to the Kepler list)
    • added tutorial and new examples
    • fixed escape.string
    • web:delete_cookie receives a path parameter in order to correctly remove the cookie. Bug report and patch by Ignacio Burgueño
    • stripping UTF-8 BOM from templates read from disk
    • removing SoLazer files in order to make the Orbit package smaller
    • added alternate name for integer (int)
    • better error reporting for missing escape and convert functions
    • removed toboolean
    • fixed bugs 13451 and 25418: setting status 500 on application errors not throwing an error if file not exists when invalidating cache
  • Version 2.0.1 (10/Jun/2008): bug-fix release, fixed bug in Orbit pages' redirect function (thanks for Ignacio Burgueño for finding the bug)

  • Version 2.0 (06/Jun/2008): Complete rewrite of Orbit

  • Version 1.0: Initial release, obsolete

Download and Installation

The easiest way to download and install Orbit is via LuaRocks. You can install Orbit with a simple luarocks install orbit. Go to the path where LuaRocks put Orbit to see the sample apps and this documentation. LuaRocks will automatically fetch and install any dependencies you don't already have.

Do not be alarmed by the size of the Orbit package (~1MB), Orbit itself is a approximately 1% of that; most of the package are samples, and a single one is responsible for 50% of the total size because it embeds the Sproutcore JavaScript framework.

Hello World

Below is a very simple Orbit application:

    #!/usr/bin/env wsapi.cgi

    local orbit = require "orbit"

    -- Orbit applications are usually modules,
    -- orbit.new does the necessary initialization

    module("hello", package.seeall, orbit.new)

    -- These are the controllers, each receives a web object
    -- that is the request/response, plus any extra captures from the
    -- dispatch pattern. The controller sets any extra headers and/or
    -- the status if it's not 200, then return the response. It's
    -- good form to delegate the generation of the response to a view
    -- function

    function index(web)
      return render_index()
    end

    function say(web, name)
      return render_say(web, name)
    end

    -- Builds the application's dispatch table, you can
    -- pass multiple patterns, and any captures get passed to
    -- the controller

    hello:dispatch_get(index, "/", "/index")
    hello:dispatch_get(say, "/say/(%a+)")

    -- These are the view functions referenced by the controllers.
    -- orbit.htmlify does through the functions in the table passed
    -- as the first argument and tries to match their name against
    -- the provided patterns (with an implicit ^ and $ surrounding
    -- the pattern. Each function that matches gets an environment
    -- where HTML functions are created on demand. They either take
    -- nil (empty tags), a string (text between opening and
    -- closing tags), or a table with attributes and a list
    -- of strings that will be the text. The indexing the
    -- functions adds a class attribute to the tag. Functions
    -- are cached.
    --

    -- This is a convenience function for the common parts of a page

    function render_layout(inner_html)
       return html{
         head{ title"Hello" },
         body{ inner_html }
       }
    end

    function render_hello()
       return p.hello"Hello World!"
    end

    function render_index()
       return render_layout(render_hello())
    end

    function render_say(web, name)
       return render_layout(render_hello() .. 
         p.hello((web.input.greeting or "Hello ") .. name .. "!"))
    end

    orbit.htmlify(hello, "render_.+")

    return _M

Save this to hello.lua, install wsapi-xavante with LuaRocks, and now you can run this application in two ways: the first is to run wsapi in the same directory that you saved the file and point your browser to http://localhost:8080/hello.lua, or run orbit hello.lua in the same directory that you saved the file and point your browser to http://localhost:8080/. Now try appending index, say/foo, and say/foo?message=bar to the URL.

The example uses Orbit's built-in html generation, but you are free to use any method of generating HTML. One of Orbit's sample applications uses the Cosmo template library, for instance.

OR Mapping

Orbit also includes a basic OR mapper that currently only works with LuaSQL's SQLite3 and MySQL drivers. The mapper provides dynamic find methods, a la Rails' ActiveRecord (find_by_field1_and_field2{val1, val2}), as well as templates for conditions (find_by("field1 = ? or field1 = ?", { val1, val2 })). The sample applications use this mapper.

A nice side-effect of the Orbit application model is that we get an "application console" for free. For example, with the blog example we can add a new post like this:

    $ lua -l luarocks.require -i blog.lua
    > p = blog.posts:new()
    > p.title = "New Post"
    > p.body = "This is a new blog post. Include *Markdown* markup freely."
    > p.published_at = os.time()
    > p:save()

You can also update or delete any of the model items right from your console, just fetch them from the database, change what you want and call save() (or delete() if you want to remove it).

Credits

Orbit was designed and developed by Fabio Mascarenhas and André Carregal, and is maintained by Fabio Mascarenhas.

Contact Us

For more information please contact us. Comments are welcome!

You can also reach us and other developers and users on the Kepler Project mailing list.

Valid XHTML 1.0!

lua-orbit-2.2.1+dfsg/doc/us/index.md000066400000000000000000000176501227340735500171770ustar00rootroot00000000000000## Overview Orbit is an MVC web framework for Lua. The design is inspired by lightweight Ruby frameworks such as [Camping](http://en.wikipedia.org/wiki/Camping_%28microframework%29). It completely abandons the CGILua model of "scripts" in favor of applications, where each Orbit application can fit in a single file, but you can split it into multiple files if you want. All Orbit applications follow the [WSAPI](http://keplerproject.github.com/wsapi) protocol, so they currently work with Xavante, CGI and Fastcgi. It includes a launcher that makes it easy to launch a Xavante instance for development. ## History * Version 2.2.1 (12/Jan/2014) * bugfix release for Lua 5.1 * NOT 5.2 compliant * documentation corrections and updates * support for Wsapi 1.6 and other dependency modules that no longer use "module" * additional orbit model datatypes: real, float, timestamp, numeric * MIME type application/json included * Version 2.2.0 (31/Mar/2010) * Reparse response to resume the dispatcher * better parser for orbit.model conditions, fixes parsing bugs * `orbit` launcher has parameters to control logging and port * `op.cgi`/`op.fcgi` launchers have the same parameters as `wsapi.cgi`/`wsapi.fcgi` * Optional [Sinatra](http://www.sinatrarb.com/)-like route parser, using LPEG * Pluggable route parsers (route patterns can be strings or objects that answer to :match) * Version 2.1.0 (29/Oct/2009) * better decoupling of orbit and orbit.model * support for anything with a match method as patterns * new options for orbit.model finders: distinct, fields * count option for orbit.model now limits number of rows in the SQL * logging of queries in orbit.model * overhaul of the "orbit" script: better options, --help, sets application path * content_type method in the web object to set content type * support for PUT and DELETE (methods `dispatch_put` and `dispatch_delete`) * orbit.model.recycle(*conn_builder*, *timeout*) function, to make a connection that automatically reopens after a certain time * more samples in the samples folder * added a "higher-order" $if to Orbit Pages * Version 2.0.2 (10/Mar/2009) * url-decodes path captures (suggested by Ignacio Burgueño on a Jul 24 email to the Kepler list) * added tutorial and new examples * fixed escape.string * web:delete_cookie receives a path parameter in order to correctly remove the cookie. Bug report and patch by Ignacio Burgueño * stripping UTF-8 BOM from templates read from disk * removing SoLazer files in order to make the Orbit package smaller * added alternate name for integer (int) * better error reporting for missing escape and convert functions * removed toboolean * fixed bugs 13451 and 25418: setting status 500 on application errors not throwing an error if file not exists when invalidating cache * Version 2.0.1 (10/Jun/2008): bug-fix release, fixed bug in Orbit pages' redirect function (thanks for Ignacio Burgueño for finding the bug) * Version 2.0 (06/Jun/2008): Complete rewrite of Orbit * Version 1.0: Initial release, obsolete ## Download and Installation The easiest way to download and install Orbit is via [LuaRocks](http://luarocks.org). You can install Orbit with a simple `luarocks install orbit`. Go to the path where LuaRocks put Orbit to see the sample apps and this documentation. LuaRocks will automatically fetch and install any dependencies you don't already have. Do not be alarmed by the size of the Orbit package (~1MB), Orbit itself is a approximately 1% of that; most of the package are samples, and a single one is responsible for 50% of the total size because it embeds the Sproutcore JavaScript framework. ## Hello World Below is a very simple Orbit application:
    #!/usr/bin/env wsapi.cgi

    local orbit = require "orbit"

    -- Orbit applications are usually modules,
    -- orbit.new does the necessary initialization

    module("hello", package.seeall, orbit.new)

    -- These are the controllers, each receives a web object
    -- that is the request/response, plus any extra captures from the
    -- dispatch pattern. The controller sets any extra headers and/or
    -- the status if it's not 200, then return the response. It's
    -- good form to delegate the generation of the response to a view
    -- function

    function index(web)
      return render_index()
    end

    function say(web, name)
      return render_say(web, name)
    end

    -- Builds the application's dispatch table, you can
    -- pass multiple patterns, and any captures get passed to
    -- the controller

    hello:dispatch_get(index, "/", "/index")
    hello:dispatch_get(say, "/say/(%a+)")

    -- These are the view functions referenced by the controllers.
    -- orbit.htmlify does through the functions in the table passed
    -- as the first argument and tries to match their name against
    -- the provided patterns (with an implicit ^ and $ surrounding
    -- the pattern. Each function that matches gets an environment
    -- where HTML functions are created on demand. They either take
    -- nil (empty tags), a string (text between opening and
    -- closing tags), or a table with attributes and a list
    -- of strings that will be the text. The indexing the
    -- functions adds a class attribute to the tag. Functions
    -- are cached.
    --

    -- This is a convenience function for the common parts of a page

    function render_layout(inner_html)
       return html{
         head{ title"Hello" },
         body{ inner_html }
       }
    end

    function render_hello()
       return p.hello"Hello World!"
    end
    
    function render_index()
       return render_layout(render_hello())
    end

    function render_say(web, name)
       return render_layout(render_hello() .. 
         p.hello((web.input.greeting or "Hello ") .. name .. "!"))
    end

    orbit.htmlify(hello, "render_.+")

    return _M
Save this to `hello.lua`, install `wsapi-xavante` with LuaRocks, and now you can run this application in two ways: the first is to run `wsapi` in the same directory that you saved the file and point your browser to `http://localhost:8080/hello.lua`, or run `orbit hello.lua` in the same directory that you saved the file and point your browser to `http://localhost:8080/`. Now try appending `index`, `say/foo`, and `say/foo?message=bar` to the URL. The example uses Orbit's built-in html generation, but you are free to use any method of generating HTML. One of Orbit's sample applications uses the [Cosmo](http://cosmo.luaforge.net) template library, for instance. ## OR Mapping Orbit also includes a basic OR mapper that currently only works with [LuaSQL's](http://github.com/keplerproject/luasql) SQLite3 and MySQL drivers. The mapper provides dynamic find methods, a la Rails' ActiveRecord (find\_by\_field1\_and\_field2{val1, val2}), as well as templates for conditions (find_by("field1 = ? or field1 = ?", { val1, val2 })). The sample applications use this mapper. A nice side-effect of the Orbit application model is that we get an "application console" for free. For example, with the blog example we can add a new post like this:
    $ lua -l luarocks.require -i blog.lua
    > p = blog.posts:new()
    > p.title = "New Post"
    > p.body = "This is a new blog post. Include *Markdown* markup freely."
    > p.published_at = os.time()
    > p:save()
You can also update or delete any of the model items right from your console, just fetch them from the database, change what you want and call `save()` (or `delete()` if you want to remove it). ## Credits Orbit was designed and developed by Fabio Mascarenhas and André Carregal, and is maintained by Fabio Mascarenhas. ## Contact Us For more information please [contact us](mailto:info-NO-SPAM-THANKS@keplerproject.org). Comments are welcome! You can also reach us and other developers and users on the Kepler Project [mailing list](https://groups.google.com/forum/#!forum/kepler-project). lua-orbit-2.2.1+dfsg/doc/us/license.html000066400000000000000000000071471227340735500200560ustar00rootroot00000000000000 Orbit
Orbit
MVC for Lua Web Development

License

Orbit is free software: it can be used for both academic and commercial purposes at absolutely no cost. There are no royalties or GNU-like "copyleft" restrictions. Orbit qualifies as Open Source software. Its licenses are compatible with GPL. Orbit is not in the public domain and the Kepler Project keep its copyright. The legal details are below.

The spirit of the license is that you are free to use Orbit for any purpose at no cost without having to ask us. The only requirement is that if you do use Orbit, then you should give us credit by including the appropriate copyright notice somewhere in your product or its documentation.

The Orbit library is designed and implemented by Fabio Mascarenhas, André Carregal and Tomás Guisasola. The implementation is not derived from licensed software.


Copyright © 2007-2008 The Kepler Project.

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.

Valid XHTML 1.0!

lua-orbit-2.2.1+dfsg/doc/us/license.md000066400000000000000000000041111227340735500174760ustar00rootroot00000000000000

License

Orbit is free software: it can be used for both academic and commercial purposes at absolutely no cost. There are no royalties or GNU-like "copyleft" restrictions. Orbit qualifies as Open Source software. Its licenses are compatible with GPL. Orbit is not in the public domain and the Kepler Project keep its copyright. The legal details are below.

The spirit of the license is that you are free to use Orbit for any purpose at no cost without having to ask us. The only requirement is that if you do use Orbit, then you should give us credit by including the appropriate copyright notice somewhere in your product or its documentation.

The Orbit library is designed and implemented by Fabio Mascarenhas, André Carregal and Tomás Guisasola. The implementation is not derived from licensed software.


Copyright © 2007-2008 The Kepler Project.

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.

lua-orbit-2.2.1+dfsg/doc/us/makedoc.lua000066400000000000000000000056531227340735500176540ustar00rootroot00000000000000local cosmo = require "cosmo" local markdown = require "markdown" local pages = { { name = "Home", file = "index", sections = {} }, { name = "Pages", file = "pages", sections = {} }, { name = "Reference", file = "reference", sections = {} }, { name = "Tutorial", file = "example", sections = {} }, { name = "License", file = "license", sections = {} } } local project = { name = "Orbit", blurb = "MVC for Lua Web Development", logo = "orbit.png", } local template = [==[ $name
$name
$blurb
$content

Valid XHTML 1.0!

]==] local function readfile(filename) local file = io.open(filename) local contents = file:read("*a") file:close() return contents end local function writefile(filename, contents) local file = io.open(filename, "w+") file:write(contents) file:close() end local function gen_page(project, pages, p) project.pages = function () for _, page in ipairs(pages) do local namelink if page.file == p.file then namelink = cosmo.fill([[$name]], { name = page.name}) else namelink = cosmo.fill([[$name]], { name = page.name, file = page.file}) end cosmo.yield{ namelink = namelink, sections = function () for _, s in ipairs(page.sections) do cosmo.yield{ name = s.name, anchor = page.file .. ".html#" .. s.anchor } end end } end end return (cosmo.fill(template, project)) end for _, p in ipairs(pages) do project.content = markdown(readfile(p.file .. ".md")) writefile(p.file .. ".html", gen_page(project, pages, p)) end lua-orbit-2.2.1+dfsg/doc/us/markdown.lua000066400000000000000000001161261227340735500200710ustar00rootroot00000000000000#!/usr/bin/env lua --[[ # markdown.lua -- version 0.32 **Author:** Niklas Frykholm, **Date:** 31 May 2008 This is an implementation of the popular text markup language Markdown in pure Lua. Markdown can convert documents written in a simple and easy to read text format to well-formatted HTML. For a more thourough description of Markdown and the Markdown syntax, see . The original Markdown source is written in Perl and makes heavy use of advanced regular expression techniques (such as negative look-ahead, etc) which are not available in Lua's simple regex engine. Therefore this Lua port has been rewritten from the ground up. It is probably not completely bug free. If you notice any bugs, please report them to me. A unit test that exposes the error is helpful. ## Usage require "markdown" markdown(source) ``markdown.lua`` exposes a single global function named ``markdown(s)`` which applies the Markdown transformation to the specified string. ``markdown.lua`` can also be used directly from the command line: lua markdown.lua test.md Creates a file ``test.html`` with the converted content of ``test.md``. Run: lua markdown.lua -h For a description of the command-line options. ``markdown.lua`` uses the same license as Lua, the MIT license. ## License Copyright © 2008 Niklas Frykholm. 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. ## Version history - **0.32** -- 31 May 2008 - Fix for links containing brackets - **0.31** -- 1 Mar 2008 - Fix for link definitions followed by spaces - **0.30** -- 25 Feb 2008 - Consistent behavior with Markdown when the same link reference is reused - **0.29** -- 24 Feb 2008 - Fix for
 blocks with spaces in them
-	**0.28** -- 18 Feb 2008
	-	Fix for link encoding
-	**0.27** -- 14 Feb 2008
	-	Fix for link database links with ()
-	**0.26** -- 06 Feb 2008
	-	Fix for nested italic and bold markers
-	**0.25** -- 24 Jan 2008
	-	Fix for encoding of naked <
-	**0.24** -- 21 Jan 2008
	-	Fix for link behavior.
-	**0.23** -- 10 Jan 2008
	-	Fix for a regression bug in longer expressions in italic or bold.
-	**0.22** -- 27 Dec 2007
	-	Fix for crash when processing blocks with a percent sign in them.
-	**0.21** -- 27 Dec 2007
	- 	Fix for combined strong and emphasis tags
-	**0.20** -- 13 Oct 2007
	-	Fix for < as well in image titles, now matches Dingus behavior
-	**0.19** -- 28 Sep 2007
	-	Fix for quotation marks " and ampersands & in link and image titles.
-	**0.18** -- 28 Jul 2007
	-	Does not crash on unmatched tags (behaves like standard markdown)
-	**0.17** -- 12 Apr 2007
	-	Fix for links with %20 in them.
-	**0.16** -- 12 Apr 2007
	-	Do not require arg global to exist.
-	**0.15** -- 28 Aug 2006
	-	Better handling of links with underscores in them.
-	**0.14** -- 22 Aug 2006
	-	Bug for *`foo()`*
-	**0.13** -- 12 Aug 2006
	-	Added -l option for including stylesheet inline in document.
	-	Fixed bug in -s flag.
	-	Fixed emphasis bug.
-	**0.12** -- 15 May 2006
	-	Fixed several bugs to comply with MarkdownTest 1.0 
-	**0.11** -- 12 May 2006
	-	Fixed bug for escaping `*` and `_` inside code spans.
	-	Added license terms.
	-	Changed join() to table.concat().
-	**0.10** -- 3 May 2006
	-	Initial public release.

// Niklas
]]


-- Set up a table for holding local functions to avoid polluting the global namespace
local M = {}
local unpack = unpack or table.unpack
local MT = {__index = _G}
setmetatable(M, MT)

----------------------------------------------------------------------
-- Utility functions
----------------------------------------------------------------------

-- Locks table t from changes, writes an error if someone attempts to change the table.
-- This is useful for detecting variables that have "accidently" been made global. Something
-- I tend to do all too much.
function M.lock(t)
	local function lock_new_index(t, k, v)
		error("module has been locked -- " .. k .. " must be declared local", 2)
	end

	local mt = {__newindex = lock_new_index}
	if getmetatable(t) then
      mt.__index = getmetatable(t).__index
   end
	setmetatable(t, mt)
end

-- Returns the result of mapping the values in table t through the function f
local function map(t, f)
	local out = {}
	for k,v in pairs(t) do out[k] = f(v,k) end
	return out
end

-- The identity function, useful as a placeholder.
local function identity(text) return text end

-- Functional style if statement. (NOTE: no short circuit evaluation)
local function iff(t, a, b) if t then return a else return b end end

-- Splits the text into an array of separate lines.
local function split(text, sep)
	sep = sep or "\n"
	local lines = {}
	local pos = 1
	while true do
		local b,e = text:find(sep, pos)
		if not b then table.insert(lines, text:sub(pos)) break end
		table.insert(lines, text:sub(pos, b-1))
		pos = e + 1
	end
	return lines
end

-- Converts tabs to spaces
local function detab(text)
	local tab_width = 4
	local function rep(match)
		local spaces = -match:len()
		while spaces<1 do spaces = spaces + tab_width end
		return match .. string.rep(" ", spaces)
	end
	text = text:gsub("([^\n]-)\t", rep)
	return text
end

-- Applies string.find for every pattern in the list and returns the first match
local function find_first(s, patterns, index)
	local res = {}
	for _,p in ipairs(patterns) do
		local match = {s:find(p, index)}
		if #match>0 and (#res==0 or match[1] < res[1]) then res = match end
	end
	return unpack(res)
end

-- If a replacement array is specified, the range [start, stop] in the array is replaced
-- with the replacement array and the resulting array is returned. Without a replacement
-- array the section of the array between start and stop is returned.
local function splice(array, start, stop, replacement)
	if replacement then
		local n = stop - start + 1
		while n > 0 do
			table.remove(array, start)
			n = n - 1
		end
		for i,v in ipairs(replacement) do
			table.insert(array, start, v)
		end
		return array
	else
		local res = {}
		for i = start,stop do
			table.insert(res, array[i])
		end
		return res
	end
end

-- Outdents the text one step.
local function outdent(text)
	text = "\n" .. text
	text = text:gsub("\n  ? ? ?", "\n")
	text = text:sub(2)
	return text
end

-- Indents the text one step.
local function indent(text)
	text = text:gsub("\n", "\n    ")
	return text
end

-- Does a simple tokenization of html data. Returns the data as a list of tokens.
-- Each token is a table with a type field (which is either "tag" or "text") and
-- a text field (which contains the original token data).
local function tokenize_html(html)
	local tokens = {}
	local pos = 1
	while true do
		local start = find_first(html, {"", start)
		elseif html:match("^<%?", start) then
			_,stop = html:find("?>", start)
		else
			_,stop = html:find("%b<>", start)
		end
		if not stop then
			-- error("Could not match html tag " .. html:sub(start,start+30))
		 	table.insert(tokens, {type="text", text=html:sub(start, start)})
			pos = start + 1
		else
			table.insert(tokens, {type="tag", text=html:sub(start, stop)})
			pos = stop + 1
		end
	end
	return tokens
end

----------------------------------------------------------------------
-- Hash
----------------------------------------------------------------------

-- This is used to "hash" data into alphanumeric strings that are unique
-- in the document. (Note that this is not cryptographic hash, the hash
-- function is not one-way.) The hash procedure is used to protect parts
-- of the document from further processing.

local HASH = {
	-- Has the hash been inited.
	inited = false,

	-- The unique string prepended to all hash values. This is to ensure
	-- that hash values do not accidently coincide with an actual existing
	-- string in the document.
	identifier = "",

	-- Counter that counts up for each new hash instance.
	counter = 0,

	-- Hash table.
	table = {}
}

-- Inits hashing. Creates a hash_identifier that doesn't occur anywhere
-- in the text.
local function init_hash(text)
	HASH.inited = true
	HASH.identifier = ""
	HASH.counter = 0
	HASH.table = {}

	local s = "HASH"
	local counter = 0
	local id
	while true do
		id  = s .. counter
		if not text:find(id, 1, true) then break end
		counter = counter + 1
	end
	HASH.identifier = id
end

-- Returns the hashed value for s.
local function hash(s)
	assert(HASH.inited)
	if not HASH.table[s] then
		HASH.counter = HASH.counter + 1
		local id = HASH.identifier .. HASH.counter .. "X"
		HASH.table[s] = id
	end
	return HASH.table[s]
end

----------------------------------------------------------------------
-- Protection
----------------------------------------------------------------------

-- The protection module is used to "protect" parts of a document
-- so that they are not modified by subsequent processing steps.
-- Protected parts are saved in a table for later unprotection

-- Protection data
local PD = {
	-- Saved blocks that have been converted
	blocks = {},

	-- Block level tags that will be protected
	tags = {"p", "div", "h1", "h2", "h3", "h4", "h5", "h6", "blockquote",
	"pre", "table", "dl", "ol", "ul", "script", "noscript", "form", "fieldset",
	"iframe", "math", "ins", "del"}
}

-- Pattern for matching a block tag that begins and ends in the leftmost
-- column and may contain indented subtags, i.e.
-- 
-- A nested block. --
-- Nested data. --
--
local function block_pattern(tag) return "\n<" .. tag .. ".-\n[ \t]*\n" end -- Pattern for matching a block tag that begins and ends with a newline local function line_pattern(tag) return "\n<" .. tag .. ".-[ \t]*\n" end -- Protects the range of characters from start to stop in the text and -- returns the protected string. local function protect_range(text, start, stop) local s = text:sub(start, stop) local h = hash(s) PD.blocks[h] = s text = text:sub(1,start) .. h .. text:sub(stop) return text end -- Protect every part of the text that matches any of the patterns. The first -- matching pattern is protected first, etc. local function protect_matches(text, patterns) while true do local start, stop = find_first(text, patterns) if not start then break end text = protect_range(text, start, stop) end return text end -- Protects blocklevel tags in the specified text local function protect(text) -- First protect potentially nested block tags text = protect_matches(text, map(PD.tags, block_pattern)) -- Then protect block tags at the line level. text = protect_matches(text, map(PD.tags, line_pattern)) -- Protect
and comment tags text = protect_matches(text, {"\n]->[ \t]*\n"}) text = protect_matches(text, {"\n[ \t]*\n"}) return text end -- Returns true if the string s is a hash resulting from protection local function is_protected(s) return PD.blocks[s] end -- Unprotects the specified text by expanding all the nonces local function unprotect(text) for k,v in pairs(PD.blocks) do v = v:gsub("%%", "%%%%") text = text:gsub(k, v) end return text end ---------------------------------------------------------------------- -- Block transform ---------------------------------------------------------------------- -- The block transform functions transform the text on the block level. -- They work with the text as an array of lines rather than as individual -- characters. -- Returns true if the line is a ruler of (char) characters. -- The line must contain at least three char characters and contain only spaces and -- char characters. local function is_ruler_of(line, char) if not line:match("^[ %" .. char .. "]*$") then return false end if not line:match("%" .. char .. ".*%" .. char .. ".*%" .. char) then return false end return true end -- Identifies the block level formatting present in the line local function classify(line) local info = {line = line, text = line} if line:match("^ ") then info.type = "indented" info.outdented = line:sub(5) return info end for _,c in ipairs({'*', '-', '_', '='}) do if is_ruler_of(line, c) then info.type = "ruler" info.ruler_char = c return info end end if line == "" then info.type = "blank" return info end if line:match("^(#+)[ \t]*(.-)[ \t]*#*[ \t]*$") then local m1, m2 = line:match("^(#+)[ \t]*(.-)[ \t]*#*[ \t]*$") info.type = "header" info.level = m1:len() info.text = m2 return info end if line:match("^ ? ? ?(%d+)%.[ \t]+(.+)") then local number, text = line:match("^ ? ? ?(%d+)%.[ \t]+(.+)") info.type = "list_item" info.list_type = "numeric" info.number = 0 + number info.text = text return info end if line:match("^ ? ? ?([%*%+%-])[ \t]+(.+)") then local bullet, text = line:match("^ ? ? ?([%*%+%-])[ \t]+(.+)") info.type = "list_item" info.list_type = "bullet" info.bullet = bullet info.text= text return info end if line:match("^>[ \t]?(.*)") then info.type = "blockquote" info.text = line:match("^>[ \t]?(.*)") return info end if is_protected(line) then info.type = "raw" info.html = unprotect(line) return info end info.type = "normal" return info end -- Find headers constisting of a normal line followed by a ruler and converts them to -- header entries. local function headers(array) local i = 1 while i <= #array - 1 do if array[i].type == "normal" and array[i+1].type == "ruler" and (array[i+1].ruler_char == "-" or array[i+1].ruler_char == "=") then local info = {line = array[i].line} info.text = info.line info.type = "header" info.level = iff(array[i+1].ruler_char == "=", 1, 2) table.remove(array, i+1) array[i] = info end i = i + 1 end return array end local block_transform, blocks_to_html, encode_code, span_transform, encode_backslash_escapes -- Find list blocks and convert them to protected data blocks local function lists(array, sublist) local function process_list(arr) local function any_blanks(arr) for i = 1, #arr do if arr[i].type == "blank" then return true end end return false end local function split_list_items(arr) local acc = {arr[1]} local res = {} for i=2,#arr do if arr[i].type == "list_item" then table.insert(res, acc) acc = {arr[i]} else table.insert(acc, arr[i]) end end table.insert(res, acc) return res end local function process_list_item(lines, block) while lines[#lines].type == "blank" do table.remove(lines) end local itemtext = lines[1].text for i=2,#lines do itemtext = itemtext .. "\n" .. outdent(lines[i].line) end if block then itemtext = block_transform(itemtext, true) if not itemtext:find("
") then itemtext = indent(itemtext) end
				return "    
  • " .. itemtext .. "
  • " else local lines = split(itemtext) lines = map(lines, classify) lines = lists(lines, true) lines = blocks_to_html(lines, true) itemtext = table.concat(lines, "\n") if not itemtext:find("
    ") then itemtext = indent(itemtext) end
    				return "    
  • " .. itemtext .. "
  • " end end local block_list = any_blanks(arr) local items = split_list_items(arr) local out = "" for _, item in ipairs(items) do out = out .. process_list_item(item, block_list) .. "\n" end if arr[1].list_type == "numeric" then return "
      \n" .. out .. "
    " else return "
      \n" .. out .. "
    " end end -- Finds the range of lines composing the first list in the array. A list -- starts with (^ list_item) or (blank list_item) and ends with -- (blank* $) or (blank normal). -- -- A sublist can start with just (list_item) does not need a blank... local function find_list(array, sublist) local function find_list_start(array, sublist) if array[1].type == "list_item" then return 1 end if sublist then for i = 1,#array do if array[i].type == "list_item" then return i end end else for i = 1, #array-1 do if array[i].type == "blank" and array[i+1].type == "list_item" then return i+1 end end end return nil end local function find_list_end(array, start) local pos = #array for i = start, #array-1 do if array[i].type == "blank" and array[i+1].type ~= "list_item" and array[i+1].type ~= "indented" and array[i+1].type ~= "blank" then pos = i-1 break end end while pos > start and array[pos].type == "blank" do pos = pos - 1 end return pos end local start = find_list_start(array, sublist) if not start then return nil end return start, find_list_end(array, start) end while true do local start, stop = find_list(array, sublist) if not start then break end local text = process_list(splice(array, start, stop)) local info = { line = text, type = "raw", html = text } array = splice(array, start, stop, {info}) end -- Convert any remaining list items to normal for _,line in ipairs(array) do if line.type == "list_item" then line.type = "normal" end end return array end -- Find and convert blockquote markers. local function blockquotes(lines) local function find_blockquote(lines) local start for i,line in ipairs(lines) do if line.type == "blockquote" then start = i break end end if not start then return nil end local stop = #lines for i = start+1, #lines do if lines[i].type == "blank" or lines[i].type == "blockquote" then elseif lines[i].type == "normal" then if lines[i-1].type == "blank" then stop = i-1 break end else stop = i-1 break end end while lines[stop].type == "blank" do stop = stop - 1 end return start, stop end local function process_blockquote(lines) local raw = lines[1].text for i = 2,#lines do raw = raw .. "\n" .. lines[i].text end local bt = block_transform(raw) if not bt:find("
    ") then bt = indent(bt) end
    		return "
    \n " .. bt .. "\n
    " end while true do local start, stop = find_blockquote(lines) if not start then break end local text = process_blockquote(splice(lines, start, stop)) local info = { line = text, type = "raw", html = text } lines = splice(lines, start, stop, {info}) end return lines end -- Find and convert codeblocks. local function codeblocks(lines) local function find_codeblock(lines) local start for i,line in ipairs(lines) do if line.type == "indented" then start = i break end end if not start then return nil end local stop = #lines for i = start+1, #lines do if lines[i].type ~= "indented" and lines[i].type ~= "blank" then stop = i-1 break end end while lines[stop].type == "blank" do stop = stop - 1 end return start, stop end local function process_codeblock(lines) local raw = detab(encode_code(outdent(lines[1].line))) for i = 2,#lines do raw = raw .. "\n" .. detab(encode_code(outdent(lines[i].line))) end return "
    " .. raw .. "\n
    " end while true do local start, stop = find_codeblock(lines) if not start then break end local text = process_codeblock(splice(lines, start, stop)) local info = { line = text, type = "raw", html = text } lines = splice(lines, start, stop, {info}) end return lines end -- Convert lines to html code function blocks_to_html(lines, no_paragraphs) local out = {} local i = 1 while i <= #lines do local line = lines[i] if line.type == "ruler" then table.insert(out, "
    ") elseif line.type == "raw" then table.insert(out, line.html) elseif line.type == "normal" then local s = line.line while i+1 <= #lines and lines[i+1].type == "normal" do i = i + 1 s = s .. "\n" .. lines[i].line end if no_paragraphs then table.insert(out, span_transform(s)) else table.insert(out, "

    " .. span_transform(s) .. "

    ") end elseif line.type == "header" then local s = "" .. span_transform(line.text) .. "" table.insert(out, s) else table.insert(out, line.line) end i = i + 1 end return out end -- Perform all the block level transforms function block_transform(text, sublist) local lines = split(text) lines = map(lines, classify) lines = headers(lines) lines = lists(lines, sublist) lines = codeblocks(lines) lines = blockquotes(lines) lines = blocks_to_html(lines) local text = table.concat(lines, "\n") return text end -- Debug function for printing a line array to see the result -- of partial transforms. local function print_lines(lines) for i, line in ipairs(lines) do print(i, line.type, line.text or line.line) end end ---------------------------------------------------------------------- -- Span transform ---------------------------------------------------------------------- -- Functions for transforming the text at the span level. -- These characters may need to be escaped because they have a special -- meaning in markdown. local escape_chars = "'\\`*_{}[]()>#+-.!'" local escape_table = {} local function init_escape_table() escape_table = {} for i = 1,#escape_chars do local c = escape_chars:sub(i,i) escape_table[c] = hash(c) end end -- Adds a new escape to the escape table. local function add_escape(text) if not escape_table[text] then escape_table[text] = hash(text) end return escape_table[text] end -- Escape characters that should not be disturbed by markdown. local function escape_special_chars(text) local tokens = tokenize_html(text) local out = "" for _, token in ipairs(tokens) do local t = token.text if token.type == "tag" then -- In tags, encode * and _ so they don't conflict with their use in markdown. t = t:gsub("%*", escape_table["*"]) t = t:gsub("%_", escape_table["_"]) else t = encode_backslash_escapes(t) end out = out .. t end return out end -- Encode backspace-escaped characters in the markdown source. function encode_backslash_escapes(t) for i=1,escape_chars:len() do local c = escape_chars:sub(i,i) t = t:gsub("\\%" .. c, escape_table[c]) end return t end -- Unescape characters that have been encoded. local function unescape_special_chars(t) local tin = t for k,v in pairs(escape_table) do k = k:gsub("%%", "%%%%") t = t:gsub(v,k) end if t ~= tin then t = unescape_special_chars(t) end return t end -- Encode/escape certain characters inside Markdown code runs. -- The point is that in code, these characters are literals, -- and lose their special Markdown meanings. function encode_code(s) s = s:gsub("%&", "&") s = s:gsub("<", "<") s = s:gsub(">", ">") for k,v in pairs(escape_table) do s = s:gsub("%"..k, v) end return s end -- Handle backtick blocks. local function code_spans(s) s = s:gsub("\\\\", escape_table["\\"]) s = s:gsub("\\`", escape_table["`"]) local pos = 1 while true do local start, stop = s:find("`+", pos) if not start then return s end local count = stop - start + 1 -- Find a matching numbert of backticks local estart, estop = s:find(string.rep("`", count), stop+1) local brstart = s:find("\n", stop+1) if estart and (not brstart or estart < brstart) then local code = s:sub(stop+1, estart-1) code = code:gsub("^[ \t]+", "") code = code:gsub("[ \t]+$", "") code = code:gsub(escape_table["\\"], escape_table["\\"] .. escape_table["\\"]) code = code:gsub(escape_table["`"], escape_table["\\"] .. escape_table["`"]) code = "" .. encode_code(code) .. "" code = add_escape(code) s = s:sub(1, start-1) .. code .. s:sub(estop+1) pos = start + code:len() else pos = stop + 1 end end return s end -- Encode alt text... enodes &, and ". local function encode_alt(s) if not s then return s end s = s:gsub('&', '&') s = s:gsub('"', '"') s = s:gsub('<', '<') return s end local link_database -- Handle image references local function images(text) local function reference_link(alt, id) alt = encode_alt(alt:match("%b[]"):sub(2,-2)) id = id:match("%[(.*)%]"):lower() if id == "" then id = text:lower() end link_database[id] = link_database[id] or {} if not link_database[id].url then return nil end local url = link_database[id].url or id url = encode_alt(url) local title = encode_alt(link_database[id].title) if title then title = " title=\"" .. title .. "\"" else title = "" end return add_escape ('' .. alt .. '") end local function inline_link(alt, link) alt = encode_alt(alt:match("%b[]"):sub(2,-2)) local url, title = link:match("%(?[ \t]*['\"](.+)['\"]") url = url or link:match("%(?%)") url = encode_alt(url) title = encode_alt(title) if title then return add_escape('' .. alt .. '') else return add_escape('' .. alt .. '') end end text = text:gsub("!(%b[])[ \t]*\n?[ \t]*(%b[])", reference_link) text = text:gsub("!(%b[])(%b())", inline_link) return text end -- Handle anchor references local function anchors(text) local function reference_link(text, id) text = text:match("%b[]"):sub(2,-2) id = id:match("%b[]"):sub(2,-2):lower() if id == "" then id = text:lower() end link_database[id] = link_database[id] or {} if not link_database[id].url then return nil end local url = link_database[id].url or id url = encode_alt(url) local title = encode_alt(link_database[id].title) if title then title = " title=\"" .. title .. "\"" else title = "" end return add_escape("") .. text .. add_escape("") end local function inline_link(text, link) text = text:match("%b[]"):sub(2,-2) local url, title = link:match("%(?[ \t]*['\"](.+)['\"]") title = encode_alt(title) url = url or link:match("%(?%)") or "" url = encode_alt(url) if title then return add_escape("") .. text .. "" else return add_escape("") .. text .. add_escape("") end end text = text:gsub("(%b[])[ \t]*\n?[ \t]*(%b[])", reference_link) text = text:gsub("(%b[])(%b())", inline_link) return text end -- Handle auto links, i.e. . local function auto_links(text) local function link(s) return add_escape("") .. s .. "" end -- Encode chars as a mix of dec and hex entitites to (perhaps) fool -- spambots. local function encode_email_address(s) -- Use a deterministic encoding to make unit testing possible. -- Code 45% hex, 45% dec, 10% plain. local hex = {code = function(c) return "&#x" .. string.format("%x", c:byte()) .. ";" end, count = 1, rate = 0.45} local dec = {code = function(c) return "&#" .. c:byte() .. ";" end, count = 0, rate = 0.45} local plain = {code = function(c) return c end, count = 0, rate = 0.1} local codes = {hex, dec, plain} local function swap(t,k1,k2) local temp = t[k2] t[k2] = t[k1] t[k1] = temp end local out = "" for i = 1,s:len() do for _,code in ipairs(codes) do code.count = code.count + code.rate end if codes[1].count < codes[2].count then swap(codes,1,2) end if codes[2].count < codes[3].count then swap(codes,2,3) end if codes[1].count < codes[2].count then swap(codes,1,2) end local code = codes[1] local c = s:sub(i,i) -- Force encoding of "@" to make email address more invisible. if c == "@" and code == plain then code = codes[2] end out = out .. code.code(c) code.count = code.count - 1 end return out end local function mail(s) s = unescape_special_chars(s) local address = encode_email_address("mailto:" .. s) local text = encode_email_address(s) return add_escape("") .. text .. "" end -- links text = text:gsub("<(https?:[^'\">%s]+)>", link) text = text:gsub("<(ftp:[^'\">%s]+)>", link) -- mail text = text:gsub("%s]+)>", mail) text = text:gsub("<([-.%w]+%@[-.%w]+)>", mail) return text end -- Encode free standing amps (&) and angles (<)... note that this does not -- encode free >. local function amps_and_angles(s) -- encode amps not part of &..; expression local pos = 1 while true do local amp = s:find("&", pos) if not amp then break end local semi = s:find(";", amp+1) local stop = s:find("[ \t\n&]", amp+1) if not semi or (stop and stop < semi) or (semi - amp) > 15 then s = s:sub(1,amp-1) .. "&" .. s:sub(amp+1) pos = amp+1 else pos = amp+1 end end -- encode naked <'s s = s:gsub("<([^a-zA-Z/?$!])", "<%1") s = s:gsub("<$", "<") -- what about >, nothing done in the original markdown source to handle them return s end -- Handles emphasis markers (* and _) in the text. local function emphasis(text) for _, s in ipairs {"%*%*", "%_%_"} do text = text:gsub(s .. "([^%s][%*%_]?)" .. s, "%1") text = text:gsub(s .. "([^%s][^<>]-[^%s][%*%_]?)" .. s, "%1") end for _, s in ipairs {"%*", "%_"} do text = text:gsub(s .. "([^%s_])" .. s, "%1") text = text:gsub(s .. "([^%s_])" .. s, "%1") text = text:gsub(s .. "([^%s_][^<>_]-[^%s_])" .. s, "%1") text = text:gsub(s .. "([^<>_]-[^<>_]-[^<>_]-)" .. s, "%1") end return text end -- Handles line break markers in the text. local function line_breaks(text) return text:gsub(" +\n", "
    \n") end -- Perform all span level transforms. function span_transform(text) text = code_spans(text) text = escape_special_chars(text) text = images(text) text = anchors(text) text = auto_links(text) text = amps_and_angles(text) text = emphasis(text) text = line_breaks(text) return text end ---------------------------------------------------------------------- -- Markdown ---------------------------------------------------------------------- -- Cleanup the text by normalizing some possible variations to make further -- processing easier. local function cleanup(text) -- Standardize line endings text = text:gsub("\r\n", "\n") -- DOS to UNIX text = text:gsub("\r", "\n") -- Mac to UNIX -- Convert all tabs to spaces text = detab(text) -- Strip lines with only spaces and tabs while true do local subs text, subs = text:gsub("\n[ \t]+\n", "\n\n") if subs == 0 then break end end return "\n" .. text .. "\n" end -- Strips link definitions from the text and stores the data in a lookup table. local function strip_link_definitions(text) local linkdb = {} local function link_def(id, url, title) id = id:match("%[(.+)%]"):lower() linkdb[id] = linkdb[id] or {} linkdb[id].url = url or linkdb[id].url linkdb[id].title = title or linkdb[id].title return "" end local def_no_title = "\n ? ? ?(%b[]):[ \t]*\n?[ \t]*]+)>?[ \t]*" local def_title1 = def_no_title .. "[ \t]+\n?[ \t]*[\"'(]([^\n]+)[\"')][ \t]*" local def_title2 = def_no_title .. "[ \t]*\n[ \t]*[\"'(]([^\n]+)[\"')][ \t]*" local def_title3 = def_no_title .. "[ \t]*\n?[ \t]+[\"'(]([^\n]+)[\"')][ \t]*" text = text:gsub(def_title1, link_def) text = text:gsub(def_title2, link_def) text = text:gsub(def_title3, link_def) text = text:gsub(def_no_title, link_def) return text, linkdb end link_database = {} -- Main markdown processing function local function markdown(text) init_hash(text) init_escape_table() text = cleanup(text) text = protect(text) text, link_database = strip_link_definitions(text) text = block_transform(text) text = unescape_special_chars(text) return text end ---------------------------------------------------------------------- -- End of module ---------------------------------------------------------------------- M.lock(M) -- Expose markdown function to the world _G.markdown = M.markdown -- Class for parsing command-line options local OptionParser = {} OptionParser.__index = OptionParser -- Creates a new option parser function OptionParser:new() local o = {short = {}, long = {}} setmetatable(o, self) return o end -- Calls f() whenever a flag with specified short and long name is encountered function OptionParser:flag(short, long, f) local info = {type = "flag", f = f} if short then self.short[short] = info end if long then self.long[long] = info end end -- Calls f(param) whenever a parameter flag with specified short and long name is encountered function OptionParser:param(short, long, f) local info = {type = "param", f = f} if short then self.short[short] = info end if long then self.long[long] = info end end -- Calls f(v) for each non-flag argument function OptionParser:arg(f) self.arg = f end -- Runs the option parser for the specified set of arguments. Returns true if all arguments -- where successfully parsed and false otherwise. function OptionParser:run(args) local pos = 1 local param while pos <= #args do local arg = args[pos] if arg == "--" then for i=pos+1,#args do if self.arg then self.arg(args[i]) end return true end end if arg:match("^%-%-") then local info = self.long[arg:sub(3)] if not info then print("Unknown flag: " .. arg) return false end if info.type == "flag" then info.f() pos = pos + 1 else param = args[pos+1] if not param then print("No parameter for flag: " .. arg) return false end info.f(param) pos = pos+2 end elseif arg:match("^%-") then for i=2,arg:len() do local c = arg:sub(i,i) local info = self.short[c] if not info then print("Unknown flag: -" .. c) return false end if info.type == "flag" then info.f() else if i == arg:len() then param = args[pos+1] if not param then print("No parameter for flag: -" .. c) return false end info.f(param) pos = pos + 1 else param = arg:sub(i+1) info.f(param) end break end end pos = pos + 1 else if self.arg then self.arg(arg) end pos = pos + 1 end end return true end -- Handles the case when markdown is run from the command line local function run_command_line(arg) -- Generate output for input s given options local function run(s, options) s = markdown(s) if not options.wrap_header then return s end local header = "" if options.header then local f = io.open(options.header) or error("Could not open file: " .. options.header) header = f:read("*a") f:close() else header = [[ TITLE ]] local title = options.title or s:match("

    (.-)

    ") or s:match("

    (.-)

    ") or s:match("

    (.-)

    ") or "Untitled" header = header:gsub("TITLE", title) if options.inline_style then local style = "" local f = io.open(options.stylesheet) if f then style = f:read("*a") f:close() else error("Could not include style sheet " .. options.stylesheet .. ": File not found") end header = header:gsub('', "") else header = header:gsub("STYLESHEET", options.stylesheet) end header = header:gsub("CHARSET", options.charset) end local footer = "" if options.footer then local f = io.open(options.footer) or error("Could not open file: " .. options.footer) footer = f:read("*a") f:close() end return header .. s .. footer end -- Generate output path name from input path name given options. local function outpath(path, options) if options.append then return path .. ".html" end local m = path:match("^(.+%.html)[^/\\]+$") if m then return m end m = path:match("^(.+%.)[^/\\]*$") if m and path ~= m .. "html" then return m .. "html" end return path .. ".html" end -- Default commandline options local options = { wrap_header = true, header = nil, footer = nil, charset = "utf-8", title = nil, stylesheet = "default.css", inline_style = false } local help = [[ Usage: markdown.lua [OPTION] [FILE] Runs the markdown text markup to HTML converter on each file specified on the command line. If no files are specified, runs on standard input. No header: -n, --no-wrap Don't wrap the output in ... tags. Custom header: -e, --header FILE Use content of FILE for header. -f, --footer FILE Use content of FILE for footer. Generated header: -c, --charset SET Specifies charset (default utf-8). -i, --title TITLE Specifies title (default from first

    tag). -s, --style STYLE Specifies style sheet file (default default.css). -l, --inline-style Include the style sheet file inline in the header. Generated files: -a, --append Append .html extension (instead of replacing). Other options: -h, --help Print this help text. -t, --test Run the unit tests. ]] local run_stdin = true local op = OptionParser:new() op:flag("n", "no-wrap", function () options.wrap_header = false end) op:param("e", "header", function (x) options.header = x end) op:param("f", "footer", function (x) options.footer = x end) op:param("c", "charset", function (x) options.charset = x end) op:param("i", "title", function(x) options.title = x end) op:param("s", "style", function(x) options.stylesheet = x end) op:flag("l", "inline-style", function(x) options.inline_style = true end) op:flag("a", "append", function() options.append = true end) op:flag("t", "test", function() local n = arg[0]:gsub("markdown.lua", "markdown-tests.lua") local f = io.open(n) if f then f:close() dofile(n) else error("Cannot find markdown-tests.lua") end run_stdin = false end) op:flag("h", "help", function() print(help) run_stdin = false end) op:arg(function(path) local file = io.open(path) or error("Could not open file: " .. path) local s = file:read("*a") file:close() s = run(s, options) file = io.open(outpath(path, options), "w") or error("Could not open output file: " .. outpath(path, options)) file:write(s) file:close() run_stdin = false end ) if not op:run(arg) then print(help) run_stdin = false end if run_stdin then local s = io.read("*a") s = run(s, options) io.write(s) end end -- If we are being run from the command-line, act accordingly if arg and arg[0]:find("markdown%.lua$") then run_command_line(arg) else return markdown end lua-orbit-2.2.1+dfsg/doc/us/orbit.png000066400000000000000000000066571227340735500174000ustar00rootroot00000000000000PNG  IHDR>abKGD pHYsctEXtSoftwareESP Ghostscript 815.01̬ $IDATx-8wz t]8 i`v˜k]ֆ{l J,r{y3q;WT_ʲLeQgQgQgQgQgQgQgQgQoS)?ӏc5!1: dyw]g{Vةv@7 y s9RX}L ĵOdGN089[k 7!w_l )??܋sB0r*|ae!mDW|_C*ttF Ęh. 0`_샲6TS@B Rؽ}G~ FE YX;2 F {2oU_𦒇`\>Vsh2'dSD`GI}+tpNne<>xvjc8*լ1r0pop2uI 1-:e1ך<*VU3ɖ&]#ZR˒=\8X5L)صM e ؇8GyT Msos)ér ,oyJ2Ya\*@' !&9 ?zaE[4/,6.-|nnWAmNc?#[e<`ᳲ ۿݶWP*\(,j [V0綷ך*+;[ژT(U}?h6тLkAK 'S+^xȯzݚ>г` Ǵ"ׄf^m:fC&1\".pM˽%i+-Ŏ  ?P|ΨDQdKEĻe]uL[y}mz q0Qp~icfVFNrk*c4l0@}<3Z{Sc,eL1U̬34}SL *!  Ei)A{;͍.pfNW;LʵX>VUe`wPSSqh Ή*KI-S:SG=NÝ>E_*I+y@E0ZGy 5W۷nr gбrEN&uau￘ZP|97kdߛ|TNz5+3ձ&|S%^VURZ]wSӀkvB'AFσk 65+y%J8ZoTzP^/ݜ[dYWZl#0o'm8;n#3 @g(3 ߔpvѝG'L|4:~I n߇Wʛp_gN[ȴМTMo2mPɉF:{TH T廻PaWUS8>9gG=G?0"il5  ޳^Ĺʃz6^<(=qkuPN瞚=TwpȘ gx+1iYj-Óɟ7'F87v 3|R+0LbzU)2r$'P @8*ڻZYKr#=#tA @iKH♌]97ѯ@0}rp39@!O&?.XH[v g[oPzS0G}+ FOT%M0.'Ϊw`DzTKԡ@ow[Kh4܂cd*|XQGfm(Kv e N&[2{ ={z@\WH  :#j| +[{y1ZQ'xQ,-Kvy AU֋h* EQ=<& Ah؊h 9p9P"PPdF9BioSUe4rR7&`!b셨)DihosQ@rd#h*tj "26) AݛVwF*sɅ ^UT\ Z#m1 0064m3W g,Z Y ^@F?N8ɴ=sv~уMXADx2@gS58 ҦAN!&|!*W5pC_QËW y"6tk!{ȁg2l-EsRbȔ}G Qˈ3)@BAOddb ݜf]eX 4=mt Twqm CjEÊ 7s}U^2e~Ae>J2 +AlP&k÷BPAj%BadaUWYY?[Z3IENDB`lua-orbit-2.2.1+dfsg/doc/us/pages.html000066400000000000000000000125711227340735500175300ustar00rootroot00000000000000 Orbit
    Orbit
    MVC for Lua Web Development

    Orbit Pages

    Orbit Pages is a PHP-like programming environment built on top of Orbit. Orbit pages are HTML pages (but using the extension .op in a typical Orbit installation) that get dynamically converted into Orbit apps. They are launched by the op.cgi, op.fcgi and ophandler.lua launchers, for CGI, FastCGI, and Xavante, respectively. A standard Kepler installation includes support for Orbit pages by default.

    An Orbit page is also a template that uses the Cosmo template language. The environment of this template is a sandbox that wraps the global environment and is recreated on each request. The main variable in this environment is the web variable, which is an Orbit request/response object. Other variables of note:

    mapper - an instance of the default Orbit ORM

    model(name, dao) - same as mapper:new(name, dao), except that if name is a tabel then calls mapper:new(name[1], name[2]), so you can use this in the template as $model{ name, dao }

    app - the application's global environment, to be used as a session cache (for DB connections, for example) for persistent launchers

    finish(res) - suspends the execution of the current page, and sends res as a response instead of the page's contents

    redirect(target) - same as web:redirect(target) followed by finish(). If target is a table does web:redirect(target[1]), so you can use this in the template as $redirect{ target }

    include(page, [env]) - evaluates the Orbit page in the file page (relative to the current page's path), optionally using the extra variables in env in the template's environment. Can also be used in the template as $include{ page, env }

    forward(page, [env]) - aborts the execution of the current page and evaluates and sends the page in file page instead; otherwise same as include

    There also a few more variables that should be used only in the template:

    $lua{ code } - runs code in the same environment as the page, so code can change the template's variables and even define new ones

    $if{ condition }[[ then-part ]],[[ else-part ]] - if condition is true then is replaced by the template evaluation of then-part, otherwise else-part. else-part is optional, defaulting to blank

    $fill{ ... }[[ template ]] - replaced by the evaluation of template using the environment passed to fill (template does not inherit the variables of the page)

    Below is a very simple Orbit page that shows most of the concepts above (including Cosmo concepts, see the Cosmo documentation for that):

        #!/usr/bin/env op.cgi
        <html>
        <body>
        <p>Hello Orbit!</p>
        <p>I am in $web|real_path, and the script is
        $web|script_name.</p>
        $lua{[[
          if not web.input.msg then
            web.input.msg = "nothing"
          end
        ]]}
        <p>You passed: $web|input|msg.</p>
        $include{ "bar.op" }
        </body>
        </html>
    

    The bar.op page it includes is this:

        #!/usr/bin/env op.cgi
        <p>This is bar, and you passed $web|input|msg!</p>
    

    The Kepler distribution has a more complete example that has database access, POST, and even some simple AJAX.

    lua-orbit-2.2.1+dfsg/doc/us/pages.md000066400000000000000000000063421227340735500171630ustar00rootroot00000000000000## Orbit Pages Orbit Pages is a PHP-like programming environment built on top of Orbit. Orbit pages are HTML pages (but using the extension .op in a typical Orbit installation) that get dynamically converted into Orbit apps. They are launched by the op.cgi, op.fcgi and ophandler.lua launchers, for CGI, FastCGI, and Xavante, respectively. A standard Kepler installation includes support for Orbit pages by default. An Orbit page is also a template that uses the [Cosmo](http://cosmo.luaforge.net) template language. The environment of this template is a sandbox that wraps the global environment and is recreated on each request. The main variable in this environment is the `web` variable, which is an Orbit request/response object. Other variables of note: **mapper** - an instance of the default Orbit ORM **model(*name*, *dao*)** - same as mapper:new(*name*, *dao*), except that if *name* is a tabel then calls mapper:new(*name[1]*, *name[2]*), so you can use this in the template as `$model{ name, dao }` **app** - the application's global environment, to be used as a session cache (for DB connections, for example) for persistent launchers **finish(*res*)** - suspends the execution of the current page, and sends *res* as a response **instead** of the page's contents **redirect(*target*)** - same as web:redirect(*target*) followed by finish(). If *target* is a table does web:redirect(*target[1]*), so you can use this in the template as `$redirect{ target }` **include(*page*, [*env*])** - evaluates the Orbit page in the file *page* (relative to the current page's path), optionally using the extra variables in *env* in the template's environment. Can also be used in the template as `$include{ page, env }` **forward(*page*, [*env*])** - aborts the execution of the current page and evaluates and sends the page in file *page* instead; otherwise same as **include** There also a few more variables that should be used only in the template: **$lua{ *code* }** - runs *code* in the same environment as the page, so *code* can change the template's variables and even define new ones **$if{ *condition* }[[ *then-part* ]],[[ *else-part* ]]** - if *condition* is true then is replaced by the template evaluation of *then-part*, otherwise *else-part*. *else-part* is optional, defaulting to blank **$fill{ ... }[[ *template* ]]** - replaced by the evaluation of *template* using the environment passed to fill (*template* does **not** inherit the variables of the page) Below is a very simple Orbit page that shows most of the concepts above (including Cosmo concepts, see the Cosmo documentation for that): #!/usr/bin/env op.cgi

    Hello Orbit!

    I am in $web|real_path, and the script is $web|script_name.

    $lua{[[ if not web.input.msg then web.input.msg = "nothing" end ]]}

    You passed: $web|input|msg.

    $include{ "bar.op" } The `bar.op` page it includes is this: #!/usr/bin/env op.cgi

    This is bar, and you passed $web|input|msg!

    The [Kepler](http://www.keplerproject.org) distribution has a more complete example that has database access, POST, and even some simple AJAX. lua-orbit-2.2.1+dfsg/doc/us/reference.html000066400000000000000000000354241227340735500203710ustar00rootroot00000000000000 Orbit
    Orbit
    MVC for Lua Web Development

    Reference Manual

    This is a short reference of all of Orbit's (and Orbit apps) methods.

    Module orbit

    orbit.new([app]) - creates a new Orbit application, returning it (as a module). If app is a string this is the application's name, and sets field _NAME. If app is a table it is used instead of a fresh table. This means you can pass orbit.new to the module function

    orbit.htmlify(func[, func...]) - modifies the environment of func to include functions that generate HTML

    Orbit apps

    app.run(wsapi_env) - WSAPI entry point for application, generated by Orbit

    app.real_path - the root of the application in the filesystem, defaults to the path inferred by WSAPI launchers (wsapi.app\_path), but can be overridden

    app.mapper - mapper used by app:model, defaults to an instance of orbit.model, but can be overridden

    app.not_found - default handler, sends a 404 response to the client, can be overridden. The handler receives a web object

    app.server_error - error handler, sends a 500 response with stack trace to the client, can be overridden. The handler receives a web object

    app:dispatch_get(func, patt[, patt...]) - installs func as a GET handler for the patterns patt. func receives a web object and the captures; this handler should return the contents of the response or app.reparse if you want to hand control back to the dispatcher and let it continue matching;

    app:dispatch_post(func, patt[, patt...]) - installs func as a POST handler for the patterns patt. func receives a web object and the captures; this handler should return the contents of the response or app.reparse if you want to hand control back to the dispatcher and let it continue matching;

    app:dispatch_put(func, patt[, patt...]) - installs func as a PUT handler for the patterns patt. func receives a web object and the captures; this handler should return the contents of the response or app.reparse if you want to hand control back to the dispatcher and let it continue matching;

    app:dispatch_delete(func, patt[, patt...]) - installs func as a DELETE handler for the patterns patt. func receives a web object and the captures; this handler should return the contents of the response or app.reparse if you want to hand control back to the dispatcher and let it continue matching;

    app:dispatch_wsapi(func, patt[, patt...]) - installs func as a WSAPI handler for the patterns patt. func receives the unmodified WSAPI environment

    app:dispatch_static(patt[, patt...]) - installs a static files handler for the patterns patt. This handler assumes the PATH_INFO is a file relative to app.real_path and sends it to the client. The MIME type is detected from the extension (default application/octec-stream)

    app:serve_static(web, filename) - returns the content of file filename (which can be anywhere in the filesystem), while setting the appropriate headers with the file's MIME type

    app:htmlify(patt[, patt...]) - same as orbit.htmlify, but changes all of the app's module functions that match the patterns patt

    app:model(...) - calls app.mapper:new(...), so the behaviour depends on the mapper you are using

    web methods

    The web objects inherit the functions of module wsapi.util as methods.

    web.status - status to be sent to server (default: "200 Ok")

    web.headers - headers to be sent to server, a Lua table (default has Content-Type as text/html)

    web.response - body to send to the server (default is blank)

    web.vars - original WSAPI environment

    web.prefix - app's prefix (if set in the app's module) or SCRIPT_NAME

    web.suffix - app's suffix (if set in the app's module)

    web.real_path - location of app in filesystem, taken from wsapi_env.APP_PATH, or app's module real_path, or "."

    web.doc_root, web.path_info, web.script_name, web.path_translated, web.method - server's document root, PATH_INFO, SCRIPT_NAME, PATH_TRANSLATED, and REQUEST_METHOD (converted to lowercase)

    web.GET, web.POST - GET and POST variables

    web.input - union of web.GET and web.POST

    web.cookies - cookies sent by the browser

    web:set_cookie(name, value) - sets a cookie to be sent back to browser

    web:delete_cookie(name) - deletes a cookie

    web:redirect(url) - sets status and headers to redirect to url

    web:link(part, [params]) - creates intra-app link, using web.prefix and web.suffix, and encoding params as a query string

    web:static_link(part) - if app's entry point is a script, instead of path, creates a link to the app's vpath (e.g. if app.prefix is /foo/app.ws creates a link in /foo/part), otherwise same as web:link

    web:empty(s) - returns true if s is nil or an empty string (zero or more spaces)

    web:content_type(s) - sets the content type of the reponse to s

    web:empty_param(name) - returns true if input parameter name is empty (as web:empty)

    web:page(name, [env]) - loads and renders Orbit page called name. If name starts with / it's relative to the document root, otherwise it's relative to the app's path. Returns rendered page. env is an optional environment with extra variables.

    web:page_inline(contents, [env]) - renders an inline Orbit page

    Module orbit.cache

    orbit.cache.new(app, [base_path]) - creates a page cache for app, either in memory or at the filesystem path base_path (not relative to the app's path!), returns the cache object

    a_cache(handler) - caches handler, returning a new handler; uses the PATH_INFO as a key to the cache

    a_cache:get(key) - gets value stored in key; usually not used, use the previous function instead

    a_cache:set(key, val) - stores a value in the cache; use a_cache(handler) to encapsulate this behaviour

    a_cache:invalidate(key) - invalidates a cache value

    a_cache:nuke() - clears the cache

    Module orbit.model

    orbit.model.new([table_prefix], [conn], [driver], [logging]) - creates a new ORM mapper. table_prefix (default "") is a string added to the start of model names to get table names; conn is the database connection (can be set later); driver is the kind of database (currently "sqlite3", the default, and "mysql"); logging sets whether you want logging of all queries to io.stderr. Returns a mapper instance, and all the parameters can be set after this instance is created (via a_mapper.table_prefix, a_mapper.conn, a_mapper.driver, and a_mapper.logging)

    orbit.model.recycle(conn_builder, timeout) - creates a connection using conn_builder, a function that takes no arguments, and wraps it so a new connection is automatically reopened every timeout seconds

    a_mapper:new(name, [tab]) - creates a new model object; name is used together with a_mapper.table_prefix to form the DB table's name; fields and types are introspected from the table. tab is an optional table that is used as the basis for the model object if present

    a_model.model - the mapper for this model

    a_model.name, a_model.table_name - the name of the model and its backing table

    a_model.driver - the DB driver used

    a_model.meta - metainformation about the model, introspected from the table

    a_model:find(id) - finds and returns the instance of the model with the passed id (keyed using the id column of the table (must be numeric)

    a_model:find_first(condition, args) - finds and returns the first instance of the model that matches condition; args can determine the order (args.order), specify which fields should be returned (args.fields, default is all of them), and inject fields from other tables (args.inject)

    Example: books:find_first("author = ? and year_pub > ?", { "John Doe", 1995, order = "year_pub asc" })

    a_model:find_all(condition, args) - finds and returns all instances of the model that matches condition; args can determine the order (args.order), specify which fields should be returned (args.fields, default is all of them), limit the number of returned rows (args.count), return only distinct rows (args.distinct), and inject fields from other tables (args.inject)

    Example: books:find_all("author = ? and year_pub > ?", { "John Doe", 1995, order = "year_pub asc", count = 5, fields = { "id", "title" } })

    a_model:new([tab]) - creates a fresh instance of the model, optionally using tab as initial values

    a_model:find_by_xxx(args) - finds and returns the first instance of the model building the condition from the method name, a la Rails' ActiveRecord; args works the same way as in find_first, above

    a_model:find_all_by_xxx(args) - finds and returns all instances of the model building the condition from the method name, a la Rails' ActiveRecord; args works the same way as in find_all, above

    Example: books:find_all_by_author_or_author{ "John Doe", "Jane Doe", order = "year_pub asc" }

    an_instance:save([force_insert]) - saves an instance to the DB, commiting changes or creating the backing record if the instance is new; if force_insert is true always do an insert instead of an update

    If there's a row called created_at this row is set to the creation date of the record; if there's a row called updated_at this row is set to the last update's date.

    an_instance:delete() - deletes an instance from the DB

    Module orbit.routes

    This module has a single function, R, and you can also call the module itself. This function takes a PATH_INFO pattern where the path segments (the parts of the path separated by / or .) can be named parameters (:name), splats (*), optional parameters (?:name?), or literals, and returns a pattern.

    A pattern is an object with two methods:

    patt:match(str) - tries to match str and returns a hash of named parameters; splats are returned in a splat array inside this hash.

    patt:build(params) - builds the original pattern string from a hash of named parameters

    Some examples of patterns, what they match, and the parameter hashes:

    • '/foo', matches '/foo', empty hash
    • '/foo/:bar/baz' matches '/foo/orbit/baz' or '/foo/xxx.yyy/baz' with hashes { bar = 'orbit' } and { bar = 'xxx.yyy' }
    • '/:name.:ext' matches '/xxx.yyy' or '/filename.ext' with hashes { name = 'xxx', ext = 'yyy' } and { name = 'filename', ext = 'ext' }
    • '//foo/' matches '/bar/foo' or '/bar/foo/bling/baz/boom' with hashes { splat = { 'bar' } } and { splat = { 'bar', 'bling/baz/boom' } }
    • '/?:foo?/?:bar?' matches '/' or '/orbit' or '/orbit/routes' with hashes {} and { foo = 'orbit' } and { foo = 'orbit', bar = 'routes' }

    And several more, see test/test_routes.lua for a comprehensive test suite.

    lua-orbit-2.2.1+dfsg/doc/us/reference.md000066400000000000000000000253201227340735500200170ustar00rootroot00000000000000## Reference Manual This is a short reference of all of Orbit's (and Orbit apps) methods. ## Module `orbit` **orbit.new([*app*])** - creates a new Orbit application, returning it (as a module). If *app* is a string this is the application's name, and sets field \_NAME. If *app* is a table it is used instead of a fresh table. This means you can pass `orbit.new` to the `module` function **orbit.htmlify(*func*[, *func*...])** - modifies the environment of *func* to include functions that generate HTML ## Orbit apps **app.run(*wsapi\_env*)** - WSAPI entry point for application, generated by Orbit **app.real\_path** - the root of the application in the filesystem, defaults to the path inferred by WSAPI launchers (`wsapi.app\_path`), but can be overridden **app.mapper** - mapper used by `app:model`, defaults to an instance of `orbit.model`, but can be overridden **app.not\_found** - default handler, sends a 404 response to the client, can be overridden. The handler receives a `web` object **app.server\_error** - error handler, sends a 500 response with stack trace to the client, can be overridden. The handler receives a `web` object **app:dispatch\_get(*func*, *patt*[, *patt*...])** - installs *func* as a GET handler for the patterns *patt*. *func* receives a `web` object and the captures; this handler should return the contents of the response or **app.reparse** if you want to hand control back to the dispatcher and let it continue matching; **app:dispatch\_post(*func*, *patt*[, *patt*...])** - installs *func* as a POST handler for the patterns *patt*. *func* receives a `web` object and the captures; this handler should return the contents of the response or **app.reparse** if you want to hand control back to the dispatcher and let it continue matching; **app:dispatch\_put(*func*, *patt*[, *patt*...])** - installs *func* as a PUT handler for the patterns *patt*. *func* receives a `web` object and the captures; this handler should return the contents of the response or **app.reparse** if you want to hand control back to the dispatcher and let it continue matching; **app:dispatch\_delete(*func*, *patt*[, *patt*...])** - installs *func* as a DELETE handler for the patterns *patt*. *func* receives a `web` object and the captures; this handler should return the contents of the response or **app.reparse** if you want to hand control back to the dispatcher and let it continue matching; **app:dispatch\_wsapi(*func*, *patt*[, *patt*...])** - installs *func* as a WSAPI handler for the patterns *patt*. *func* receives the unmodified WSAPI environment **app:dispatch\_static(*patt*[, *patt*...])** - installs a static files handler for the patterns *patt*. This handler assumes the PATH\_INFO is a file relative to `app.real_path` and sends it to the client. The MIME type is detected from the extension (default application/octec-stream) **app:serve\_static(*web*, *filename*)** - returns the content of file *filename* (which can be anywhere in the filesystem), while setting the appropriate headers with the file's MIME type **app:htmlify(*patt*[, *patt*...])** - same as `orbit.htmlify`, but changes all of the app's module functions that match the patterns *patt* **app:model(...)** - calls `app.mapper:new(...)`, so the behaviour depends on the mapper you are using ## `web` methods The *web* objects inherit the functions of module `wsapi.util` as methods. **web.status** - status to be sent to server (default: "200 Ok") **web.headers** - headers to be sent to server, a Lua table (default has Content-Type as text/html) **web.response** - body to send to the server (default is blank) **web.vars** - original WSAPI environment **web.prefix** - app's prefix (if set in the app's module) or SCRIPT\_NAME **web.suffix** - app's suffix (if set in the app's module) **web.real\_path** - location of app in filesystem, taken from wsapi\_env.APP\_PATH, or app's module real\_path, or "." **web.doc\_root, web.path\_info, web.script\_name, web.path\_translated, web.method** - server's document root, PATH\_INFO, SCRIPT\_NAME, PATH\_TRANSLATED, and REQUEST\_METHOD (converted to lowercase) **web.GET, web.POST** - GET and POST variables **web.input** - union of web.GET and web.POST **web.cookies** - cookies sent by the browser **web:set\_cookie(*name*, *value*)** - sets a cookie to be sent back to browser **web:delete\_cookie(*name*)** - deletes a cookie **web:redirect(*url*)** - sets status and headers to redirect to *url* **web:link(*part*, [*params*])** - creates intra-app link, using web.prefix and web.suffix, and encoding *params* as a query string **web:static\_link(*part*)** - if app's entry point is a script, instead of path, creates a link to the app's vpath (e.g. if app.prefix is /foo/app.ws creates a link in /foo/*part*), otherwise same as web:link **web:empty(*s*)** - returns true if *s* is nil or an empty string (zero or more spaces) **web:content\_type(*s*)** - sets the content type of the reponse to *s* **web:empty\_param(*name*)** - returns true if input parameter *name* is empty (as web:empty) **web:page(*name*, [*env*])** - loads and renders Orbit page called *name*. If *name* starts with / it's relative to the document root, otherwise it's relative to the app's path. Returns rendered page. *env* is an optional environment with extra variables. **web:page_inline(*contents*, [*env*])** - renders an inline Orbit page ## Module `orbit.cache` **orbit.cache.new(*app*, [*base\_path*])** - creates a page cache for *app*, either in memory or at the filesystem path *base\_path* (**not** relative to the app's path!), returns the cache object **a\_cache(*handler*)** - caches *handler*, returning a new handler; uses the PATH\_INFO as a key to the cache **a\_cache:get(*key*)** - gets value stored in *key*; usually not used, use the previous function instead **a\_cache:set(*key*, *val*)** - stores a value in the cache; use a\_cache(*handler*) to encapsulate this behaviour **a\_cache:invalidate(*key*)** - invalidates a cache value **a\_cache:nuke()** - clears the cache ## Module `orbit.model` **orbit.model.new([*table\_prefix*], [*conn*], [*driver*], [*logging*])** - creates a new ORM mapper. *table\_prefix* (default "") is a string added to the start of model names to get table names; *conn* is the database connection (can be set later); *driver* is the kind of database (currently "sqlite3", the default, and "mysql"); *logging* sets whether you want logging of all queries to `io.stderr`. Returns a mapper instance, and all the parameters can be set after this instance is created (via a\_mapper.table\_prefix, a\_mapper.conn, a\_mapper.driver, and a\_mapper.logging) **orbit.model.recycle(*conn\_builder*, *timeout*)** - creates a connection using *conn\_builder*, a function that takes no arguments, and wraps it so a new connection is automatically reopened every *timeout* seconds **a\_mapper:new(*name*, [*tab*])** - creates a new model object; *name* is used together with a\_mapper.table\_prefix to form the DB table's name; fields and types are introspected from the table. *tab* is an optional table that is used as the basis for the model object if present **a\_model.model** - the mapper for this model **a\_model.name, a\_model.table\_name** - the name of the model and its backing table **a\_model.driver** - the DB driver used **a\_model.meta** - metainformation about the model, introspected from the table **a\_model:find(*id*)** - finds and returns the instance of the model with the passed *id* (keyed using the `id` column of the table (must be numeric) **a\_model:find\_first(*condition*, *args*)** - finds and returns the first instance of the model that matches *condition*; *args* can determine the order (args.order), specify which fields should be returned (args.fields, default is all of them), and inject fields from other tables (args.inject) Example: `books:find_first("author = ? and year_pub > ?", { "John Doe", 1995, order = "year_pub asc" })` **a\_model:find\_all(*condition*, *args*)** - finds and returns all instances of the model that matches *condition*; *args* can determine the order (args.order), specify which fields should be returned (args.fields, default is all of them), limit the number of returned rows (args.count), return only distinct rows (args.distinct), and inject fields from other tables (args.inject) Example: `books:find_all("author = ? and year_pub > ?", { "John Doe", 1995, order = "year_pub asc", count = 5, fields = { "id", "title" } })` **a\_model:new([*tab*])** - creates a fresh instance of the model, optionally using *tab* as initial values **a\_model:find\_by\_xxx(*args*)** - finds and returns the first instance of the model building the condition from the method name, a la Rails' ActiveRecord; *args* works the same way as in **find\_first**, above **a\_model:find\_all\_by\_xxx(*args*)** - finds and returns all instances of the model building the condition from the method name, a la Rails' ActiveRecord; *args* works the same way as in **find\_all**, above Example: `books:find_all_by_author_or_author{ "John Doe", "Jane Doe", order = "year_pub asc" }` **an\_instance:save([*force\_insert*])** - saves an instance to the DB, commiting changes or creating the backing record if the instance is new; if *force\_insert* is true always do an insert instead of an update If there's a row called `created_at` this row is set to the creation date of the record; if there's a row called `updated_at` this row is set to the last update's date. **an\_instance:delete()** - deletes an instance from the DB ## Module `orbit.routes` This module has a single function, **R**, and you can also call the module itself. This function takes a PATH\_INFO pattern where the path segments (the parts of the path separated by `/` or `.`) can be named parameters (`:name`), *splats* (\*), optional parameters (`?:name?`), or literals, and returns a pattern. A pattern is an object with two methods: **patt:match(*str*)** - tries to match *str* and returns a hash of named parameters; splats are returned in a `splat` array inside this hash. **patt:build(*params*)** - builds the original pattern string from a hash of named parameters Some examples of patterns, what they match, and the parameter hashes: * '/foo', matches '/foo', empty hash * '/foo/:bar/baz' matches '/foo/orbit/baz' or '/foo/xxx.yyy/baz' with hashes { bar = 'orbit' } and { bar = 'xxx.yyy' } * '/:name.:ext' matches '/xxx.yyy' or '/filename.ext' with hashes { name = 'xxx', ext = 'yyy' } and { name = 'filename', ext = 'ext' } * '/*/foo/*' matches '/bar/foo' or '/bar/foo/bling/baz/boom' with hashes { splat = { 'bar' } } and { splat = { 'bar', 'bling/baz/boom' } } * '/?:foo?/?:bar?' matches '/' or '/orbit' or '/orbit/routes' with hashes {} and { foo = 'orbit' } and { foo = 'orbit', bar = 'routes' } And several more, see `test/test_routes.lua` for a comprehensive test suite. lua-orbit-2.2.1+dfsg/rockspec/000077500000000000000000000000001227340735500161525ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/rockspec/orbit-2.0-1.rockspec000066400000000000000000000013141227340735500214560ustar00rootroot00000000000000package = "Orbit" version = "2.0-1" source = { url = "http://luaforge.net/frs/download.php/3451/orbit-2.0.0.tar.gz", } description = { summary = "MVC for Lua Web Development", detailed = [[ Orbit is a library for developing web applications according to the Model-View-Controller paradigm in Lua. ]], license = "MIT/X11", homepage = "http://www.keplerproject.org/orbit" } dependencies = { 'wsapi >= 1.0', 'luafilesystem >= 1.4.1', 'cosmo >= 8.04.14' } build = { type = "make", build_pass = true, install_target = "install-rocks", install_variables = { PREFIX = "$(PREFIX)", LUA_BIN = "/usr/bin/env lua", LUA_DIR = "$(LUADIR)", BIN_DIR = "$(BINDIR)" } } lua-orbit-2.2.1+dfsg/rockspec/orbit-2.0.1-1.rockspec000066400000000000000000000013161227340735500216170ustar00rootroot00000000000000package = "Orbit" version = "2.0.1-1" source = { url = "http://luaforge.net/frs/download.php/3458/orbit-2.0.1.tar.gz", } description = { summary = "MVC for Lua Web Development", detailed = [[ Orbit is a library for developing web applications according to the Model-View-Controller paradigm in Lua. ]], license = "MIT/X11", homepage = "http://www.keplerproject.org/orbit" } dependencies = { 'wsapi >= 1.0', 'luafilesystem >= 1.4.1', 'cosmo >= 8.04.14' } build = { type = "make", build_pass = true, install_target = "install-rocks", install_variables = { PREFIX = "$(PREFIX)", LUA_BIN = "/usr/bin/env lua", LUA_DIR = "$(LUADIR)", BIN_DIR = "$(BINDIR)" } } lua-orbit-2.2.1+dfsg/rockspec/orbit-2.0.2-1.rockspec000066400000000000000000000014171227340735500216220ustar00rootroot00000000000000package = "Orbit" version = "2.0.2-1" source = { url = "http://luaforge.net/frs/download.php/3975/orbit-2.0.2.tar.gz", } description = { summary = "MVC for Lua Web Development", detailed = [[ Orbit is a library for developing web applications according to the Model-View-Controller paradigm in Lua. ]], license = "MIT/X11", homepage = "http://www.keplerproject.org/orbit" } dependencies = { 'wsapi >= 1.1', 'luafilesystem >= 1.4.2', 'cosmo >= 8.04.14' } build = { type = "module", modules = { orbit = "src/orbit.lua", ["orbit.model"] = "src/model.lua", ["orbit.pages"] = "src/pages.lua", ["orbit.cache"] = "src/cache.lua", ["orbit.ophandler"] = "src/ophandler.lua", }, copy_directories = { "doc", "samples", "test" } } lua-orbit-2.2.1+dfsg/rockspec/orbit-2.0rc1-1.rockspec000066400000000000000000000012751227340735500220720ustar00rootroot00000000000000package = "Orbit" version = "2.0rc1-1" description = { summary = "MVC for Lua Web Development", detailed = [[ Orbit is a library for developing web applications according to the Model-View-Controller paradigm in Lua. ]], license = "MIT/X11", homepage = "http://www.keplerproject.org/orbit" } dependencies = { 'wsapi 1.0rc1', 'luafilesystem 1.4.1rc1', 'cosmo 8.04.14' } source = { url = "http://orbit.luaforge.net/orbit-2.0rc1.tar.gz", } build = { type = "make", build_pass = true, install_target = "install-rocks", install_variables = { PREFIX = "$(PREFIX)", LUA_BIN = "/usr/bin/env lua", LUA_DIR = "$(LUADIR)", BIN_DIR = "$(BINDIR)" } } lua-orbit-2.2.1+dfsg/rockspec/orbit-2.1.0-1.rockspec000066400000000000000000000015631227340735500216230ustar00rootroot00000000000000package = "Orbit" version = "2.1.0-1" source = { url = "http://cloud.github.com/downloads/keplerproject/orbit/orbit-2.1.0.tar.gz", } description = { summary = "MVC for Lua Web Development", detailed = [[ Orbit is a library for developing web applications according to the Model-View-Controller paradigm in Lua. ]], license = "MIT/X11", homepage = "http://www.keplerproject.org/orbit" } dependencies = { 'luafilesystem >= 1.5.0' } build = { type = "builtin", modules = { orbit = "src/orbit.lua", ["orbit.model"] = "src/orbit/model.lua", ["orbit.pages"] = "src/orbit/pages.lua", ["orbit.cache"] = "src/orbit/cache.lua", ["orbit.ophandler"] = "src/orbit/ophandler.lua", }, install = { bin = { "src/launchers/orbit", "src/launchers/op.cgi", "src/launchers/op.fcgi" } }, copy_directories = { "doc", "samples", "test" } } lua-orbit-2.2.1+dfsg/rockspec/orbit-2.2.0-1.rockspec000066400000000000000000000016531227340735500216240ustar00rootroot00000000000000package = "Orbit" version = "2.2.0-1" description = { summary = "MVC for Lua Web Development", detailed = [[ Orbit is a library for developing web applications according to the Model-View-Controller paradigm in Lua. ]], license = "MIT/X11", homepage = "http://www.keplerproject.org/orbit" } dependencies = { 'luafilesystem >= 1.5.0', 'lpeg >= 0.9' } source = { url = "http://github.com/downloads/keplerproject/orbit/orbit-2.2.0.tar.gz" } build = { type = "builtin", modules = { orbit = "src/orbit.lua", ["orbit.model"] = "src/orbit/model.lua", ["orbit.pages"] = "src/orbit/pages.lua", ["orbit.cache"] = "src/orbit/cache.lua", ["orbit.ophandler"] = "src/orbit/ophandler.lua", ["orbit.routes"] = "src/orbit/routes.lua", }, install = { bin = { "src/launchers/orbit", "src/launchers/op.cgi", "src/launchers/op.fcgi" } }, copy_directories = { "doc", "samples", "test" } } lua-orbit-2.2.1+dfsg/rockspec/orbit-2.2.1-1.rockspec000066400000000000000000000017321227340735500216230ustar00rootroot00000000000000package = "Orbit" version = "2.2.1-1" description = { summary = "MVC for Lua Web Development", detailed = [[ Orbit is a library for developing web applications according to the Model-View-Controller paradigm in Lua. ]], license = "MIT/X11", homepage = "http://www.keplerproject.org/orbit" } dependencies = { 'luafilesystem >= 1.6.2', 'lpeg >= 0.12', 'wsapi-xavante >= 1.6', 'cosmo >= 13.01.30' } source = { -- !! temporary for testing !! url = "git://github.com/kognix/orbit.git" } build = { type = "builtin", modules = { orbit = "src/orbit.lua", ["orbit.model"] = "src/orbit/model.lua", ["orbit.pages"] = "src/orbit/pages.lua", ["orbit.cache"] = "src/orbit/cache.lua", ["orbit.ophandler"] = "src/orbit/ophandler.lua", ["orbit.routes"] = "src/orbit/routes.lua", }, install = { bin = { "src/launchers/orbit", "src/launchers/op.cgi", "src/launchers/op.fcgi" } }, copy_directories = { "doc", "samples", "test" } } lua-orbit-2.2.1+dfsg/rockspec/orbit-cvs-1.rockspec000066400000000000000000000013201227340735500217470ustar00rootroot00000000000000package = "Orbit" version = "cvs-1" description = { summary = "MVC for Lua Web Development", detailed = [[ Orbit is a library for developing web applications according to the Model-View-Controller paradigm in Lua. ]], license = "MIT/X11", homepage = "http://www.keplerproject.org/orbit" } dependencies = { 'wsapi cvs', 'luafilesystem cvs', 'cosmo current' } source = { url = "cvs://:pserver:anonymous@cvs.luaforge.net:/cvsroot/orbit", cvs_tag = "HEAD" } build = { type = "make", build_pass = true, install_target = "install-rocks", install_variables = { PREFIX = "$(PREFIX)", LUA_BIN = "/usr/bin/env lua", LUA_DIR = "$(LUADIR)", BIN_DIR = "$(BINDIR)" } } lua-orbit-2.2.1+dfsg/rockspec/orbit-cvs-2.rockspec000066400000000000000000000016171227340735500217610ustar00rootroot00000000000000package = "Orbit" version = "cvs-2" description = { summary = "MVC for Lua Web Development", detailed = [[ Orbit is a library for developing web applications according to the Model-View-Controller paradigm in Lua. ]], license = "MIT/X11", homepage = "http://www.keplerproject.org/orbit" } dependencies = { 'luafilesystem >= 1.5.0', 'lpeg >= 0.9' } source = { url = "git://github.com/keplerproject/orbit.git" } build = { type = "builtin", modules = { orbit = "src/orbit.lua", ["orbit.model"] = "src/orbit/model.lua", ["orbit.pages"] = "src/orbit/pages.lua", ["orbit.cache"] = "src/orbit/cache.lua", ["orbit.ophandler"] = "src/orbit/ophandler.lua", ["orbit.routes"] = "src/orbit/routes.lua", }, install = { bin = { "src/launchers/orbit", "src/launchers/op.cgi", "src/launchers/op.fcgi" } }, copy_directories = { "doc", "samples", "test" } } lua-orbit-2.2.1+dfsg/samples/000077500000000000000000000000001227340735500160055ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/README000066400000000000000000000014441227340735500166700ustar00rootroot00000000000000This folder contains several sample Orbit applications, from trivial to quite sophisticated: hello The traditional "Hello World" songs A simple song list formatted with Cosmo todo An AJAX todo list, using both straight Orbit (todo.ws) and Orbit Pages (todo.op) pages Simple Orbit Pages examples blog A simple blog with comments toycms A simple CMS with posts, categories, moderated comments, and an admin interface It also has a op.ws Orbit pages launcher that can be used to launch .op files without having this extension configured in your web server. For example, if you put op.ws in your document root and go to http://server/op.ws/foo/bar.op op.ws will look for a file foo/bar.op in your document root and process it using Orbit Pages. lua-orbit-2.2.1+dfsg/samples/blog/000077500000000000000000000000001227340735500167305ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/blog/.htaccess000066400000000000000000000021401227340735500205230ustar00rootroot00000000000000 AddHandler cgi-script .lua AddHandler fcgid-script .lua FCGIWrapper "/usr/bin/env wsapi.fcgi" .lua Deny from all Allow from none Allow from all Deny from none XSendFile on RewriteEngine on RewriteCond %{REQUEST_FILENAME} ^(.*)/blog\.lua$ RewriteCond %1/page_cache/index.html -f RewriteRule ^blog\.lua/?$ page_cache/index.html [L] RewriteCond %{REQUEST_FILENAME} ^(.*)/blog\.lua$ RewriteCond %1/page_cache/post-$1.html -f RewriteRule ^blog\.lua/post/(.+)$ page_cache/post-$1.html [L] RewriteCond %{REQUEST_FILENAME} ^(.*)/blog\.lua$ RewriteCond %1/page_cache/archive-$1-$2.html -f RewriteRule ^blog\.lua/archive/([^/]+)/([^/]+)$ page_cache/archive-$1-$2.html [L] RewriteCond %{REQUEST_FILENAME} ^(.*)/blog\.lua$ RewriteCond %1/page_cache/page-$1.html -f RewriteRule ^blog\.lua/page/(.+)$ page_cache/page-$1.html [L] lua-orbit-2.2.1+dfsg/samples/blog/blog.db000066400000000000000000003720001227340735500201640ustar00rootroot00000000000000SQLite format 3@ .  |"|#tableblog_pageblog_pageCREATE TABLE blog_page ("id" INTEGER PRIMARY KEY NOT NULL, "body" TEXT DEFAULT NULL, "title" VARCHAR(30) DEFAULT NULL){Etableblog_postblog_postCREATE TABLE blog_post ("id" INTEGER PRIMARY KEY NOT NULL, "title" VARCHAR(255) DEFAULT NULL, "body" TEXT DEFAULT NULL, "published_at" DATETIME DEFAULT NULL, "n_comments" INTEGER DEFAULT NULL)Qtableblog_pageblog_pageCREATE TABLE blog_page ("id" INTEGER PRIMARY KEY NOT NULL, "body" TEXT DEFAULT NULL)Y%%utableblog_commentblog_commentCREATE TABLE blog_comment ("id" INTEGER PRIMARY KEY NOT NULL, "post_id" INTEGER DEFAULT NULL, "author" VARCHAR(255) DEFAULT NULL, "email" VARCHAR(255) DEFAULT NULL, "url" VARCHAR(255) DEFAULT NULL, "body" TEXT DEFAULT NULL, "created_at" DATETIME DEFAULT NULL)#Qe[`ytoj~VQ 14( V J < S N@>Q GEA0WH(!# 312$*#+)4'.-,/31RYt%~yt|'w vx!_srpZMIC " ?   [ {%z$y"tqocl on? Web applications (also known as Web apps) are programs that are used through a Web browser. Every time you search for something with Google, read mail with Hotmail or browse Amazon you are using a Web application. Some other examples would be discussion forums, a blog or a weather site. ### What is a Web development platform? Web applications can be developed in different ways, from a hands-on approach to a very structured one. A Web development platform offers the developer a number of features that make the development of Web applications a lot easier. Instead of developing the application from scratch, the developer can benefit from the building blocks of the Web platform. ### Why build/use another Web development platform? There are a number of great Web development platforms out there but none balances power, size and flexibility quite like Kepler does. ### Is Kepler better than PHP/Java/.Net/...? That depends on what is your goal. Those platforms are surely good solutions for Web Developm eG## General FAQ ### What is Kepler? Kepler is a a set of components for Lua that make up a powerful Web development platform. It is also the name of the project that is developing the Kepler platform. ### Why "Kepler"? Johannes Kepler was the astronomer that first explained that the tides are caused by the Moon. "Lua" means Moon in Portuguese, so the name "Kepler" tries to hint that some new tides may soon be caused by Lua... :o) ### What is Lua? Lua is a programming language that offers a very impressive set of features while keeping everything fast, small and portable. The Kepler Platform uses these features to offer a faster, smaller and more portable way to develop Web applications. See [[Lua]] for more information. ### What is a Web applicati *  36John Doe One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. 2006-07-19 07:51:39 # / g35Jane Doetampo_8@yahoo.com Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. 2006-06-27 14:33:36snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! 2004-10-04 22:58:00 ];3Order Now And You Also Get A Attack Nose Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. 2004-09-28 18:29:00 vxgm3The Care And Feeding Of Your Sleeping Bicycle Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Mutley, you I3Now Anybody Can Make President 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. TdOent but sometimes they turn out to be too big, too rigid or just too unportable for the job. That's precisely where Kepler shines. ### What does Kepler offer for the developer? Kepler offers a Core plus a small but powerful combination of components. You have components for SQL Database access, XML parsing, Logging, ZIP manipulation and some others. ### What is the Kepler Core? The Kepler Core is the minimum set of components of Kepler: - [[CGILua]] for page generation - [[LuaSocket]] for TCP/UDP sockets ### What is the Kepler Platform? The Kepler Platform includes the Kepler Core plus a defined set of components: - [[LuaExpat]] for XML parsing - [[LuaFileSystem]] - [[LuaLogging]] - [[LuaSQL]] for database access - [[LuaZIP]] for ZIP manipulation ### Why separate the Kepler Core from the Kepler Platform? If you don't need all the Kepler Platform components or prefer to add your own components, you can simply get only the Kepler Core as a starting point. But if you choose to develop for the Kep //N  E-35Curlyhttp://www.keplerproject.org There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. 2006-06-19 13:23:12 KKm  Ek35Larryhttp://www.keplerproject.org Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker tha/:  =35Larry Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! 2006-06-19 13:13:05uy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. 2006-07-18 15:41:00ties of Gold. 2006-06-11 10:33:00 :.1'3No Man Is A Monkey Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby theX d-O]3Way Out West With The Green Giant Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! One $ HH-/Qm3Where To Meet An Impossible Friend Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to P ,MI3On The Trail Of The Lost Chicken Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a probl b0Ag3Barney And The Hungry Desk Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men pr=1Y3Way Out West With The Furry Super Wolf Mutley, you snickering, floppy eared hound. When courage Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 2006-06-11 10:33:00 XX$2Ci3The Mystery Of Lego Chicken This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, t.n3mS3I Rode Friendly Grandmother's Mixed-Up Chocolate One for all and all for one, Muskehounds are always ready.& 4a3Christmas Shopping For A New, Improved Ark Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. 2006-06-09 11:28:00 //X5SA3The Funniest Joke About A Scary Ark Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. @6='3Where To Meet An Chicken This is my boss, Jonathan Hart, a self-made millionaire, he's quite a g ~(gy3Today, The World - Tomorrow, The Purple Money One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. I never spend much time in school but I taught ladies plenty. I'is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. 2006-05-09 00:44:00that pigeon now. 2006-05-03 21:00:00 u6*ek3I Have To Write About My Blustery Funny Nose Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the h]+E3Once Upon A Complicated Duck Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the!omptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. 2006-05-03 21:00:00 nn)=53I'm My Own Desert Friend Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten c) [  35Curly Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. 2006-06-12 13:05:35   _34Curly Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. 2006-06-09 13:02:58 }}r  '33Jane Doe This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! 2006-06-27 18:34:19  _33Larry Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. 2006-06-09 09:45:29em chum, think how it could be. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. 2006-04-09 11:06:00 Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. 2006-04-07 18:28:00 |  ;33John Doe Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. 2006-06-06 21:51:06 <<A k{3Visit Fun World And See The Rare Recycled Clown Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! 2005-06-23 21:10:00for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. 2006-04-17 00:34:00 9]9!) 31Moe

    Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.

    2009-10-26 17:00:47 ( 36

    80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.

    2007-04-17 02:00:43 One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. 2006-06-06 14:28:00t's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. 2006-04-03 15:07:00 B!i3Wyoming Jones And The Secret Twin Canadian Bat Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's+hest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. 2006-04-04 23:43:00 99V"CM3Wyoming Jones And The Clown Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had D[#SG3Marco Polo Discovers The Accountant Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats!= providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. 2005-06-27 14:33:00 the A-team. Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! 2006-04-02 15:30:00es - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. 2005-10-07 16:44:00hunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. 2006-05-10 00:37:00n the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. 2006-06-13 09:51:53 N*Km3What I Learned From An Football This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day t8#M]3Now Anybody Can Make Attack Wolf Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish6 G)3Avast, Me Invisible Twin Fish Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! One for all and all for one, Muskehounds are always ready. One for all and all for one, helping ever5 !!T$?M3Playing Poker With A Tree There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulyss- [3Around The World With A Blustery Banana Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. 2005-06-08 12:28:00gGk3Mr. McMullet, The Flying Tree Ulysses, Ulysses - Soaring through all the galaxies. In search of EartB dd'EA3Barney And The Rollercoaster Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire,ybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. 2005-06-06 00:26:007 and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. 2005-06-02 09:56:00hey was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. 2005-06-01 15:08:00ng. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. 2005-05-18 14:58:00 been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. 2005-05-22 17:27:00 alw8ays ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. 2005-05-30 16:19:00  GG3Once Upon A Guardian Dinosaur Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. Ulysses, Ulysses - Soaria Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. 2005-08-26 16:09:00 ii W?3'Star Wars' As Written By A Scary Bat Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhfp9 3Anatomy Of A Funny Day Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. 2005-02-06 00:00:00 o  !33Jane Doe Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. 2006-06-06 21:18:59 ZZOK3On The Trail Of The Electric Desk There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll L  M+3My Coach Is A New, Improved Bear Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justi\h, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 2005-06-22 00:42:00 [["  33Larry Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. 2006-06-06 20:58:48to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 2005-07-12 21:07:00 ;I3My Son, The Lost Banana Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, ThundUBqw3The Olympic Competition Won By An Automatic Monkey Children of the sun, see your time has just bThe galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! 2005-05-23 08:49:00 kkm3The Olympic Competition Won By An Purple Bicycle I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. 2005-05-16 15:42:00 haS3Marco Polo Discovers The Complicated Spoon Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we wilKp53The Mystery Of Horse 80 days around the world, we'll find a pot of gold just sitting where the rainbow's endi9 x  33(Jane Doe 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 2006-04-06 00:40:09 % Am3The Mystery Of Lego Pirate Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. 2004-12-14 16:05:00l find The Cities of Gold. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! 2005-05-17 11:29:00fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! 2005-02-21 17:31:00 & 3E;3(Moemascarenhas@acm.orghttp://www.keplerproject.org Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 2006-04-05 12:32:173  )3(John Doe There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. 2006-04-05 12:21:40 )iM3Today, The World - Tomorrow, The Mixed-Up Dice I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight,`xeo3The Funniest Joke About A Grandmother's Tree Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for t^hler Platform you can benefit from some important points: - you will be able to easily upgrade your development platform as Kepler continues to evolve. - you will be using the same set of components as other Kepler Platform developers, making it easier to exchange ideas and experience. - you can be assured of the portability of your Web application for other environments, as long as those environments also run the Kepler Platform. ### Do I need to use the Kepler Platform to use the Kepler Project components? Not at all! The components developed by the Kepler Project can be used in any Lua based system. You can compile them from the source files or use the binary versions, both available free of charge on LuaForge. ### What about the licensing and pricing models? Kepler and Lua are free software: they can be used for both academic and commercial purposes at absolutely no cost. There are no royalties or GNU-like "copyleft" restrictions. Kepler and Lua qualifies as Open Source software. Their licenses acall him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 2006-04-25 15:12:00 xx m%3Thomas Edison Invents The Guardian Rollercoaster There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. 2005-01-04 18:27:00& y73Today, The World - Tomorrow, The Complicated Moonlight Barnaby The Bear's my name, never call mem S?3Now Anybody Can Make Miniature Nose Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. 2005-05-22 00:46:00[9a3My Daughter, The Spoon Just the good ol' boys, never meanin' no harm. Beats all you've ever saw,: Z;]3Dr. Jekyll And Mr. Bear One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that'nN S-3Christmas Shopping For A Racing Ark Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. I never spend much time in school but I taught ladies plenty. Ieegun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. 2005-05-16 14:10:00ve the law. 2005-05-16 15:42:00ercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. 2005-05-11 14:27:00 11LU'3'Star Wars' As Written By A Princess Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. 2004-10-14 18:02:00 aa-Sk3On The Trail Of The Automatic Giant Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. One for all and all for one, Muskehounds are alw;\SI3Dental Surgery On A Desert Elephant There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Ulysses, Ulysses - Soaring through all tF Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. 2006-04-18 18:15:00 &Ke3What I Learned From An Elephant I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thundeb iil  E 3"Jane Doehttp://www.keplerproject.org Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. 2005-07-12 22:41:33  o3!Moe Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. 2005-07-10 17:28:17 ff  {3)Moe 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. 2006-04-05 12:17:15ce to all. Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! 2005-03-31 23:07:00ay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. 2006-04-06 21:52:00he Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. 2004-11-11 00:32:00 ^  3 Curly Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! 2005-01-13 16:24:20 with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. 2004-11-01 15:54:00ng through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! 2004-12-13 18:03:00r, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 2004-10-18 12:15:00 HH5 3EY3'Moemascarenhas@acm.orghttp://www.keplerproject.org Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! 2006-04-02 18:55:31ime - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. 2004-10-08 14:41:00t's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. 2004-12-10 21:10:00ere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. 2005-02-03 16:07:00erybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. 2005-01-04 19:07:00 all for one, helping everybody. One for all and all for ire compatible with GPL. Kepler is not in the public domain and the Kepler Project keeps its copyright. (See also: [[License]].) ### What is CGILua? CGILua is the main component of the Kepler Core. It is a tool for creating dynamic Web pages and manipulating input data from Web forms. Among other functions, CGILua is the component responsible for the user interface programming side of your Web application, while the remaining ones handle the logic and data of your Web application. One of the big advantages of CGILua is its abstraction of the underlying Web server. You can develop a CGILua application for one Web server and run it on any other Web server that supports CGILua. See [[CGILua]] for more details. ### Do I have to use Kepler to use CGILua? No, although it is probably a lot easier to get Kepler and simply start using CGILua than to get CGILua's source and build a launcher for it from scratch. You may also benefit from the fact that Kepler includes lot of ready to use CGILua launchers so youj have more choices of Web servers. ### What are CGILua launchers? A CGILua launcher is the mechanism that allows a Web server to execute and communicate with CGILua and its Web applications. ### Which CGILua launchers are available? Kepler currently offers the following set of CGILua launchers: - CGI - FastCGI - mod_lua (for Apache) - ISAPI (for Microsoft IIS) - [[Xavante]] (a Lua Web server that supports CGILua natively) You can choose your launcher based on its size, ease of use, portability or performance. You can start using a simpler launcher and then migrate to a more advanced one without any changes to your application. With this flexibility you can for example start your development locally on your Windows system running CGI and then move to a Linux server running mod_lua or even to a mobile device running Xavante. ### What if my Web server is not supported? If your target Web server does not offer any of the existent connection methods or if you would prefer to use a different connectiokn method, you have the option of creating a CGILua launcher for the target Web server. ### How can I create a new CGILua launcher? A CGILua launcher implements SAPI, the Server API. SAPI consists in a set of functions that once implemented for a specific Web server architecture allows the execution of CGILua and its Web applications on it. ### How ready to use is Kepler? Kepler development is an ongoing process, and you can check the latest release at the Download page. Instructions for installation on Unix and Windows can be found at the Documentation page. You can also check the [[Status]] page for the incoming releases. ### Who is already using Kepler? Kepler is already being used by PUC-Rio and Hands on professional applications. ### Is there a mailing list for Kepler? Yes! Kepler questions can be posted on the Kepler Project [[Mailing List]]. ### How can I help? There are a lot of ways to help the project and the team. One way is to use Kepler and provide some feedback. If you want to follow more closely, you can join the Kepler Project list or the Kepler forums on LuaForge. You can also help developing and debugging the existing modules, as much as helping document the platform and its modules. Please go to the [[Developers]] section for more information for that. Another way to help would by buying something from Amazon through the PiL links on LuaForge and the Kepler sites. Doing that you'll be helping gather resources for the Kepler team. For every product (not just PiL) bought after entering Amazon through the links we get from 2% to 5% of the product price as Amazon credits. Those credits are used to buy books for the team, so we can stay sharp and deliver the goods. :o) For those interested in helping us this way, just remember that Amazon only considers products added to the cart after you enter Amazon through the Kepler links. Anything in the cart that was added during a different visit to the store will not count for us (though it may count for another Amazon partner). FAQ ''V+## What is Kepler? **The Kepler project aims to collaboratively create an extremely portable Web development platform based on the Lua programming language, offering both flexibility and conceptual simplicity.** Kepler is an open source platform for developing Web applications in [[Lua]]. Lua is a programming language that offers a very impressive set of features while keeping everything fast, small and portable. Kepler is implemented as a set of Lua components and offers the same advantages as Lua: it is simple, extremely portable, light, extensible and offers a very flexible licence. It allows the use of XHTML, SQL, XML, Zip and other standards. There are a number of great Web development platforms out there but none balances power, size and flexibility quite like Kepler does. The Lua community is constantly contributing with more modules that can be used with Kepler, most of those modules are catalogued on LuaForge and new ones keep coming. What is Kepler?g Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping evs the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. 2004-11-22 22:00:00 AA< 3Ec3"Curlymascarenhas@acm.orghttp://www.keplerproject.org Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. 2005-07-12 22:44:17 ! 3E-3Curlymascarenhas@acm.orghttp://www.keplerproject.org This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. 2005-05-16 15:47:28    _3Moe Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. 2005-05-08 20:20:19y  ;3Curly Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 2005-03-03 16:02:29_  3Jane Doe Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in tu ||  K3Larry Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. 2005-02-06 00:13:52 w  E3Larryhttp://www.keplerproject.org Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. 2005-02-04 17:41:54 \\[|  ;3Jane Doe Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 2005-02-04 17:20:24"  3 John Doe 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. 2005-01-29 19:45:29o the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. 2005-02-08 00:22:55    E!3 Jane Doehttp://www.keplerproject.org Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. 2005-01-16 15:09:38 y   Y3 Jane Doe Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! 2005-01-13 16:20:38  K3 John Doe I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. 2004-12-14 18:21:34 !  s3 Moe Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. 2004-12-14 18:21:08  "  U3 Jane Doe Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. 2004-12-14 12:55:13 <#  A3Larry Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. 2004-11-27 01:02:06{$  C3Moe This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H.} c%  3Jane Doe Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! 2004-11-06 18:47:59 [D'  E3Jane Doehttp://www.keplerproject.org Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. 2004-10-16 13:05:22"&  EY3Moehttp://www.keplerproject.org Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! 2004-10-24 23:34:22, she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. 2004-11-23 02:20:4444lua-orbit-2.2.1+dfsg/samples/blog/blog.dump.sqlite3000066400000000000000000003273411227340735500221370ustar00rootroot00000000000000BEGIN TRANSACTION; CREATE TABLE blog_post ("id" INTEGER PRIMARY KEY NOT NULL, "title" VARCHAR(255) DEFAULT NULL, "body" TEXT DEFAULT NULL, "published_at" DATETIME DEFAULT NULL, "n_comments" INTEGER DEFAULT NULL); INSERT INTO "blog_post" VALUES(1,'Order Now And You Also Get A Attack Nose',' Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. ','2004-09-28 18:29:00',0); INSERT INTO "blog_post" VALUES(2,'The Care And Feeding Of Your Sleeping Bicycle',' Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ','2004-10-04 22:58:00',0); INSERT INTO "blog_post" VALUES(3,'Now Anybody Can Make President',' 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ','2004-10-08 14:41:00',0); INSERT INTO "blog_post" VALUES(4,'''Star Wars'' As Written By A Princess',' Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. ','2004-10-14 18:02:00',1); INSERT INTO "blog_post" VALUES(5,'What I Learned From An Elephant',' I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ','2004-10-18 12:15:00',2); INSERT INTO "blog_post" VALUES(6,'Today, The World - Tomorrow, The Mixed-Up Dice',' I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. ','2004-11-01 15:54:00',0); INSERT INTO "blog_post" VALUES(7,'The Funniest Joke About A Grandmother''s Tree',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. ','2004-11-11 00:32:00',0); INSERT INTO "blog_post" VALUES(8,'Dr. Jekyll And Mr. Bear',' One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ','2004-11-22 22:00:00',2); INSERT INTO "blog_post" VALUES(9,'Christmas Shopping For A Racing Ark',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ','2004-12-10 21:10:00',0); INSERT INTO "blog_post" VALUES(10,'Once Upon A Guardian Dinosaur',' Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! ','2004-12-13 18:03:00',1); INSERT INTO "blog_post" VALUES(11,'The Mystery Of Lego Pirate',' Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. ','2004-12-14 16:05:00',2); INSERT INTO "blog_post" VALUES(12,'Thomas Edison Invents The Guardian Rollercoaster',' There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. ','2005-01-04 18:27:00',2); INSERT INTO "blog_post" VALUES(13,'Today, The World - Tomorrow, The Complicated Moonlight',' Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. ','2005-01-04 19:07:00',2); INSERT INTO "blog_post" VALUES(14,'''Star Wars'' As Written By A Scary Bat',' Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ','2005-02-03 16:07:00',3); INSERT INTO "blog_post" VALUES(15,'Anatomy Of A Funny Day',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. ','2005-02-06 00:00:00',1); INSERT INTO "blog_post" VALUES(16,'On The Trail Of The Electric Desk',' There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ','2005-02-21 17:31:00',1); INSERT INTO "blog_post" VALUES(17,'My Coach Is A New, Improved Bear',' Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! ','2005-03-31 23:07:00',1); INSERT INTO "blog_post" VALUES(18,'My Son, The Lost Banana',' Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ','2005-05-11 14:27:00',0); INSERT INTO "blog_post" VALUES(19,'The Olympic Competition Won By An Automatic Monkey',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. ','2005-05-16 14:10:00',0); INSERT INTO "blog_post" VALUES(20,'The Olympic Competition Won By An Purple Bicycle',' I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. ','2005-05-16 15:42:00',1); INSERT INTO "blog_post" VALUES(21,'Marco Polo Discovers The Complicated Spoon',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ','2005-05-17 11:29:00',0); INSERT INTO "blog_post" VALUES(22,'The Mystery Of Horse',' 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. ','2005-05-18 14:58:00',0); INSERT INTO "blog_post" VALUES(23,'Now Anybody Can Make Miniature Nose',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. ','2005-05-22 00:46:00',0); INSERT INTO "blog_post" VALUES(24,'My Daughter, The Spoon',' Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. ','2005-05-22 17:27:00',0); INSERT INTO "blog_post" VALUES(25,'Dental Surgery On A Desert Elephant',' There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ','2005-05-23 08:49:00',0); INSERT INTO "blog_post" VALUES(26,'On The Trail Of The Automatic Giant',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. ','2005-05-30 16:19:00',0); INSERT INTO "blog_post" VALUES(27,'What I Learned From An Football',' This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. ','2005-06-01 15:08:00',0); INSERT INTO "blog_post" VALUES(28,'Now Anybody Can Make Attack Wolf',' Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. ','2005-06-02 09:56:00',0); INSERT INTO "blog_post" VALUES(29,'Avast, Me Invisible Twin Fish',' Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. ','2005-06-06 00:26:00',0); INSERT INTO "blog_post" VALUES(30,'Around The World With A Blustery Banana',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. ','2005-06-08 12:28:00',0); INSERT INTO "blog_post" VALUES(31,'Mr. McMullet, The Flying Tree',' Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ','2005-06-22 00:42:00',0); INSERT INTO "blog_post" VALUES(32,'Visit Fun World And See The Rare Recycled Clown',' Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! ','2005-06-23 21:10:00',0); INSERT INTO "blog_post" VALUES(33,'Wyoming Jones And The Secret Twin Canadian Bat',' Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. ','2005-06-27 14:33:00',1); INSERT INTO "blog_post" VALUES(34,'Wyoming Jones And The Clown',' Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ','2005-07-12 21:07:00',2); INSERT INTO "blog_post" VALUES(35,'Marco Polo Discovers The Accountant',' Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. ','2005-08-26 16:09:00',0); INSERT INTO "blog_post" VALUES(36,'Playing Poker With A Tree',' There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ','2005-10-07 16:44:00',0); INSERT INTO "blog_post" VALUES(39,'Barney And The Rollercoaster',' Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! ','2006-04-02 15:30:00',1); INSERT INTO "blog_post" VALUES(40,'Today, The World - Tomorrow, The Purple Money',' One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ','2006-04-03 15:07:00',3); INSERT INTO "blog_post" VALUES(41,'I''m My Own Desert Friend',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. ','2006-04-04 23:43:00',1); INSERT INTO "blog_post" VALUES(42,'I Have To Write About My Blustery Funny Nose',' Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. ','2006-04-06 21:52:00',0); INSERT INTO "blog_post" VALUES(43,'Once Upon A Complicated Duck',' Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. ','2006-04-07 18:28:00',0); INSERT INTO "blog_post" VALUES(44,'On The Trail Of The Lost Chicken',' Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. ','2006-04-09 11:06:00',0); INSERT INTO "blog_post" VALUES(45,'Way Out West With The Green Giant',' Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. ','2006-04-17 00:34:00',0); INSERT INTO "blog_post" VALUES(46,'No Man Is A Monkey',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. ','2006-04-18 18:15:00',0); INSERT INTO "blog_post" VALUES(47,'Where To Meet An Impossible Friend',' Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ','2006-04-25 15:12:00',0); INSERT INTO "blog_post" VALUES(48,'Barney And The Hungry Desk',' Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ','2006-05-03 21:00:00',0); INSERT INTO "blog_post" VALUES(49,'Way Out West With The Furry Super Wolf',' Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. ','2006-05-09 00:44:00',0); INSERT INTO "blog_post" VALUES(50,'The Mystery Of Lego Chicken',' This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. ','2006-05-10 00:37:00',0); INSERT INTO "blog_post" VALUES(51,'I Rode Friendly Grandmother''s Mixed-Up Chocolate',' One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. ','2006-06-06 14:28:00',5); INSERT INTO "blog_post" VALUES(52,'Christmas Shopping For A New, Improved Ark',' Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. ','2006-06-09 11:28:00',1); INSERT INTO "blog_post" VALUES(53,'The Funniest Joke About A Scary Ark',' Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ','2006-06-11 10:33:00',5); INSERT INTO "blog_post" VALUES(54,'Where To Meet An Chicken',' This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. ','2006-07-18 15:41:00',2); CREATE TABLE blog_comment ("id" INTEGER PRIMARY KEY NOT NULL, "post_id" INTEGER DEFAULT NULL, "author" VARCHAR(255) DEFAULT NULL, "email" VARCHAR(255) DEFAULT NULL, "url" VARCHAR(255) DEFAULT NULL, "body" TEXT DEFAULT NULL, "created_at" DATETIME DEFAULT NULL); INSERT INTO "blog_comment" VALUES(1,54,'John Doe','','',' One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. ','2006-07-19 07:51:39'); INSERT INTO "blog_comment" VALUES(2,53,'Jane Doe','tampo_8@yahoo.com','',' Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. ','2006-06-27 14:33:36'); INSERT INTO "blog_comment" VALUES(3,53,'Curly','','http://www.keplerproject.org',' There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ','2006-06-19 13:23:12'); INSERT INTO "blog_comment" VALUES(4,53,'Larry','','',' Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! ','2006-06-19 13:13:05'); INSERT INTO "blog_comment" VALUES(5,53,'Larry','','http://www.keplerproject.org',' Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ','2006-06-13 09:51:53'); INSERT INTO "blog_comment" VALUES(6,53,'Curly','','',' Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. ','2006-06-12 13:05:35'); INSERT INTO "blog_comment" VALUES(7,52,'Curly','','',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. ','2006-06-09 13:02:58'); INSERT INTO "blog_comment" VALUES(8,51,'Jane Doe','','',' This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! ','2006-06-27 18:34:19'); INSERT INTO "blog_comment" VALUES(9,51,'Larry','','',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. ','2006-06-09 09:45:29'); INSERT INTO "blog_comment" VALUES(10,51,'John Doe','','',' Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. ','2006-06-06 21:51:06'); INSERT INTO "blog_comment" VALUES(11,51,'Jane Doe','','',' Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ','2006-06-06 21:18:59'); INSERT INTO "blog_comment" VALUES(12,51,'Larry','','',' Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. ','2006-06-06 20:58:48'); INSERT INTO "blog_comment" VALUES(13,41,'Moe','','',' 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. ','2006-04-05 12:17:15'); INSERT INTO "blog_comment" VALUES(14,40,'Jane Doe','','',' 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ','2006-04-06 00:40:09'); INSERT INTO "blog_comment" VALUES(15,40,'Moe','mascarenhas@acm.org','http://www.keplerproject.org',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ','2006-04-05 12:32:17'); INSERT INTO "blog_comment" VALUES(16,40,'John Doe','','',' There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. ','2006-04-05 12:21:40'); INSERT INTO "blog_comment" VALUES(17,39,'Moe','mascarenhas@acm.org','http://www.keplerproject.org',' Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ','2006-04-02 18:55:31'); INSERT INTO "blog_comment" VALUES(18,34,'Curly','mascarenhas@acm.org','http://www.keplerproject.org',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ','2005-07-12 22:44:17'); INSERT INTO "blog_comment" VALUES(19,34,'Jane Doe','','http://www.keplerproject.org',' Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. ','2005-07-12 22:41:33'); INSERT INTO "blog_comment" VALUES(20,33,'Moe','','',' Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. ','2005-07-10 17:28:17'); INSERT INTO "blog_comment" VALUES(21,20,'Curly','mascarenhas@acm.org','http://www.keplerproject.org',' This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. ','2005-05-16 15:47:28'); INSERT INTO "blog_comment" VALUES(22,17,'Moe','','',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. ','2005-05-08 20:20:19'); INSERT INTO "blog_comment" VALUES(23,16,'Curly','','',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ','2005-03-03 16:02:29'); INSERT INTO "blog_comment" VALUES(24,15,'Jane Doe','','',' Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ','2005-02-08 00:22:55'); INSERT INTO "blog_comment" VALUES(25,14,'Larry','','',' Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ','2005-02-06 00:13:52'); INSERT INTO "blog_comment" VALUES(26,14,'Larry','','http://www.keplerproject.org',' Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. ','2005-02-04 17:41:54'); INSERT INTO "blog_comment" VALUES(27,14,'Jane Doe','','',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ','2005-02-04 17:20:24'); INSERT INTO "blog_comment" VALUES(28,13,'John Doe','','',' 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. ','2005-01-29 19:45:29'); INSERT INTO "blog_comment" VALUES(29,13,'Curly','','',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ','2005-01-13 16:24:20'); INSERT INTO "blog_comment" VALUES(30,12,'Jane Doe','','http://www.keplerproject.org',' Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ','2005-01-16 15:09:38'); INSERT INTO "blog_comment" VALUES(31,12,'Jane Doe','','',' Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ','2005-01-13 16:20:38'); INSERT INTO "blog_comment" VALUES(32,11,'John Doe','','',' I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. ','2004-12-14 18:21:34'); INSERT INTO "blog_comment" VALUES(33,11,'Moe','','',' Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ','2004-12-14 18:21:08'); INSERT INTO "blog_comment" VALUES(34,10,'Jane Doe','','',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. ','2004-12-14 12:55:13'); INSERT INTO "blog_comment" VALUES(35,8,'Larry','','',' Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. ','2004-11-27 01:02:06'); INSERT INTO "blog_comment" VALUES(36,8,'Moe','','',' This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ','2004-11-23 02:20:44'); INSERT INTO "blog_comment" VALUES(37,5,'Jane Doe','','',' Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! ','2004-11-06 18:47:59'); INSERT INTO "blog_comment" VALUES(38,5,'Moe','','http://www.keplerproject.org',' Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ','2004-10-24 23:34:22'); INSERT INTO "blog_comment" VALUES(39,4,'Jane Doe','','http://www.keplerproject.org',' Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ','2004-10-16 13:05:22'); INSERT INTO "blog_comment" VALUES(40,54,NULL,NULL,NULL,'

    80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.

    ','2007-04-17 02:00:43'); CREATE TABLE blog_page ("id" INTEGER PRIMARY KEY NOT NULL, "body" TEXT DEFAULT NULL, "title" VARCHAR(30) DEFAULT NULL); INSERT INTO "blog_page" VALUES(1,'## What is Kepler? **The Kepler project aims to collaboratively create an extremely portable Web development platform based on the Lua programming language, offering both flexibility and conceptual simplicity.** Kepler is an open source platform for developing Web applications in [[Lua]]. Lua is a programming language that offers a very impressive set of features while keeping everything fast, small and portable. Kepler is implemented as a set of Lua components and offers the same advantages as Lua: it is simple, extremely portable, light, extensible and offers a very flexible licence. It allows the use of XHTML, SQL, XML, Zip and other standards. There are a number of great Web development platforms out there but none balances power, size and flexibility quite like Kepler does. The Lua community is constantly contributing with more modules that can be used with Kepler, most of those modules are catalogued on LuaForge and new ones keep coming. ','What is Kepler?'); INSERT INTO "blog_page" VALUES(2,'## General FAQ ### What is Kepler? Kepler is a a set of components for Lua that make up a powerful Web development platform. It is also the name of the project that is developing the Kepler platform. ### Why "Kepler"? Johannes Kepler was the astronomer that first explained that the tides are caused by the Moon. "Lua" means Moon in Portuguese, so the name "Kepler" tries to hint that some new tides may soon be caused by Lua... :o) ### What is Lua? Lua is a programming language that offers a very impressive set of features while keeping everything fast, small and portable. The Kepler Platform uses these features to offer a faster, smaller and more portable way to develop Web applications. See [[Lua]] for more information. ### What is a Web application? Web applications (also known as Web apps) are programs that are used through a Web browser. Every time you search for something with Google, read mail with Hotmail or browse Amazon you are using a Web application. Some other examples would be discussion forums, a blog or a weather site. ### What is a Web development platform? Web applications can be developed in different ways, from a hands-on approach to a very structured one. A Web development platform offers the developer a number of features that make the development of Web applications a lot easier. Instead of developing the application from scratch, the developer can benefit from the building blocks of the Web platform. ### Why build/use another Web development platform? There are a number of great Web development platforms out there but none balances power, size and flexibility quite like Kepler does. ### Is Kepler better than PHP/Java/.Net/...? That depends on what is your goal. Those platforms are surely good solutions for Web Development but sometimes they turn out to be too big, too rigid or just too unportable for the job. That''s precisely where Kepler shines. ### What does Kepler offer for the developer? Kepler offers a Core plus a small but powerful combination of components. You have components for SQL Database access, XML parsing, Logging, ZIP manipulation and some others. ### What is the Kepler Core? The Kepler Core is the minimum set of components of Kepler: - [[CGILua]] for page generation - [[LuaSocket]] for TCP/UDP sockets ### What is the Kepler Platform? The Kepler Platform includes the Kepler Core plus a defined set of components: - [[LuaExpat]] for XML parsing - [[LuaFileSystem]] - [[LuaLogging]] - [[LuaSQL]] for database access - [[LuaZIP]] for ZIP manipulation ### Why separate the Kepler Core from the Kepler Platform? If you don''t need all the Kepler Platform components or prefer to add your own components, you can simply get only the Kepler Core as a starting point. But if you choose to develop for the Kepler Platform you can benefit from some important points: - you will be able to easily upgrade your development platform as Kepler continues to evolve. - you will be using the same set of components as other Kepler Platform developers, making it easier to exchange ideas and experience. - you can be assured of the portability of your Web application for other environments, as long as those environments also run the Kepler Platform. ### Do I need to use the Kepler Platform to use the Kepler Project components? Not at all! The components developed by the Kepler Project can be used in any Lua based system. You can compile them from the source files or use the binary versions, both available free of charge on LuaForge. ### What about the licensing and pricing models? Kepler and Lua are free software: they can be used for both academic and commercial purposes at absolutely no cost. There are no royalties or GNU-like "copyleft" restrictions. Kepler and Lua qualifies as Open Source software. Their licenses are compatible with GPL. Kepler is not in the public domain and the Kepler Project keeps its copyright. (See also: [[License]].) ### What is CGILua? CGILua is the main component of the Kepler Core. It is a tool for creating dynamic Web pages and manipulating input data from Web forms. Among other functions, CGILua is the component responsible for the user interface programming side of your Web application, while the remaining ones handle the logic and data of your Web application. One of the big advantages of CGILua is its abstraction of the underlying Web server. You can develop a CGILua application for one Web server and run it on any other Web server that supports CGILua. See [[CGILua]] for more details. ### Do I have to use Kepler to use CGILua? No, although it is probably a lot easier to get Kepler and simply start using CGILua than to get CGILua''s source and build a launcher for it from scratch. You may also benefit from the fact that Kepler includes lot of ready to use CGILua launchers so you have more choices of Web servers. ### What are CGILua launchers? A CGILua launcher is the mechanism that allows a Web server to execute and communicate with CGILua and its Web applications. ### Which CGILua launchers are available? Kepler currently offers the following set of CGILua launchers: - CGI - FastCGI - mod_lua (for Apache) - ISAPI (for Microsoft IIS) - [[Xavante]] (a Lua Web server that supports CGILua natively) You can choose your launcher based on its size, ease of use, portability or performance. You can start using a simpler launcher and then migrate to a more advanced one without any changes to your application. With this flexibility you can for example start your development locally on your Windows system running CGI and then move to a Linux server running mod_lua or even to a mobile device running Xavante. ### What if my Web server is not supported? If your target Web server does not offer any of the existent connection methods or if you would prefer to use a different connection method, you have the option of creating a CGILua launcher for the target Web server. ### How can I create a new CGILua launcher? A CGILua launcher implements SAPI, the Server API. SAPI consists in a set of functions that once implemented for a specific Web server architecture allows the execution of CGILua and its Web applications on it. ### How ready to use is Kepler? Kepler development is an ongoing process, and you can check the latest release at the Download page. Instructions for installation on Unix and Windows can be found at the Documentation page. You can also check the [[Status]] page for the incoming releases. ### Who is already using Kepler? Kepler is already being used by PUC-Rio and Hands on professional applications. ### Is there a mailing list for Kepler? Yes! Kepler questions can be posted on the Kepler Project [[Mailing List]]. ### How can I help? There are a lot of ways to help the project and the team. One way is to use Kepler and provide some feedback. If you want to follow more closely, you can join the Kepler Project list or the Kepler forums on LuaForge. You can also help developing and debugging the existing modules, as much as helping document the platform and its modules. Please go to the [[Developers]] section for more information for that. Another way to help would by buying something from Amazon through the PiL links on LuaForge and the Kepler sites. Doing that you''ll be helping gather resources for the Kepler team. For every product (not just PiL) bought after entering Amazon through the links we get from 2% to 5% of the product price as Amazon credits. Those credits are used to buy books for the team, so we can stay sharp and deliver the goods. :o) For those interested in helping us this way, just remember that Amazon only considers products added to the cart after you enter Amazon through the Kepler links. Anything in the cart that was added during a different visit to the store will not count for us (though it may count for another Amazon partner). ','FAQ'); COMMIT; lua-orbit-2.2.1+dfsg/samples/blog/blog.lua000066400000000000000000000227251227340735500203660ustar00rootroot00000000000000#!/usr/bin/env wsapi.cgi local orbit = require "orbit" local orcache = require "orbit.cache" local markdown = require "markdown" local wsutil = require "wsapi.util" -- -- Declares that this is module is an Orbit app -- local blog = setmetatable(orbit.new(), { __index = _G }) if _VERSION == "Lua 5.2" then _ENV = blog else setfenv(1, blog) end -- -- Loads configuration data -- wsutil.loadfile("blog_config.lua", blog)() -- -- Initializes DB connection for Orbit's default model mapper -- local luasql = require("luasql." .. database.driver) local env = luasql[database.driver]() mapper.conn = env:connect(unpack(database.conn_data)) mapper.driver = database.driver -- Initializes page cache local cache = orbit.cache.new(blog, cache_path) -- -- Models for this application. Orbit calls mapper:new for each model, -- so if you want to replace Orbit's default ORM mapper by another -- one (file-based, for example) just redefine the mapper global variable -- posts = blog:model "post" function posts:find_comments() return comments:find_all_by_post_id{ self.id } end function posts:find_recent() return self:find_all("published_at is not null", { order = "published_at desc", count = recent_count }) end function posts:find_by_month_and_year(month, year) local s = os.time({ year = year, month = month, day = 1 }) local e = os.time({ year = year + math.floor(month / 12), month = (month % 12) + 1, day = 1 }) return self:find_all("published_at >= ? and published_at < ?", { s, e, order = "published_at desc" }) end function posts:find_months() local months = {} local previous_month = {} local posts = self:find_all({ order = "published_at desc" }) for _, post in ipairs(posts) do local date = os.date("*t", post.published_at) if previous_month.month ~= date.month or previous_month.year ~= date.year then previous_month = { month = date.month, year = date.year, date_str = os.date("%Y/%m", post.published_at) } months[#months + 1] = previous_month end end return months end comments = blog:model "comment" function comments:make_link() local author = self.author or strings.anonymous_author if self.url and self.url ~= "" then return "" .. author .. "" elseif self.email and self.email ~= "" then return "" .. author .. "" else return author end end pages = blog:model "page" -- -- Controllers for this application -- function index(web) local ps = posts:find_recent() local ms = posts:find_months() local pgs = pgs or pages:find_all() return render_index(web, { posts = ps, months = ms, recent = ps, pages = pgs }) end blog:dispatch_get(cache(index), "/", "/index") function view_post(web, post_id, comment_missing) local post = posts:find(tonumber(post_id)) if post then local recent = posts:find_recent() local pgs = pages:find_all() post.comments = post:find_comments() local months = posts:find_months() return render_post(web, { post = post, months = months, recent = recent, pages = pgs, comment_missing = comment_missing }) else return not_found(web) end end blog:dispatch_get(cache(view_post), "/post/(%d+)") function add_comment(web, post_id) local input = web.input if string.find(input.comment, "^%s*$") then return view_post(web, post_id, true) else local comment = comments:new() comment.post_id = tonumber(post_id) comment.body = markdown(input.comment) if not string.find(input.author, "^%s*$") then comment.author = input.author end if not string.find(input.email, "^%s*$") then comment.email = input.email end if not string.find(input.url, "^%s*$") then comment.url = input.url end comment:save() local post = posts:find(tonumber(post_id)) post.n_comments = (post.n_comments or 0) + 1 post:save() cache:invalidate("/") cache:invalidate("/post/" .. post_id) cache:invalidate("/archive/" .. os.date("%Y/%m", post.published_at)) return web:redirect(web:link("/post/" .. post_id)) end end blog:dispatch_post(add_comment, "/post/(%d+)/addcomment") function view_archive(web, year, month) local ps = posts:find_by_month_and_year(tonumber(month), tonumber(year)) local months = posts:find_months() local recent = posts:find_recent() local pgs = pages:find_all() return render_index(web, { posts = ps, months = months, recent = recent, pages = pgs }) end blog:dispatch_get(cache(view_archive), "/archive/(%d%d%d%d)/(%d%d)") blog:dispatch_static("/head%.jpg", "/style%.css") function view_page(web, page_id) local page = pages:find(tonumber(page_id)) if page then local recent = posts:find_recent() local months = posts:find_months() local pgs = pages:find_all() return render_page(web, { page = page, months = months, recent = recent, pages = pgs }) else not_found(web) end end blog:dispatch_get(cache(view_page), "/page/(%d+)") -- -- Views for this application -- function layout(web, args, inner_html) return html{ head{ title(blog_title), meta{ ["http-equiv"] = "Content-Type", content = "text/html; charset=utf-8" }, link{ rel = 'stylesheet', type = 'text/css', href = web:static_link('/style.css'), media = 'screen' } }, body{ div{ id = "container", div{ id = "header", title = "sitename" }, div{ id = "mainnav", _menu(web, args) }, div{ id = "menu", _sidebar(web, args) }, div{ id = "contents", inner_html }, div{ id = "footer", copyright_notice } } } } end function _menu(web, args) local res = { li(a{ href= web:link("/"), strings.home_page_name }) } for _, page in pairs(args.pages) do res[#res + 1] = li(a{ href = web:link("/page/" .. page.id), page.title }) end return ul(res) end function _blogroll(web, blogroll) local res = {} for _, blog_link in ipairs(blogroll) do res[#res + 1] = li(a{ href=blog_link[1], blog_link[2] }) end return ul(res) end function _sidebar(web, args) return { h3(strings.about_title), ul(li(about_blurb)), h3(strings.last_posts), _recent(web, args), h3(strings.blogroll_title), _blogroll(web, blogroll), h3(strings.archive_title), _archives(web, args) } end function _recent(web, args) local res = {} for _, post in ipairs(args.recent) do res[#res + 1] = li(a{ href=web:link("/post/" .. post.id), post.title }) end return ul(res) end function _archives(web, args) local res = {} for _, month in ipairs(args.months) do res[#res + 1] = li(a{ href=web:link("/archive/" .. month.date_str), blog.month(month) }) end return ul(res) end function render_index(web, args) if #args.posts == 0 then return layout(web, args, p(strings.no_posts)) else local res = {} local cur_time for _, post in pairs(args.posts) do local str_time = date(post.published_at) if cur_time ~= str_time then cur_time = str_time res[#res + 1] = h2(str_time) end res[#res + 1] = h3(post.title) res[#res + 1] = _post(web, post) end return layout(web, args, div.blogentry(res)) end end function _post(web, post) return { markdown(post.body), p.posted{ strings.published_at .. " " .. os.date("%H:%M", post.published_at), " | ", a{ href = web:link("/post/" .. post.id .. "#comments"), strings.comments .. " (" .. (post.n_comments or "0") .. ")" } } } end function _comment(web, comment) return { p(comment.body), p.posted{ strings.written_by .. " " .. comment:make_link(), " " .. strings.on_date .. " " .. time(comment.created_at) } } end function render_page(web, args) return layout(web, args, div.blogentry(markdown(args.page.body))) end function render_post(web, args) local res = { h2(span{ style="position: relative; float:left", args.post.title } .. " "), h3(date(args.post.published_at)), _post(web, args.post) } res[#res + 1] = a{ name = "comments" } if #args.post.comments > 0 then res[#res + 1] = h2(strings.comments) for _, comment in pairs(args.post.comments) do res[#res + 1 ] = _comment(web, comment) end end res[#res + 1] = h2(strings.new_comment) local err_msg = "" if args.comment_missing then err_msg = span{ style="color: red", strings.no_comment } end res[#res + 1] = form{ method = "post", action = web:link("/post/" .. args.post.id .. "/addcomment"), p{ strings.form_name, br(), input{ type="text", name="author", value = web.input.author }, br(), br(), strings.form_email, br(), input{ type="text", name="email", value = web.input.email }, br(), br(), strings.form_url, br(), input{ type="text", name="url", value = web.input.url }, br(), br(), strings.comments .. ":", br(), err_msg, textarea{ name="comment", rows="10", cols="60", web.input.comment }, br(), em(" *" .. strings.italics .. "* "), strong(" **" .. strings.bold .. "** "), " [" .. a{ href="/url", strings.link } .. "](http://url) ", br(), br(), input.button{ type="submit", value=strings.send } } } return layout(web, args, div.blogentry(res)) end -- Adds html functions to the view functions orbit.htmlify(blog, "layout", "_.+", "render_.+") return blog lua-orbit-2.2.1+dfsg/samples/blog/blog.ws000066400000000000000000000000271227340735500202250ustar00rootroot00000000000000return require "blog" lua-orbit-2.2.1+dfsg/samples/blog/blog_config.lua000066400000000000000000000073231227340735500217100ustar00rootroot00000000000000 blog_title = "Blog" cache_path = "page_cache" copyright_notice = "Copyright 2007 Foobar" about_blurb = [[This is an example of a blog built using Orbit. You can browse posts and add comments, but to add new posts you have to go directly to the database. This will be fixed in the future.]] blogroll = { { "http://slashdot.org", "Slashdot"}, { "http://news.google.com", "Google News" }, { "http://www.wikipedia.org", "Wikipedia" }, } -- Uncomment this to send static files through X-Sendfile -- use_xsendfile = true database = { -- driver = "mysql", -- conn_data = { "blog", "root", "password" } driver = "sqlite3", conn_data = { real_path .. "/blog.db" } } recent_count = 7 strings = {} strings.pt = { home_page_name = "Página Inicial", about_title = "Sobre o Blog", last_posts = "Últimos Posts", blogroll_title = "Links", archive_title = "Arquivo", anonymous_author = "Anônimo", no_posts = "No há posts publicados.", published_at = "Publicado às", comments = "Comentários", written_by = "Escrito por", on_date = "em", new_comment = "Novo comentário", no_comment = "Você esqueceu o comentário!", form_name = "Nome:", form_email = "Email:", form_url = "Site:", italics = "itálico", bold = "negrito", link = "link", send = "Enviar" } strings.en = { home_page_name = "Home Page", about_title = "About this Blog", last_posts = "Recent Posts", blogroll_title = "Links", archive_title = "Archives", anonymous_author = "Anonymous", no_posts = "No published posts.", published_at = "Published at", comments = "Comments", written_by = "Written by", on_date = "at", new_comment = "New comment", no_comment = "You forgot the comment!", form_name = "Name:", form_email = "Email:", form_url = "Site:", italics = "italics", bold = "bold", link = "link", send = "Send" } language = "en" strings = strings[language] months = {} months.pt = { "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" } months.en = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" } weekdays = {} weekdays.pt = { "Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado" } weekdays.en = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" } -- Utility functions time = {} date = {} month = {} local datetime_mt = { __call = function (tab, date) return tab[language](date) end } setmetatable(time, datetime_mt) setmetatable(date, datetime_mt) setmetatable(month, datetime_mt) function time.pt(date) local time = os.date("%H:%M", date) date = os.date("*t", date) return date.day .. " de " .. months.pt[date.month] .. " de " .. date.year .. " às " .. time end function date.pt(date) date = os.date("*t", date) return weekdays.pt[date.wday] .. ", " .. date.day .. " de " .. months.pt[date.month] .. " de " .. date.year end function month.pt(month) return months.pt[month.month] .. " de " .. month.year end local function ordinalize(number) if number == 1 then return "1st" elseif number == 2 then return "2nd" elseif number == 3 then return "3rd" else return tostring(number) .. "th" end end function time.en(date) local time = os.date("%H:%M", date) date = os.date("*t", date) return months.en[date.month] .. " " .. ordinalize(date.day) .. " " .. date.year .. " at " .. time end function date.en(date) date = os.date("*t", date) return weekdays.en[date.wday] .. ", " .. months.en[date.month] .. " " .. ordinalize(date.day) .. " " .. date.year end function month.en(month) return months.en[month.month] .. " " .. month.year end lua-orbit-2.2.1+dfsg/samples/blog/blog_schema.mysql000066400000000000000000000012521227340735500222620ustar00rootroot00000000000000CREATE TABLE blog_post (`id` INTEGER PRIMARY KEY NOT NULL, `title` VARCHAR(255) DEFAULT NULL, `body` TEXT DEFAULT NULL, `n_comments` INTEGER DEFAULT NULL, `published_at` DATETIME DEFAULT NULL); CREATE TABLE blog_comment (`id` INTEGER PRIMARY KEY NOT NULL, `post_id` INTEGER DEFAULT NULL, `author` VARCHAR(255) DEFAULT NULL, `email` VARCHAR(255) DEFAULT NULL, `url` VARCHAR(255) DEFAULT NULL, `body` TEXT DEFAULT NULL, `created_at` DATETIME DEFAULT NULL); CREATE TABLE blog_page (`id` INTEGER PRIMARY KEY NOT NULL, `title` VARCHAR(30) DEFAULT NULL, `body` TEXT DEFAULT NULL); lua-orbit-2.2.1+dfsg/samples/blog/blog_schema.sql000066400000000000000000000012521227340735500217140ustar00rootroot00000000000000CREATE TABLE blog_post ("id" INTEGER PRIMARY KEY NOT NULL, "title" VARCHAR(255) DEFAULT NULL, "body" TEXT DEFAULT NULL, "n_comments" INTEGER DEFAULT NULL, "published_at" DATETIME DEFAULT NULL); CREATE TABLE blog_comment ("id" INTEGER PRIMARY KEY NOT NULL, "post_id" INTEGER DEFAULT NULL, "author" VARCHAR(255) DEFAULT NULL, "email" VARCHAR(255) DEFAULT NULL, "url" VARCHAR(255) DEFAULT NULL, "body" TEXT DEFAULT NULL, "created_at" DATETIME DEFAULT NULL); CREATE TABLE blog_page ("id" INTEGER PRIMARY KEY NOT NULL, "title" VARCHAR(30) DEFAULT NULL, "body" TEXT DEFAULT NULL); lua-orbit-2.2.1+dfsg/samples/blog/dump.lua000066400000000000000000000022421227340735500204000ustar00rootroot00000000000000local luasql = require "luasql.sqlite3" local orm = require "orbit.model" local env = luasql() local conn = env:connect("blog.db") local mapper = orm.new("blog_", conn, "sqlite3") local tables = { "post", "comment", "page" } print [[ local luasql = require "luasql.mysql" local orm = require "orbit.model" local env = luasql() local conn = env:connect("blog", "root", "password") local mapper = orm.new("blog_", conn, "mysql") ]] local function serialize_prim(v) local type = type(v) if type == "string" then return string.format("%q", v) else return tostring(v) end end local function serialize(t) local fields = {} for k, v in pairs(t) do table.insert(fields, " [" .. string.format("%q", k) .. "] = " .. serialize_prim(v)) end return "{\n" .. table.concat(fields, ",\n") .. "}" end for _, tn in ipairs(tables) do print("\n -- Table " .. tn .. "\n") local t = mapper:new(tn) print("local t = mapper:new('" .. tn .. "')") local recs = t:find_all() for i, rec in ipairs(recs) do print("\n-- Record " .. i .. "\n") print("local rec = " .. serialize(rec)) print("rec = t:new(rec)") print("rec:save(true)") end end lua-orbit-2.2.1+dfsg/samples/blog/head.jpg000077500000000000000000000346021227340735500203430ustar00rootroot00000000000000JFIFHHExifMM*Created with The GIMPCC-"   J !1AQaq "27 &Brv#$36CERUVt 9!1AQaq"2#3$4 ?zTZA Fnb=KE%>tU1ӲfvBVPD Q#+TEShgEE$,[Ɂm5Fa2p2@|NPٿ8L\L\R2͝ NzKv$a\q;uf,f'2ba}z9ɩ%)I[a&RRRII~||y p?d'($3Y,sycԿB"o(bAF2XB$.1N]r;sd>LǙgml_ZrX\d6v~{dgaq&vKjEB{ya@e!TI4I-0]WẂyu\LǟCK@=AlKM(eaZ25[_x˰7bzxf ` 0o'a$i0[r 0l.2 s|ܵA6Mjitp]aOE4: 6R[FmN $(̦vQC9d()*J,]mHHd[Ju* lEndLLR͈!*?/55E|]=Xwث8" B-t~d<Q٥d<$:)PJa"~-T*Z`ҦtEh ekh2\D#ee`(ƙa ҝeAwqB%gQPiʺbÔ R^bDrGz/E#>S)͙1f+Cc19e6 Oɘx':sa il~keΡ?*J M KN%iJiIlۤRT$Ԥ8DJJjw$"uSvaDBˢ>%}YXQ0^vq̙o;vJӄyn?t).Y_P{F?ZlZ,`Yi@eCJ㡠 8i)C-ӿ0V%*mT!Ff`I(+ eKޕAKXfpTPHUGaA=g Th"*>!J\%{_:58DXi:yY%qyk)Li-% &9}%}WҖl35>>^}i NSIZSz^ZMv]/[_9sAru;SʒKS0sDXY$J %*:US a!uC9RXRb򤉺7 "t),BT`51ya0AWtg1XQy㉢%Ǒ9eʒ:DG0V~%@Zz.I)9xK]$=g>v}j}@BUpAEr:j5Ri4 i0oR~y|`_|^VJAi.So8IRҺW7KWe"Li7놘:奶d +j]%\)]c,w+sMq#=^5KOa])X@אo\^]Vv s{ OZbSʘDmO!n2p[՘o/s*zJ[I%p%px 9_  ^O/`*>~ryK.UאNURH!~Ik4³yxx^8m?qJ4'$!b*d)t%(7 w.S^X߿/^XR@+I`(@)0OC /@j[QwKQ$ E,gZ,m3򞘼dך ) '}]FC1!UTָ@M:LWAt UHp>L[֢;&.5pZbI[?41y@#U SIP6E\ zxU*-uUDr&)k&`gtPQ,]ml(!HOᅲJ߻Vy˚ 4Pu.,)EQA*@p%h\I^RJjHJ(\ XP&{ %%-ؼs $0%Ÿ@u_%%g]Ve*x{ysҡ$6 "*)wILP$j*5ni偸njm9S種$+ÍrtI|wx nbW8>?I|Cΰ\a 8 FFaBX_~rx{zV[Of8_gdlYFn np9C.C> C)J\1f*xjNѼ˚3,QrŜqCax,CF+]|{Ǩe}v^!QD=Ӿ^^# ?. s;:Dl y}'"p(>aϱ[mdR␒_Z_ZC2\|v I;)qg<9𿴯#Y@胷T,qY>df߫ ف;/:yمi@El9GfO[K;C r|f<e(g;][iotxt%Խ<1qY%)f$8P&f߈Bh7DQzHKTmJ'^Cf-1 j@AkE.ZXW>8kM=%^7dA9g > !E{+0LNE~3z:Pey4܍cGqo12_- Ȉ2ˆ&6q` Ko3x&OtuyF;ŻaF4l-Od{!9f>fpFogE#2b Ƴ ;1͚XpdEӮBmm2nڐdIJҩdgr!qC=(lh=Ƌ]2&$ ` q,aQsqcL/O.d`"Fxxl5dEK1Ph@r>//wm0Nm> 6c%_yho,Na<{_ΩB|/ 9Zcr-j2"-湤 XW[3(}qeeSK ZEjP!CAB5BS!zP|3pv a/F xE >lg2-c p6kg}Cx$)G7Gr^(;>/"(,dZݨ5F}²0xs}eȈ_Ma`J1Zyu0|"@]aYP;s^h]#dstC@Be VsXlU~l---)1gmq uh+Sp&@ &E@$*1bpI2#LjJ _/4`۸7 dw},Jhb(ZgrƂZU qodYgg]Syde0OA5f M'(~7]0..=$7wJć$|?/oj!-:&vby4 ] $)dYFvk'dJ ;9?4Nzh^!ݶÚidJt%`dZEk"s0FNe [|;̴m[2SlY-Zg`q6`vm s:{N<8L:/ ь=;w2[- |s^!_Wg-`1n%HWsKKyDق*m8C5ݶ2 hcm0?OiԳ yɱYAc*yPᙩĞ⎮͘ è6Жǰ$vivYC?iF V`GUZYR` $0RTMQ;L +F9c; 䤾RZkMRO.X((* k.aTj, IR4Ei/ ˎ.)^ښ) Q "XQ,5hptqgCyS "JZS %z f惮+T/IpA*twE\ 6:1qAE 5]dt_ Ҙڀ@R҆#q>_koopלe5Y}lDAT ()1K^C ]V ~K8j)YrU&um D[3}k R`NA}Pp@!^Dt =3q9ˏU-`A|—T@@L>\E[*Qg W-Ǘ]E3xUA(#K*]Pf!<~K|('JWU@S)>63k9Ldyi%{DWkjO[(0vrׄ家kE=ߋאX~u/.5MA (h<_ߞ(-m{hK ^`%;&`-$?gI'%J+SOo[ _ X'[m"h1TKgUCjU97puVV):*kAtSDXi0軂a@+uRz^6rBRa.zuctf/});\.UZ!%P@e}R gHrWkS)* ؼI-Zb&K{ra $^uUܹ֓ zzbš^> Ut%)jJTƸ<zSsKEQ|Vҡ5 xciǏ$! Hl2%R}fMF]B])tYztk<"__Y1_, +0![hi={DI@aqRu񘼞y}SD잣%9R@Q-9JTKiya0efsNKAj.-.I`[lǘb2}֖[JKRH2g;fʽر._ɥM*pAI wA\ PSPtP?( NוRA9m*k_5-ϝ9-y\w¸So@Ji(/*֠jM3L@USZxhJ@s?$Uo_y뉢|l7 '.!GD()>RֽPKzp>X_PZA0AAK9LU4O0N:/.t6,v@eJ.v]q{zp*Uay]W1 sPJB]i:{OY`nN rEz8>3YC9A%LBW]* \R2)%q=R(הUk.ouiK)SebwyVRߕt;BCG#3w=x"Cg\Ƚ8@i]1.Aw!~aoyr3QwdLɝ4IoE987$y3\\Ĝ*7sD]yq{Mu{u{r!!OLɖ,2F)s.)D!?]>yVQdy>E|v瑬g/H$y|\YAz*C.Ą!Yo40hEߵIRV^H"-Ac3 y5' Y+%p)˰dUc_295f8d_l"0C4Ǽ~}϶w*T5l-ܸ 2S lS,; a0$[eLzkӤaAeu%L$Z[BmHmjBTnJH ci$T55gQK. b|E5K4hlYM1l Ӭ:sO;=-%ТKh֋$5IJ`ZXd`d $l ]Q4 q_n Aip{@OnAšFRȑ3#j˗p4)eJiH<[bBr[e!l;1B Ş;`w8~+ki4#a@ky2 tEֵ/4@XOjAmҤQBJU0HE"| 52#x4`ҠpXLeCŚ+h %; 3$Dޡϱ(D2 8^aOooPh>{MkMѮcMKM4, A FsF%LS֗lQ  &äaAK{ ZC! "1){Ĩ7g;\֠\XAeh$dg\gQ/jy}0QQ,):1ߎ*ll"ԅ:.o4[CӼP~A) YӾXFnH:cZfu4cGl٦;ğ q͎k_{6yzv^vOiݳbY()8Y_4L* qeKg’KF2ABSklITV-ma&e;~&VIIhglk' u kL::՜K@n6pA4d'̭uz2.*#b -,[mm mfv@$%)L䔦@ MI$LyAA&7ڗ@-~l 5<Wr^,^<13/A/C,:2@@^x *{>Z|XPwy| vUD64T^J$ sZDj39{KJ{-9;iN",bW]㪈` Zo1r-l"R Tu}W{Nip Q> x[D+Z #`$Ņ AuS65Ixx^R r[U*Z@E<x*s9' wM灹}dm]mITii/kwKd@^A J/z(Syx? L"TyK?{iºc}\\ER临 qU@@@4(i]qrq}k\ Mj&%yxcuVTS'hFS9 jt ZiDh#-sOm?:گXBkK}G0y~!޲FieIW6[':2ػa}>!-L"_-==tOQߖ('QDܽ.,ey}QD-iRt:e0In(Y_Qw:}r{Gy /ťʳD*$ibm1뾣=0')/]E/GSxeӕe0SEP@*qRM15ɑ rs}q z̏=DKCQ$),"Um!"@=Fc,L+cƓ < W‡Z\Eˮ*׮Eb!"2xD0ZrnY^Ā7F.(2H4@ې pA=BZ^t e,&}>NUi3~8ɞ? u7 Xd""QOP%2xo<\Z#2۪z`N|)Jh1jl)Yͥϯ: A&(J1+9]}uD (R{ :W{< zxcsȕT凊-ÐE4WTA .]M5 g?vH+NXo*R   f<<<<* <֎?  ڌR-$Mc(< + ? " 1  D(   .   FZ D&S&N# W 1;;);<   fG,/<֎,cbcF1*fڌR-$MFO +O[ [[ [%1%  D(   -C.-nQ#n2 P]9FZ2 I%C|cS&N#InWt| /1t :g1 )' }ׇN,$9{(}ׇN,(2ԙ8*2>   f'ҕ.3 x2 ';nN11% /ҁbA" !A1*f,S&5 z,S&5 T I"Gq,  %7cMGq3 -3  /  v/  <U2< Q33P  HP %Cp5$5b p5  | G濋J ;tG:g9)6$9{77ԙ8y   f@ҁj۷Jҁ<֎z"A"I$+P_,S&5ڌR-$MDTT+l,Gq, '3  =K 1@X  e/  D( 6< x . 3 BA FZ$5bۊM*)iap5$5bS&N#W濋J<ۜ1G濋J1444f!!!!!! oƙ?I&5I[+(Euc(<  ?o  g "%   $ g R )_,&D1 sʘY2 L&- Background     ,Z-,~'E'Q']'i-,E`zF5P'-'9                                                        xx     xx  xx    xx                                                                                         xx     xx  xx    xx                                       ̞qqsffsОffqffqĬviivqffqͳwffwОff Ϳwf fwsffsͫff̞qqffΫffͿf fkkff wf fkkffwͳf fffwf fffwffffΫffffΎffkkffvffkkffviffiiffivffw ffffff wffwffwffwοffΫff ΢ffͪffwf fwwffwūviiv     ! !!"#$%$%%&&'()*+ !"#$%&&'()*+ !"#$%&'()* !"#$##$%%&'()*+  !!"#$%$%%&%&'&'(()()**+   !""#$%&'&''(())*+ !"#$%&'()*+ !"!"##$#$$%&'()*)*++ !"!"##$%&'()*+  ! !!""##$%&%&&'()*+  !!"!""##$$%&'()*+  !!"##$%$%%&'(()**+, !"#$%&'())+*+ ! !"!"##$%&'()*+ !"#$%&'()*+,  ! !!""#$%&'()*+ !"#$#$$%%&%&&'()*+ !"#$%%&'(()())*+ !"#$%&'()*)**++ !"#"#$$%&'()*+,  !!"#"#$$%&'()*+, !! !""#$%&%&&''(()*+ !""#$%&'()()**+ !"#$#$$%%&&'()*+ !"#$%&'()()**+, !"!"##$%&%&''()*+ !"##$%&'()*+,  !"#$%&'()*+ !"#$$%&%&&''(()*+*++ !"#$%&'&'((*+,+ !"#$%&%%&''()*+  ! !!""#"##$$%&'&''(()(**+,+ !"#$%&'())*+,+ !!"#$%&'()*+ !"#$%%&'()*+, !"#$%%$%&&'('(()*+,,  !!"#$%&&'(()*+*+,+  !"#$%&'('(())**+ !"#$%&'()*+*+,+ !"#$%%&'()*+,, !"#$%&'()*)**++,, !""#$%%&'()*+, ! !!"#$#$$%%&''()*+*++,  !"#$#$$%&'()*+, !"#$%$%&%&&'()*+,+, ! !""$%&%&&''()*+ !"#$%&'('()())**+ !"#"#$$%&&'(')())**+ ! !!""$%&'&''(()*+ !"##$#$$%&&('()(())**++ !"#$#$%%&'()*+ ! !!""#$%&&'()**+  !"#"##$$%&'()*+ !"#"##$$%&%&''()*+  !!""#$%$%%&&'()*+  !"#$%&'()*+ !"#$%%&%&'&''(()*+ !"#$#$$%%&'())*+,  ! "!""#$#$%%&'()*+ !"#$%&'()*)+*++ !"#$%%&'()()**+ !!"!""##$%$%&&'&'(()())**+ ! !!""#$#$$%%&&'()())**++  !"#$%&'()*+ !"#$$%&'()*+ ! !!""##$%&%&&''()(**+, ! !!"!""##$$%%&'()*+, !"!""##$%%&'()*+  !"#$#$%%&'())*+  !!"#$%&%&''()*+, !!"!"##$#$%$%%&&'()*+, ! !!"!""##$$%&'()*++, ! !!"#$#$$%%&'()())**+, !"#$%&'()*+ !"#$#$%%&'('(())**+,  !!"##$%&%&''()*+,,  !"#$%&'('())*+  !"!"##$#$$%%&&'()(*)*+*+,, !"#$%&&'()*+*+,  !"#$%%&'()*+, !"#$#$$%%&'()*++,  ! !!""##$%&'()*+,  !""#$%&'&''(())*+ !"#$%&%%&''()*+,, !"#$#$%%&'()*)*+*++, !"#$%&'&'(()*)**++,  !!"#$%&%&'&''(()(**+, !"##"#$$%&'&''(()*+,  !"#$%&&'&'(()*+, !"#$%&'()*+,                     +,,-./012354556789::9::;;<==>>?@A++,,--../0123456789:;<;<<==>?>?@@AA+,,-./0/01011223234456789:;<<=<>>?@A+,-./01213233456789:;<=<=>>?@,+,,--.././/01011234567889899;:;;<=>?@?@@A,,-./0123456767878899:;<=>?@A,,-./0123456789:;:;;<=>?@A+,,-.-..//00123456657789::;<>?@A+,,-.-..//0012122334545567789:;<=>?@A@,+,,.--../0123456789:;:;;<<==>?@?@@AA,,-./01223456789::;<;<<==>?@A+,-,,-.-//01234565667789:;<;<<==>??@A+-./01233456789:;<<=>?@A+,--.-..//00112345678778989:9;:;;<=>?@A,-,-../01234456767789:;<=>?@A,-../01234567789:9:;;<=>?@A@A,,-./012345667889:;:;<;;<<==>>?@A+,,-./0123456789:;<=>?@?@@AA+,-,--../0112323345455667889:;:;;<=>?@AA,-/0/001122345567789::;<=>?@A,,-./0123456789:;:;;<<==>?@A,-././0/0101223456789:;<=>?@?@@A@A,,-,--./0121223456789:;:;;<<=>?@AB,,--./01234565677677889:;<=>?@?@A@AB,,--.-..//0123233545566789:;<=>?@A+,,--.-/.//0123456789:9::;;<=>=>??A@AA,,--./0/01123234456567677899:;<=<==>>?@?@AA,-./01123456789:;<;<==>?@A,-./0122344567899:;<<=>=>>??@A@A+,--././00123456789::;;<;;<==>?@A,-./01011223456789:;<;=<<=>>?@?@@AAB+,,--../012345455667789:;<=>?@@A@AB,,--./01123456789:;;<;<<==>>?@AB,,--.//01212233445567889:9::;<;<<=>=>>??@AB,--./0123433556789:;<=<==>>??@A,-,--./0123456789:;<<=>?@AA@AA,,--./011232344556789:;<=>?A@AAB,,--./01011232334456767789:;<=>?@A@AA,-.//0123456789:;<;<<=>?@A,--././00101212233456567789:;<=<=>=>>??@@ABB,,--.-..//01011232343455677878899:9::;;<<=>?@A,-.-../0/0112345567889:;<;<=<==>>??@ABA--,--././00123234456789:;<<=>?@AB,-./0123434456789:;:;<<=>=>>?@@ABA,--.-..//01123456789:;<;<==>=>??@@A@AB+,,--././0010122345567789:9::;;<=>?@+,,-./0123456789:;<=>?@A@++,,--././00121233456789:;:;;<<=>=>??@?@@A++,--,--.//0101122343445567789:;<=<==>??@?@@A,,-./01234344566789899;:<<=>?@A+,,-,--../01232334456789:;<=>?@A@++,,-./0123456789899::;<;<<==>?@A+,,-./01123234456789:;<=>?@A@A+,--,--../01234567889:;<=>?@+,,-./011012234344556789:;<=>=>?>??@@A+,,-./01234556778989::;<=>?>??@@AA+,,--./01233454556789:9::;;<;<<=>?@A++,--.//0/001233456789:;<=<=>>?@A+,,-./.001211233456789:9::;;<=>==>>?@@?A@A,,-./0123456789:;<=>?@A+,,-,--.//012323434556789:;;<=>=>>??@@A@A+,,--./010112346787899:;<=>?@A,-../01212334567789:;<=>>?@A,-../0123456789:;<=>?@@A,-./0121223344545667878899::;<=>>?@A,-.-..//0101122334545567789:9::;;<=>=>>?@?@AA+,--./01012234556567789:;<=>?@A+,--./0121223344567677899:;<=<==>>?@A+,,--./.0/0011234567889:;<<=>=>>??@A,-././/00123456789:;<=>??@AA,-./0123456789:;:;;<=>?@A@AA,,--.-..//01234345567889:;<=>==>>?@A,.-../0010112245656767788:;<=>?@A@A,,-,-.././/01234556789:9:;;<=>?>?@@AB,,-./00123456789:;<=<=>=>??@AB,,-./012344567789:;<=>?@AB+,--./0/0101212233456789899::;;<<=>?@AB+,--../001234567789:;:;<<=>?@AB,,-./01234556789:;<=>?@A,--././/001234566789:;<=>?@@A@AA,,--./0/00124344556789::;<=>>?@A,-.-..//0123456767789:;:<<=>?@AB,--./01234556789:;<=>?@@AB,,--../012343445567899:;<=>?>??A,--.-.//010121323345678989:9::;;<<=>?@?@@A,-././/0012232334556789:;<;<<==>>?@?@@AAB,,--././00/01121123345677899:;::;;<<=>?@A@AB,--./0/00123456789:;<==>?@AB,--../0123456567789::;<=>>?@@AB--./01212234556789::;<=>??@A                             @AABBCCDEFGHIJIJJKLMLMNNOPOPPQRSTUVABCBCCDDEFGHGHHIIJIKJKKLLMNONOOPPQRSTUVABCDCDDEEFFGIHIJJLMNMNOOPOPPQRSTUVWVAABCDDEFGHIJKLMNOPQQRSTUVWAABBCCDEDEEFFGHGHIIJKJKKLMNNOPQRSTUVUVVWABBCDEFGFGGHHIIJKLKLMMLMNNOPQRQRSSTSTTUUVVWAABBCCDEFEEGFGHHIJKLMLMMNNOPQRSTUTTVUVVWABBCDEFFGHGHHIJKLKLLMMNMNNOOPQRRQRRSSTUTUUVVWWABBCDCCDEEFFGHIJKLMNOPQPQQRSSTUVUUVVABBCDEFGHIJKLMNOPQQRSTUVUVVWAABBCDEFGHIJKLMNOPQRSTUTUUVVABCCDCDDEEFGHIJKMLMMNOPQRSTSTUTUUVABBCDEFFGHIJKLMMNOPQRSTUVABBCDEFEFFGHIIJKLKLMMNOOPQRSRSTTUVABBCDCDEDEFEFFGGHHIJKLKLMMNOPQPQQRRSSTUVWBBCDEFEFFGHIJKLMMNOOPQRQRSSTSTUUVWAABCBCCDDEDEFFGHGGHHIJJKLMMLMMNNONOPPQQPQRRSTUVWABCCDCDEDEEFFGHIJIJJKLLMNONOOPPQRSTSTUUVWABBCCDEFGHIJIJKJKKLLMMNOPQRSTUVWWABBCCDCEEDEFFGGFHHIJKLMMNOPQQRSSTTUVWBABCCDEFEFFGHHIJKLMMNOPQQRSTUVWBABCBCDDEFGFGHHIJKLKLMMNOOPQRQRRSTUVWBBCDEFGGHIJKLMNOPQRSTUVUVWWAABCBCCDDEFFGHGHIIJKLMNONOOPPQRRSTSTUTUVVWABBCDEEDFFGHIJKLKKLLMNOPOQQRSRSSTUVWABBCCDCEEFGHIJKLMLNMNONOOPPQRSTTSTUUVWWABBCCDEFGHIJKLMNOONOOQPQRQRRSSTUVWBBCDEFGHHIHIIJKJKKLLMMNOPQRSTUVWVWABBCDDEFGHIJKLMNOPOQPQQRSTUUVWWBCDEEFGHIIJKJKKLLMNOPPQRSTSTTUVVWBCDEFGHIJKJKLLMNMNOOPPQRSTSTTUUVWBCDEFGHIJIJKKLMNOPPQRSTUUTUVUVVWABBCCDEDDEFEFFHGHHIJKLMNMONOPOPPQQRRSTUVUVVWBBCCDCDEEFGHIJKLLMNOPQRSTUVWVWWABCCDEFFHGGHHIIJJKLMLMNNOPOPPQRRSTUVWBCDEFGFGGHHIJJKLMNOOPQRQRSSTSTTUUVWBCDEFGHIJKLMMNOPQRSTUUVWBCBCCEDEEFGGHIJJKLMNOPQRSSTUVWBCDCDEDEEFGFGGHIJKKLMMNOPOPPQRSTUTUUVWXBBCDEDEFFGHIJJKLMNOPQRQRRSTTUVWVWWBBCDEFGHIJKLMNOPOPPQQRSTSUTUUVWBCDEFGHGHHIJKJKLKLLMMNOPQPRRSTUVWBCDEFGHIJKKLMNOOPQRSTUTUVVWXBCCDEFGHIHIIJKJKKLLMNOPQRSTUUVWBCDEFEFGFGGHHIJKLMNOPQRSRSSTUUVWABBCDEFGHIJJKLMNOPQPQQRRSSTSTTUVABCBCCDDEFGHIJKLMONOOPPQQRSTSTUTUVUVWAABBCDCDDFGHGHHIIJJKLLMNMNNOOPQPQQRSRSTSTUTUUVVABBCDEEFGHIJKLMNONOOPPQRSTUVABCBCDCDEDEEFFGGHIJKLMNOPQPQQRRSTUVWABBCCDCDDEFGHIJKLMNMNOOPQRSTSTTUVVWABBCDEEFGFGGHIIJIJJKLMLMMNONOOPPQRSTUVABABCBCDDEFEFGFGHGHHIJKLMNOPQRTUVWAACBCCEFEFGGHIJKLNMNNOPQRSRSSTUUVABCDEFEEFGGHIJKLMNONOOPPQQRSTSTTUUVWABBCDCDDEFEEFFGGHIJKLMNMNNOPOPPQQRSSTUVWAABBCBCCDEEFGHIIJKLMNOPQPQRRSTUVVWABCDEFGHIHIIJJKKLKKMMNOOQPQQRSTUTUVVWAABBCCDEFGHIHIJIJKKLKLLMMNNOPQRSTUVWAABCCDCDDEEFGHIJKLMMNONPOPQPPQQRRSSTUVWBBCDCDEDEFEFFGGHIHIJJKLMNOPQQRSTSTUTUUVVWABBCDEFEGGHGHHIIJKLNONOOPPQPQQRRSTSTTUUVWWABCDDEFGGHIJKLMNNOPOPPQRSTUTUVUWWBCDEFGHIJKLMNOPQRQSSTUVWWBBCDDEFGHGHHIJKLMNOPQRSTUVUVWWBBCDEFGHIJJIJJKKLKLLMNNOPQPQQRSTUVWABBCDEFGHIJKJKKLLMNOPQRSRSSTTUUVWWABCDEFGHIJIJJKKLKLLMMNMNOOPQRSTTUVVWBBCDEFGFGHHIJKLMNOPQRSTUVWBCDCDDEEFFGHIJKLMLMMNOOPQRSTUVUVWWABCBCCDEEFGHIJKLMNOPQRQRRSSTSTUUVUVVWWBBCDEFGHIJKLMNONOOPPQQRSTUVWBBCBCCDDEFGHGHHIIJLKLMLNNOPQRSTSTUUVWBCDEFEFGFGGHIJKLMNOPQPQQRRSTUVWBABCCDEFGHIJKLKLLMMNNOPOPPQRSTUVVWBCDEDEEFFGHIJKLMNOPQRQRRSSTTUTUVVWBCDEFEFFGHIHIIJKLMNOPQRQRRSSTTUVWABBCDEDEFFGHIHIIJKJJLKLMLMMNNOPQRRSTUTUUVWBCDEFGHIJKLMMNMNNOOPQRSTUVWABBCCDEFGHIJKLMNOPQRSSTUVWBCDEFGHGHHIJJKLMNMNNOOPQRSTSTTUUVWBCDEFGHIJKKLMNOPQRSTTSTUTUUVVWWBCDCEDEEFGHIJKLMNOPRQRRSSTUTUVVWBCDEEFGHIJKLMNMNNOPOPQQRTUVWBCDCDDEFGHHIJKLMMNOPQRQRRSTUVUVWWBCBCDCDEDEEFFGHIJKLMNOPOPPQPRQQRSRSTTUVWBCBCCDDEFGHIJKLMNOPQRQRSSTUVWBCDEEFGHGHHIIJKLMMNOPQPQQRQRRSSTTUVWVWWBBCCDDEDEFEFFGGHIJIJKKLMNONOPPQRSTUTUVUVWVWWBBCDEFFGHIJJKLMNONOPPQRSTUVWX                     VWWYZ[\[\\]]^^_`abcdefghijklWXXYZ[\]^__`_``aabbccdcddeefghikjjklklWWXXYZ[\[\]]^_`abcdefggfhhijklWXYZ[\]]^_`_``abbcdeefgfghghiijklWXXWYXYZYZZ[\]\]]^^__`abcdefghijijjkklWXWXXYYZ[\\]^__`abcdcddeeffghijklWXYZZ[ZZ\\]^__`a`aabbccdefghihiijjkklWXYZ[\]^_`_``aabcdegffghhijjkjklkllWWXXYZ[\]^]^^__``abcdeffeffgghhijklWXYZ[\]]^_`a`aabbcdeefgfgghijklmWWXXYZ[\]^_^_`_`aababbcdefghijklmWXXYZ[Z[[\\]]^_`_`aabcdefghghiijklmWXXYZZ[\]^_`abbcdeefghghihiijjklmWWXXYZ[\]^_^``acdefghijlkllWXYZ[\[\\]^_^__``aabcdefghijkjkklmmWWXXYYZ[\]\]]^^_`abcdefeffgghijkllmXXYZ[\]^`_``aabcdefgghghhiijkjkllmlWWXXYYZ[\]^]^^__`abcdefghijkklmWXXYZ[\]^__`a`aabbcdcddeefghihiijjkllWXYZYZZ[[\\]]^_`abcdcddefghgihijjkjjkklmmXWXYYZ[\]^_`abcdeefghijklmWXYXYZZ[\[\\]^_`abcdeffghijijjklmXXYZ[\]^__`abbcbbcddefghijklmXYZYZZ[\\]^_`abcdefgghihijjklWXYZ[\]^_^__``abccdefefgfhghhiijjklmWXXYYZ[[\[\]\]^]^__`__``aabcdefefgghihiijklklmlXWXXYYZZ[\]\]]^^__`abccdeddeffghijklmmWXXYZ[[\]^_`abbccdefghijijjklmXXYXYYZZ[[\]\\]^^_^_``abcdedeefghhijklmWXXYYZ[\]]^_`abcbccddedeeffgfghghiijkklklmmXXYZ[\]\]^^__`abcdcdeefghijklklmmWXXYYZYZZ[[\]^_`abcdcdeefghijkjlkllmmXXYZ[\[\\]^]^^__`abcdefgfhghhijkklmmXYZYZZ[\]^_``abcdefghijklmWXYYZYZZ[\[\\]]^_`abcddedefefgghijklmXYZ[\]^_`ababbcddefefgghijijjkklmWXXYYZ[\]^_`_``abbcdefghihiijklmXYZ[\]^_`abcdefghijklmWXXYZ[Z[\[\]]^]]^^_`_``a`ababbcdefghijklmlmXXYZYZ[[\]^]]_^__``abcbcddedeffghijkjkllmXYZ[\]^__`a`abbcddefghiijkjklkllmmXXYZ[\]^^_`abcdefghihijjkjklkmllnXXYZ[\]\]]^_`abcddefghihiijjklmmXYZ[\[\\]]^_`a`bbcdefgfgghhiijklmXYZ[\]^_^__`aabcdefghijkjkllmWXYZYZZ\[\\]^_`aabbcdefgfghghiijklWXWXYXYYZ[[\]^_`_``abaccdefghijjkjkklWXYZ[\]^__`_``abcdefghihiijjlWXYZ[\]^^_`abcdefghijklWXYZ[\[\\]]^_`abcbccddeefghijklWXYZ[\]]^_`abcdefghijklkllWXWWXYYZ[\]^]^^__`abcdefghijijjkjkllWXYZ[\]^_``acdefghijklWXYXYYZZ[\]]^_``abbcdeddeffghijkllWXYZYZZ[\]^_`abcdfeffghijklWXYZ[\]^_abcdefghijklWXYZ[\]^_``abbcdefghghhijkklWXYZ[\]]^]^^_`_`a`aabbccddedeefgfgghijjklmWWXXYZYZ[[\]^_`abcdefghijjkjkklWXYZ[\]^]^__`abcdefghijklmlWWXYZ[\[\\]]^_`abcdefghijklWXYYZ[ZZ[\\]\\]]^__`__`aabcdefghijklWXXYZYZZ[\\]\^^]_^__`abcdcddeeffghghihiijjkklmWXXYYZ[\]^__`abcdcddeeffghijkmWXYYZ[\]]^_`abcdcddeefgijiijkklWXXYZZ[\[\\]]^^_`a`aabcdcddeffghijklkkllWWXXYYZ[Z[\\]^_`a`aabcdefghijkllWXYZ[Z[[\\]^]^__`abcdefghijklmlXXYXYYZZ[\]^_`a`aabcdcddefgfhhijijjkklmXWXYXYZYZZ[[\]^_`abcdefegghijklmXXYZ[\]^_^__``abcdefghijklmWWXXYZZ[\[\]]^_^_``abbcdefghijklmlmWXXYYZ[Z[\[\\]]^^_`abcdefghghhiijkllWXXYYZ[Z[\\[\\]]^^_`abcddefghhijklXYXYZZ[\[\]]^_`_`aabcdeefghijklmmWWXXYYZ[Z[[\\]\^^_`abcbccdefefgghijklmWWXYYZ[\]]^]^^__`__a`aabcbccddefghijijjkklmXYZYZZ\]^__`abcdedeffghihiijjklmWXXYYZZYZZ[\\]^_`a`aabbcdefghijkllmXWXXYZYZZ[\\]^]^^__``abcdefgfgghhijklmlWXXYYZ[Z[[\]^_`abcdefghghihiijklkllmmXXYXYZYZZ[[\\]^_`abcdefghhijklmXWYXYZYZ[[\[]\]]^^__`abbcdeefghijklmXYZ[[\]^]_^^__``abcddefghijklmlmXXYZ[\]^_`a`aabbdcddefeffgghijkjkkllmXYZYZZ[\]^_`abcdceefghijkklkllmmXXYYZ[\]\]^]^^__`abcdefefgghijklmXYZ[\\]^_`abcdcddeefeffghijklmWXXYZ[\]]^_`ababbccdefefgghijklmXYXYYZZ[\[\\]]^^_`abcbccddeefgfgghhijkjkklmm                              lmmnnoopqrstuvwxyz{|{||}}~mmnopopqqrqrrsstuvwxyz{{|}~lmmnonopoppqrsstuvxwxyxyyz{{|}~mnopqrstuvwvwwxyyz{|{|}}~lmmnnopqrsttuvwxyz{|{|}|}}~~lmmnopqrstuvwxyzz{|}~lmmnnoppqrstuvwvwwxyz{|}~lmmnnopqrrsrsstuvuvvwwxyxyzz{z||}~mmnnonnooppqpqqrrstutuuvvwxyzyz{{|}}~lmmnnoopqpqrqrrsstuvwxyyzz{z{||}~lmmnnoopqrstuvwxyz{{|}~mnoopqrqrsstuvwxyxyyz{z|{||}~mmnopqrstuuvwxxyz{z{||}~mnmnnoopqqrsstuuvwxyz{|}~mnopqrsttuvwxyz{|}~mmnmnoopqqrstuvxwxxyz{|}~~mmnnopqrstvwxyz{{|}~~mnoprqrrstuvwxxyxyyzz{{|{|}}~~mnnopqrstuvwxwyxyyz{|}~mnopqrsstuuvwxyz{|}~mnnonoppqpqqrsstuvwvwwxyxyyz{|}~lmmnnoopqpqqrststtuuvwxyxyyzz{z{||}~mmnnopqrrstuvwxyxzz{|{|}}~mmnnonoopprstuvwwxyxyzyz{{|}|}}~~mnnonoopqrsrrssttuvwxyxzyz{z{{||}~~mmnnoopqsrssttuvwxyz{|{||}~mmnnopqrsrsstuvwxyz{|}~mnnopqpqqrstuvuvwwxyz{|}~}~~mnnopoppqrsstuvwxyz{||}~~mmnnooppqrqrrstuvwxyz{|}~mnmnnooppqrstuvwxyyz{|{{|}}~~mnopqrststtuuvvwxyz{|}~mnnopqrqrrssttuvwxwxxyyz{|}~􁂁mmnonoopqrsstutuuvwxyxyyzz{|}~mmnoopqrqrrsstuwvwwxxyzz{|}~nmnnooppqrsstuvvwxyzzyzz{||}~~mnnopqrstuvwwxxyz{{|}~mmnnoopqrstuvuwwxyzyyzz{||}~~nmnonoppqrstuvuvwwxwxxyyzz{|}~mnoppqqrstuvwxyz{|}~nmnnoopqrsrsttuvwvwwxxyyz{|}~~noppqrstutuvvwxyxyyz{zz{{|}~mnnopqrstuuvwwxyz{|}~~nopqrsrsttuvwxyxyzz{|}~nopqpqrrstuvwxyz{|}~mnopqrsrsstuuvwxxyz{|}~򀁀mmnmnnoopqpqqrrsrssttuvwxyz{||}~lmmnopqrststtuuvvwxwxyxyzz{z{{|}~mmnopqrstuvvwxyyz{|}~lmmnopqrsrssttuvwxyzyzz{{|}|}}~~mnonooppqrstuvuvvwxxyz{z{||}~mmnnopqrstutuuvwxyz{z{{|}~}~~mnopqrsttuvwxyz{|}~mmnopqrstuvwxyz{z{||}~mnopqrstuvuwwxyzyz{{|}|}}~~mnopqpqqrstuvwxyz{|}~~mnopqrsstuvwxyyz{|}|}}~lmnnopqrstuvwxyzyz{z{{|}}~mmnopqpqqrrstuvwxyyz{||}~mnnmnnopopqppqqrrstuvwxyz{|}}~mnmmonooppqqrsrssttuuvwxyz{|}|}}~~mnopqrstuvvwvwwxyzzyzz{||}~mmnopqrststtuvwxyzyzz{|}||~~mmnnopqpqrrststuuvwxyxyyzz{||}~mmnnopqrsrssttuvwxyz{{|{||}~mnnoppqrstuvwxwyyzyz{z{{|}~~mmnopqrrstuvuvvwwxyz{|}~mmnnopqrqrsstuvwxyz{|}~}~~nmmnnopqrrstuvwxyz{|}~~mnopqrsttuvuwwxyz{|}~mnoprstuvwvwxxyz{|{||}}~mmnnoopqrsttuvwxyyzyz{{|}~쁀mmnonnooppqqrrstuvwxyxyzyz{{|{{|}}~}~nnopqrsstuvwvwwxyyz{{|}~mmnnoopqprqrrstuvwvwxwxyyz{z{||}|~}~~mmnnoopqrqrrsstuuvwxyzyyz{{|}~mnoppqrstutvuvvwxwwxyyz{|}~mnnoppqpqqrsststtuvuvvwxyyz{|}|}~~nnopoppqqrrstuvwxwyyz{|}~mnnopqpqqrrstuvwxyz{|}~~mnmnoopqrstuvwxyz{|}~~nmnoopqrstutuvvwxxyz{zz||}~nmnnpqrqrsstuuvwvwxxyz{|}|}~}~nmnnopopqqrsrrssttuuvwxyz{{|}|}~~mnnopqrsrssttuvwxxwyyz{|}~nnopoppqrqrrstuvwxyzyzz{{|}|}}~~~nnopqrstuuvvwxyxyyz{z{{||}~}~~nopqrstuvwxwxxyz{|}~nopqrstuvwxxyz{|}~monoopqpqrrstuvwxyz{|}~                          䑒􏎏鎏􆇇򗘗󔓔𖗖                          鮘򚛚罹󝞞񭮭󬫬򟠟𬫬󠡡򧨧󚙚񨩨拉񬫬󣢢殯                           ĮĮîĮĮĮĮĮĮ󳲳ĮįįĮįïĮĮ컺įįĮįįŮĮ󹸹𺹺ĮĮ󷶷ĮĮĮĮ󱰱ĮîĮĮį򶵶îĮĮ󷶸ĮĮĮů                       ''((%'&(%((&(&(((''((''())(*)(()))((()'*)))++&%&('%('(')'&())('((')*()))(*))))'**(**)*+**(&**(+(&(,*((('**+,)/'+).) (-()+'+,+,( +,- *-*/*. @ @ @h Z-lua-orbit-2.2.1+dfsg/samples/blog/markdown.lua000066400000000000000000001161261227340735500212640ustar00rootroot00000000000000#!/usr/bin/env lua --[[ # markdown.lua -- version 0.32 **Author:** Niklas Frykholm, **Date:** 31 May 2008 This is an implementation of the popular text markup language Markdown in pure Lua. Markdown can convert documents written in a simple and easy to read text format to well-formatted HTML. For a more thourough description of Markdown and the Markdown syntax, see . The original Markdown source is written in Perl and makes heavy use of advanced regular expression techniques (such as negative look-ahead, etc) which are not available in Lua's simple regex engine. Therefore this Lua port has been rewritten from the ground up. It is probably not completely bug free. If you notice any bugs, please report them to me. A unit test that exposes the error is helpful. ## Usage require "markdown" markdown(source) ``markdown.lua`` exposes a single global function named ``markdown(s)`` which applies the Markdown transformation to the specified string. ``markdown.lua`` can also be used directly from the command line: lua markdown.lua test.md Creates a file ``test.html`` with the converted content of ``test.md``. Run: lua markdown.lua -h For a description of the command-line options. ``markdown.lua`` uses the same license as Lua, the MIT license. ## License Copyright © 2008 Niklas Frykholm. 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. ## Version history - **0.32** -- 31 May 2008 - Fix for links containing brackets - **0.31** -- 1 Mar 2008 - Fix for link definitions followed by spaces - **0.30** -- 25 Feb 2008 - Consistent behavior with Markdown when the same link reference is reused - **0.29** -- 24 Feb 2008 - Fix for
     blocks with spaces in them
    -	**0.28** -- 18 Feb 2008
    	-	Fix for link encoding
    -	**0.27** -- 14 Feb 2008
    	-	Fix for link database links with ()
    -	**0.26** -- 06 Feb 2008
    	-	Fix for nested italic and bold markers
    -	**0.25** -- 24 Jan 2008
    	-	Fix for encoding of naked <
    -	**0.24** -- 21 Jan 2008
    	-	Fix for link behavior.
    -	**0.23** -- 10 Jan 2008
    	-	Fix for a regression bug in longer expressions in italic or bold.
    -	**0.22** -- 27 Dec 2007
    	-	Fix for crash when processing blocks with a percent sign in them.
    -	**0.21** -- 27 Dec 2007
    	- 	Fix for combined strong and emphasis tags
    -	**0.20** -- 13 Oct 2007
    	-	Fix for < as well in image titles, now matches Dingus behavior
    -	**0.19** -- 28 Sep 2007
    	-	Fix for quotation marks " and ampersands & in link and image titles.
    -	**0.18** -- 28 Jul 2007
    	-	Does not crash on unmatched tags (behaves like standard markdown)
    -	**0.17** -- 12 Apr 2007
    	-	Fix for links with %20 in them.
    -	**0.16** -- 12 Apr 2007
    	-	Do not require arg global to exist.
    -	**0.15** -- 28 Aug 2006
    	-	Better handling of links with underscores in them.
    -	**0.14** -- 22 Aug 2006
    	-	Bug for *`foo()`*
    -	**0.13** -- 12 Aug 2006
    	-	Added -l option for including stylesheet inline in document.
    	-	Fixed bug in -s flag.
    	-	Fixed emphasis bug.
    -	**0.12** -- 15 May 2006
    	-	Fixed several bugs to comply with MarkdownTest 1.0 
    -	**0.11** -- 12 May 2006
    	-	Fixed bug for escaping `*` and `_` inside code spans.
    	-	Added license terms.
    	-	Changed join() to table.concat().
    -	**0.10** -- 3 May 2006
    	-	Initial public release.
    
    // Niklas
    ]]
    
    
    -- Set up a table for holding local functions to avoid polluting the global namespace
    local M = {}
    local unpack = unpack or table.unpack
    local MT = {__index = _G}
    setmetatable(M, MT)
    
    ----------------------------------------------------------------------
    -- Utility functions
    ----------------------------------------------------------------------
    
    -- Locks table t from changes, writes an error if someone attempts to change the table.
    -- This is useful for detecting variables that have "accidently" been made global. Something
    -- I tend to do all too much.
    function M.lock(t)
    	local function lock_new_index(t, k, v)
    		error("module has been locked -- " .. k .. " must be declared local", 2)
    	end
    
    	local mt = {__newindex = lock_new_index}
    	if getmetatable(t) then
          mt.__index = getmetatable(t).__index
       end
    	setmetatable(t, mt)
    end
    
    -- Returns the result of mapping the values in table t through the function f
    local function map(t, f)
    	local out = {}
    	for k,v in pairs(t) do out[k] = f(v,k) end
    	return out
    end
    
    -- The identity function, useful as a placeholder.
    local function identity(text) return text end
    
    -- Functional style if statement. (NOTE: no short circuit evaluation)
    local function iff(t, a, b) if t then return a else return b end end
    
    -- Splits the text into an array of separate lines.
    local function split(text, sep)
    	sep = sep or "\n"
    	local lines = {}
    	local pos = 1
    	while true do
    		local b,e = text:find(sep, pos)
    		if not b then table.insert(lines, text:sub(pos)) break end
    		table.insert(lines, text:sub(pos, b-1))
    		pos = e + 1
    	end
    	return lines
    end
    
    -- Converts tabs to spaces
    local function detab(text)
    	local tab_width = 4
    	local function rep(match)
    		local spaces = -match:len()
    		while spaces<1 do spaces = spaces + tab_width end
    		return match .. string.rep(" ", spaces)
    	end
    	text = text:gsub("([^\n]-)\t", rep)
    	return text
    end
    
    -- Applies string.find for every pattern in the list and returns the first match
    local function find_first(s, patterns, index)
    	local res = {}
    	for _,p in ipairs(patterns) do
    		local match = {s:find(p, index)}
    		if #match>0 and (#res==0 or match[1] < res[1]) then res = match end
    	end
    	return unpack(res)
    end
    
    -- If a replacement array is specified, the range [start, stop] in the array is replaced
    -- with the replacement array and the resulting array is returned. Without a replacement
    -- array the section of the array between start and stop is returned.
    local function splice(array, start, stop, replacement)
    	if replacement then
    		local n = stop - start + 1
    		while n > 0 do
    			table.remove(array, start)
    			n = n - 1
    		end
    		for i,v in ipairs(replacement) do
    			table.insert(array, start, v)
    		end
    		return array
    	else
    		local res = {}
    		for i = start,stop do
    			table.insert(res, array[i])
    		end
    		return res
    	end
    end
    
    -- Outdents the text one step.
    local function outdent(text)
    	text = "\n" .. text
    	text = text:gsub("\n  ? ? ?", "\n")
    	text = text:sub(2)
    	return text
    end
    
    -- Indents the text one step.
    local function indent(text)
    	text = text:gsub("\n", "\n    ")
    	return text
    end
    
    -- Does a simple tokenization of html data. Returns the data as a list of tokens.
    -- Each token is a table with a type field (which is either "tag" or "text") and
    -- a text field (which contains the original token data).
    local function tokenize_html(html)
    	local tokens = {}
    	local pos = 1
    	while true do
    		local start = find_first(html, {"", start)
    		elseif html:match("^<%?", start) then
    			_,stop = html:find("?>", start)
    		else
    			_,stop = html:find("%b<>", start)
    		end
    		if not stop then
    			-- error("Could not match html tag " .. html:sub(start,start+30))
    		 	table.insert(tokens, {type="text", text=html:sub(start, start)})
    			pos = start + 1
    		else
    			table.insert(tokens, {type="tag", text=html:sub(start, stop)})
    			pos = stop + 1
    		end
    	end
    	return tokens
    end
    
    ----------------------------------------------------------------------
    -- Hash
    ----------------------------------------------------------------------
    
    -- This is used to "hash" data into alphanumeric strings that are unique
    -- in the document. (Note that this is not cryptographic hash, the hash
    -- function is not one-way.) The hash procedure is used to protect parts
    -- of the document from further processing.
    
    local HASH = {
    	-- Has the hash been inited.
    	inited = false,
    
    	-- The unique string prepended to all hash values. This is to ensure
    	-- that hash values do not accidently coincide with an actual existing
    	-- string in the document.
    	identifier = "",
    
    	-- Counter that counts up for each new hash instance.
    	counter = 0,
    
    	-- Hash table.
    	table = {}
    }
    
    -- Inits hashing. Creates a hash_identifier that doesn't occur anywhere
    -- in the text.
    local function init_hash(text)
    	HASH.inited = true
    	HASH.identifier = ""
    	HASH.counter = 0
    	HASH.table = {}
    
    	local s = "HASH"
    	local counter = 0
    	local id
    	while true do
    		id  = s .. counter
    		if not text:find(id, 1, true) then break end
    		counter = counter + 1
    	end
    	HASH.identifier = id
    end
    
    -- Returns the hashed value for s.
    local function hash(s)
    	assert(HASH.inited)
    	if not HASH.table[s] then
    		HASH.counter = HASH.counter + 1
    		local id = HASH.identifier .. HASH.counter .. "X"
    		HASH.table[s] = id
    	end
    	return HASH.table[s]
    end
    
    ----------------------------------------------------------------------
    -- Protection
    ----------------------------------------------------------------------
    
    -- The protection module is used to "protect" parts of a document
    -- so that they are not modified by subsequent processing steps.
    -- Protected parts are saved in a table for later unprotection
    
    -- Protection data
    local PD = {
    	-- Saved blocks that have been converted
    	blocks = {},
    
    	-- Block level tags that will be protected
    	tags = {"p", "div", "h1", "h2", "h3", "h4", "h5", "h6", "blockquote",
    	"pre", "table", "dl", "ol", "ul", "script", "noscript", "form", "fieldset",
    	"iframe", "math", "ins", "del"}
    }
    
    -- Pattern for matching a block tag that begins and ends in the leftmost
    -- column and may contain indented subtags, i.e.
    -- 
    -- A nested block. --
    -- Nested data. --
    --
    local function block_pattern(tag) return "\n<" .. tag .. ".-\n[ \t]*\n" end -- Pattern for matching a block tag that begins and ends with a newline local function line_pattern(tag) return "\n<" .. tag .. ".-[ \t]*\n" end -- Protects the range of characters from start to stop in the text and -- returns the protected string. local function protect_range(text, start, stop) local s = text:sub(start, stop) local h = hash(s) PD.blocks[h] = s text = text:sub(1,start) .. h .. text:sub(stop) return text end -- Protect every part of the text that matches any of the patterns. The first -- matching pattern is protected first, etc. local function protect_matches(text, patterns) while true do local start, stop = find_first(text, patterns) if not start then break end text = protect_range(text, start, stop) end return text end -- Protects blocklevel tags in the specified text local function protect(text) -- First protect potentially nested block tags text = protect_matches(text, map(PD.tags, block_pattern)) -- Then protect block tags at the line level. text = protect_matches(text, map(PD.tags, line_pattern)) -- Protect
    and comment tags text = protect_matches(text, {"\n]->[ \t]*\n"}) text = protect_matches(text, {"\n[ \t]*\n"}) return text end -- Returns true if the string s is a hash resulting from protection local function is_protected(s) return PD.blocks[s] end -- Unprotects the specified text by expanding all the nonces local function unprotect(text) for k,v in pairs(PD.blocks) do v = v:gsub("%%", "%%%%") text = text:gsub(k, v) end return text end ---------------------------------------------------------------------- -- Block transform ---------------------------------------------------------------------- -- The block transform functions transform the text on the block level. -- They work with the text as an array of lines rather than as individual -- characters. -- Returns true if the line is a ruler of (char) characters. -- The line must contain at least three char characters and contain only spaces and -- char characters. local function is_ruler_of(line, char) if not line:match("^[ %" .. char .. "]*$") then return false end if not line:match("%" .. char .. ".*%" .. char .. ".*%" .. char) then return false end return true end -- Identifies the block level formatting present in the line local function classify(line) local info = {line = line, text = line} if line:match("^ ") then info.type = "indented" info.outdented = line:sub(5) return info end for _,c in ipairs({'*', '-', '_', '='}) do if is_ruler_of(line, c) then info.type = "ruler" info.ruler_char = c return info end end if line == "" then info.type = "blank" return info end if line:match("^(#+)[ \t]*(.-)[ \t]*#*[ \t]*$") then local m1, m2 = line:match("^(#+)[ \t]*(.-)[ \t]*#*[ \t]*$") info.type = "header" info.level = m1:len() info.text = m2 return info end if line:match("^ ? ? ?(%d+)%.[ \t]+(.+)") then local number, text = line:match("^ ? ? ?(%d+)%.[ \t]+(.+)") info.type = "list_item" info.list_type = "numeric" info.number = 0 + number info.text = text return info end if line:match("^ ? ? ?([%*%+%-])[ \t]+(.+)") then local bullet, text = line:match("^ ? ? ?([%*%+%-])[ \t]+(.+)") info.type = "list_item" info.list_type = "bullet" info.bullet = bullet info.text= text return info end if line:match("^>[ \t]?(.*)") then info.type = "blockquote" info.text = line:match("^>[ \t]?(.*)") return info end if is_protected(line) then info.type = "raw" info.html = unprotect(line) return info end info.type = "normal" return info end -- Find headers constisting of a normal line followed by a ruler and converts them to -- header entries. local function headers(array) local i = 1 while i <= #array - 1 do if array[i].type == "normal" and array[i+1].type == "ruler" and (array[i+1].ruler_char == "-" or array[i+1].ruler_char == "=") then local info = {line = array[i].line} info.text = info.line info.type = "header" info.level = iff(array[i+1].ruler_char == "=", 1, 2) table.remove(array, i+1) array[i] = info end i = i + 1 end return array end local block_transform, blocks_to_html, encode_code, span_transform, encode_backslash_escapes -- Find list blocks and convert them to protected data blocks local function lists(array, sublist) local function process_list(arr) local function any_blanks(arr) for i = 1, #arr do if arr[i].type == "blank" then return true end end return false end local function split_list_items(arr) local acc = {arr[1]} local res = {} for i=2,#arr do if arr[i].type == "list_item" then table.insert(res, acc) acc = {arr[i]} else table.insert(acc, arr[i]) end end table.insert(res, acc) return res end local function process_list_item(lines, block) while lines[#lines].type == "blank" do table.remove(lines) end local itemtext = lines[1].text for i=2,#lines do itemtext = itemtext .. "\n" .. outdent(lines[i].line) end if block then itemtext = block_transform(itemtext, true) if not itemtext:find("
    ") then itemtext = indent(itemtext) end
    				return "    
  • " .. itemtext .. "
  • " else local lines = split(itemtext) lines = map(lines, classify) lines = lists(lines, true) lines = blocks_to_html(lines, true) itemtext = table.concat(lines, "\n") if not itemtext:find("
    ") then itemtext = indent(itemtext) end
    				return "    
  • " .. itemtext .. "
  • " end end local block_list = any_blanks(arr) local items = split_list_items(arr) local out = "" for _, item in ipairs(items) do out = out .. process_list_item(item, block_list) .. "\n" end if arr[1].list_type == "numeric" then return "
      \n" .. out .. "
    " else return "
      \n" .. out .. "
    " end end -- Finds the range of lines composing the first list in the array. A list -- starts with (^ list_item) or (blank list_item) and ends with -- (blank* $) or (blank normal). -- -- A sublist can start with just (list_item) does not need a blank... local function find_list(array, sublist) local function find_list_start(array, sublist) if array[1].type == "list_item" then return 1 end if sublist then for i = 1,#array do if array[i].type == "list_item" then return i end end else for i = 1, #array-1 do if array[i].type == "blank" and array[i+1].type == "list_item" then return i+1 end end end return nil end local function find_list_end(array, start) local pos = #array for i = start, #array-1 do if array[i].type == "blank" and array[i+1].type ~= "list_item" and array[i+1].type ~= "indented" and array[i+1].type ~= "blank" then pos = i-1 break end end while pos > start and array[pos].type == "blank" do pos = pos - 1 end return pos end local start = find_list_start(array, sublist) if not start then return nil end return start, find_list_end(array, start) end while true do local start, stop = find_list(array, sublist) if not start then break end local text = process_list(splice(array, start, stop)) local info = { line = text, type = "raw", html = text } array = splice(array, start, stop, {info}) end -- Convert any remaining list items to normal for _,line in ipairs(array) do if line.type == "list_item" then line.type = "normal" end end return array end -- Find and convert blockquote markers. local function blockquotes(lines) local function find_blockquote(lines) local start for i,line in ipairs(lines) do if line.type == "blockquote" then start = i break end end if not start then return nil end local stop = #lines for i = start+1, #lines do if lines[i].type == "blank" or lines[i].type == "blockquote" then elseif lines[i].type == "normal" then if lines[i-1].type == "blank" then stop = i-1 break end else stop = i-1 break end end while lines[stop].type == "blank" do stop = stop - 1 end return start, stop end local function process_blockquote(lines) local raw = lines[1].text for i = 2,#lines do raw = raw .. "\n" .. lines[i].text end local bt = block_transform(raw) if not bt:find("
    ") then bt = indent(bt) end
    		return "
    \n " .. bt .. "\n
    " end while true do local start, stop = find_blockquote(lines) if not start then break end local text = process_blockquote(splice(lines, start, stop)) local info = { line = text, type = "raw", html = text } lines = splice(lines, start, stop, {info}) end return lines end -- Find and convert codeblocks. local function codeblocks(lines) local function find_codeblock(lines) local start for i,line in ipairs(lines) do if line.type == "indented" then start = i break end end if not start then return nil end local stop = #lines for i = start+1, #lines do if lines[i].type ~= "indented" and lines[i].type ~= "blank" then stop = i-1 break end end while lines[stop].type == "blank" do stop = stop - 1 end return start, stop end local function process_codeblock(lines) local raw = detab(encode_code(outdent(lines[1].line))) for i = 2,#lines do raw = raw .. "\n" .. detab(encode_code(outdent(lines[i].line))) end return "
    " .. raw .. "\n
    " end while true do local start, stop = find_codeblock(lines) if not start then break end local text = process_codeblock(splice(lines, start, stop)) local info = { line = text, type = "raw", html = text } lines = splice(lines, start, stop, {info}) end return lines end -- Convert lines to html code function blocks_to_html(lines, no_paragraphs) local out = {} local i = 1 while i <= #lines do local line = lines[i] if line.type == "ruler" then table.insert(out, "
    ") elseif line.type == "raw" then table.insert(out, line.html) elseif line.type == "normal" then local s = line.line while i+1 <= #lines and lines[i+1].type == "normal" do i = i + 1 s = s .. "\n" .. lines[i].line end if no_paragraphs then table.insert(out, span_transform(s)) else table.insert(out, "

    " .. span_transform(s) .. "

    ") end elseif line.type == "header" then local s = "" .. span_transform(line.text) .. "" table.insert(out, s) else table.insert(out, line.line) end i = i + 1 end return out end -- Perform all the block level transforms function block_transform(text, sublist) local lines = split(text) lines = map(lines, classify) lines = headers(lines) lines = lists(lines, sublist) lines = codeblocks(lines) lines = blockquotes(lines) lines = blocks_to_html(lines) local text = table.concat(lines, "\n") return text end -- Debug function for printing a line array to see the result -- of partial transforms. local function print_lines(lines) for i, line in ipairs(lines) do print(i, line.type, line.text or line.line) end end ---------------------------------------------------------------------- -- Span transform ---------------------------------------------------------------------- -- Functions for transforming the text at the span level. -- These characters may need to be escaped because they have a special -- meaning in markdown. local escape_chars = "'\\`*_{}[]()>#+-.!'" local escape_table = {} local function init_escape_table() escape_table = {} for i = 1,#escape_chars do local c = escape_chars:sub(i,i) escape_table[c] = hash(c) end end -- Adds a new escape to the escape table. local function add_escape(text) if not escape_table[text] then escape_table[text] = hash(text) end return escape_table[text] end -- Escape characters that should not be disturbed by markdown. local function escape_special_chars(text) local tokens = tokenize_html(text) local out = "" for _, token in ipairs(tokens) do local t = token.text if token.type == "tag" then -- In tags, encode * and _ so they don't conflict with their use in markdown. t = t:gsub("%*", escape_table["*"]) t = t:gsub("%_", escape_table["_"]) else t = encode_backslash_escapes(t) end out = out .. t end return out end -- Encode backspace-escaped characters in the markdown source. function encode_backslash_escapes(t) for i=1,escape_chars:len() do local c = escape_chars:sub(i,i) t = t:gsub("\\%" .. c, escape_table[c]) end return t end -- Unescape characters that have been encoded. local function unescape_special_chars(t) local tin = t for k,v in pairs(escape_table) do k = k:gsub("%%", "%%%%") t = t:gsub(v,k) end if t ~= tin then t = unescape_special_chars(t) end return t end -- Encode/escape certain characters inside Markdown code runs. -- The point is that in code, these characters are literals, -- and lose their special Markdown meanings. function encode_code(s) s = s:gsub("%&", "&") s = s:gsub("<", "<") s = s:gsub(">", ">") for k,v in pairs(escape_table) do s = s:gsub("%"..k, v) end return s end -- Handle backtick blocks. local function code_spans(s) s = s:gsub("\\\\", escape_table["\\"]) s = s:gsub("\\`", escape_table["`"]) local pos = 1 while true do local start, stop = s:find("`+", pos) if not start then return s end local count = stop - start + 1 -- Find a matching numbert of backticks local estart, estop = s:find(string.rep("`", count), stop+1) local brstart = s:find("\n", stop+1) if estart and (not brstart or estart < brstart) then local code = s:sub(stop+1, estart-1) code = code:gsub("^[ \t]+", "") code = code:gsub("[ \t]+$", "") code = code:gsub(escape_table["\\"], escape_table["\\"] .. escape_table["\\"]) code = code:gsub(escape_table["`"], escape_table["\\"] .. escape_table["`"]) code = "" .. encode_code(code) .. "" code = add_escape(code) s = s:sub(1, start-1) .. code .. s:sub(estop+1) pos = start + code:len() else pos = stop + 1 end end return s end -- Encode alt text... enodes &, and ". local function encode_alt(s) if not s then return s end s = s:gsub('&', '&') s = s:gsub('"', '"') s = s:gsub('<', '<') return s end local link_database -- Handle image references local function images(text) local function reference_link(alt, id) alt = encode_alt(alt:match("%b[]"):sub(2,-2)) id = id:match("%[(.*)%]"):lower() if id == "" then id = text:lower() end link_database[id] = link_database[id] or {} if not link_database[id].url then return nil end local url = link_database[id].url or id url = encode_alt(url) local title = encode_alt(link_database[id].title) if title then title = " title=\"" .. title .. "\"" else title = "" end return add_escape ('' .. alt .. '") end local function inline_link(alt, link) alt = encode_alt(alt:match("%b[]"):sub(2,-2)) local url, title = link:match("%(?[ \t]*['\"](.+)['\"]") url = url or link:match("%(?%)") url = encode_alt(url) title = encode_alt(title) if title then return add_escape('' .. alt .. '') else return add_escape('' .. alt .. '') end end text = text:gsub("!(%b[])[ \t]*\n?[ \t]*(%b[])", reference_link) text = text:gsub("!(%b[])(%b())", inline_link) return text end -- Handle anchor references local function anchors(text) local function reference_link(text, id) text = text:match("%b[]"):sub(2,-2) id = id:match("%b[]"):sub(2,-2):lower() if id == "" then id = text:lower() end link_database[id] = link_database[id] or {} if not link_database[id].url then return nil end local url = link_database[id].url or id url = encode_alt(url) local title = encode_alt(link_database[id].title) if title then title = " title=\"" .. title .. "\"" else title = "" end return add_escape("") .. text .. add_escape("") end local function inline_link(text, link) text = text:match("%b[]"):sub(2,-2) local url, title = link:match("%(?[ \t]*['\"](.+)['\"]") title = encode_alt(title) url = url or link:match("%(?%)") or "" url = encode_alt(url) if title then return add_escape("") .. text .. "" else return add_escape("") .. text .. add_escape("") end end text = text:gsub("(%b[])[ \t]*\n?[ \t]*(%b[])", reference_link) text = text:gsub("(%b[])(%b())", inline_link) return text end -- Handle auto links, i.e. . local function auto_links(text) local function link(s) return add_escape("") .. s .. "" end -- Encode chars as a mix of dec and hex entitites to (perhaps) fool -- spambots. local function encode_email_address(s) -- Use a deterministic encoding to make unit testing possible. -- Code 45% hex, 45% dec, 10% plain. local hex = {code = function(c) return "&#x" .. string.format("%x", c:byte()) .. ";" end, count = 1, rate = 0.45} local dec = {code = function(c) return "&#" .. c:byte() .. ";" end, count = 0, rate = 0.45} local plain = {code = function(c) return c end, count = 0, rate = 0.1} local codes = {hex, dec, plain} local function swap(t,k1,k2) local temp = t[k2] t[k2] = t[k1] t[k1] = temp end local out = "" for i = 1,s:len() do for _,code in ipairs(codes) do code.count = code.count + code.rate end if codes[1].count < codes[2].count then swap(codes,1,2) end if codes[2].count < codes[3].count then swap(codes,2,3) end if codes[1].count < codes[2].count then swap(codes,1,2) end local code = codes[1] local c = s:sub(i,i) -- Force encoding of "@" to make email address more invisible. if c == "@" and code == plain then code = codes[2] end out = out .. code.code(c) code.count = code.count - 1 end return out end local function mail(s) s = unescape_special_chars(s) local address = encode_email_address("mailto:" .. s) local text = encode_email_address(s) return add_escape("") .. text .. "" end -- links text = text:gsub("<(https?:[^'\">%s]+)>", link) text = text:gsub("<(ftp:[^'\">%s]+)>", link) -- mail text = text:gsub("%s]+)>", mail) text = text:gsub("<([-.%w]+%@[-.%w]+)>", mail) return text end -- Encode free standing amps (&) and angles (<)... note that this does not -- encode free >. local function amps_and_angles(s) -- encode amps not part of &..; expression local pos = 1 while true do local amp = s:find("&", pos) if not amp then break end local semi = s:find(";", amp+1) local stop = s:find("[ \t\n&]", amp+1) if not semi or (stop and stop < semi) or (semi - amp) > 15 then s = s:sub(1,amp-1) .. "&" .. s:sub(amp+1) pos = amp+1 else pos = amp+1 end end -- encode naked <'s s = s:gsub("<([^a-zA-Z/?$!])", "<%1") s = s:gsub("<$", "<") -- what about >, nothing done in the original markdown source to handle them return s end -- Handles emphasis markers (* and _) in the text. local function emphasis(text) for _, s in ipairs {"%*%*", "%_%_"} do text = text:gsub(s .. "([^%s][%*%_]?)" .. s, "%1") text = text:gsub(s .. "([^%s][^<>]-[^%s][%*%_]?)" .. s, "%1") end for _, s in ipairs {"%*", "%_"} do text = text:gsub(s .. "([^%s_])" .. s, "%1") text = text:gsub(s .. "([^%s_])" .. s, "%1") text = text:gsub(s .. "([^%s_][^<>_]-[^%s_])" .. s, "%1") text = text:gsub(s .. "([^<>_]-[^<>_]-[^<>_]-)" .. s, "%1") end return text end -- Handles line break markers in the text. local function line_breaks(text) return text:gsub(" +\n", "
    \n") end -- Perform all span level transforms. function span_transform(text) text = code_spans(text) text = escape_special_chars(text) text = images(text) text = anchors(text) text = auto_links(text) text = amps_and_angles(text) text = emphasis(text) text = line_breaks(text) return text end ---------------------------------------------------------------------- -- Markdown ---------------------------------------------------------------------- -- Cleanup the text by normalizing some possible variations to make further -- processing easier. local function cleanup(text) -- Standardize line endings text = text:gsub("\r\n", "\n") -- DOS to UNIX text = text:gsub("\r", "\n") -- Mac to UNIX -- Convert all tabs to spaces text = detab(text) -- Strip lines with only spaces and tabs while true do local subs text, subs = text:gsub("\n[ \t]+\n", "\n\n") if subs == 0 then break end end return "\n" .. text .. "\n" end -- Strips link definitions from the text and stores the data in a lookup table. local function strip_link_definitions(text) local linkdb = {} local function link_def(id, url, title) id = id:match("%[(.+)%]"):lower() linkdb[id] = linkdb[id] or {} linkdb[id].url = url or linkdb[id].url linkdb[id].title = title or linkdb[id].title return "" end local def_no_title = "\n ? ? ?(%b[]):[ \t]*\n?[ \t]*]+)>?[ \t]*" local def_title1 = def_no_title .. "[ \t]+\n?[ \t]*[\"'(]([^\n]+)[\"')][ \t]*" local def_title2 = def_no_title .. "[ \t]*\n[ \t]*[\"'(]([^\n]+)[\"')][ \t]*" local def_title3 = def_no_title .. "[ \t]*\n?[ \t]+[\"'(]([^\n]+)[\"')][ \t]*" text = text:gsub(def_title1, link_def) text = text:gsub(def_title2, link_def) text = text:gsub(def_title3, link_def) text = text:gsub(def_no_title, link_def) return text, linkdb end link_database = {} -- Main markdown processing function local function markdown(text) init_hash(text) init_escape_table() text = cleanup(text) text = protect(text) text, link_database = strip_link_definitions(text) text = block_transform(text) text = unescape_special_chars(text) return text end ---------------------------------------------------------------------- -- End of module ---------------------------------------------------------------------- M.lock(M) -- Expose markdown function to the world _G.markdown = M.markdown -- Class for parsing command-line options local OptionParser = {} OptionParser.__index = OptionParser -- Creates a new option parser function OptionParser:new() local o = {short = {}, long = {}} setmetatable(o, self) return o end -- Calls f() whenever a flag with specified short and long name is encountered function OptionParser:flag(short, long, f) local info = {type = "flag", f = f} if short then self.short[short] = info end if long then self.long[long] = info end end -- Calls f(param) whenever a parameter flag with specified short and long name is encountered function OptionParser:param(short, long, f) local info = {type = "param", f = f} if short then self.short[short] = info end if long then self.long[long] = info end end -- Calls f(v) for each non-flag argument function OptionParser:arg(f) self.arg = f end -- Runs the option parser for the specified set of arguments. Returns true if all arguments -- where successfully parsed and false otherwise. function OptionParser:run(args) local pos = 1 local param while pos <= #args do local arg = args[pos] if arg == "--" then for i=pos+1,#args do if self.arg then self.arg(args[i]) end return true end end if arg:match("^%-%-") then local info = self.long[arg:sub(3)] if not info then print("Unknown flag: " .. arg) return false end if info.type == "flag" then info.f() pos = pos + 1 else param = args[pos+1] if not param then print("No parameter for flag: " .. arg) return false end info.f(param) pos = pos+2 end elseif arg:match("^%-") then for i=2,arg:len() do local c = arg:sub(i,i) local info = self.short[c] if not info then print("Unknown flag: -" .. c) return false end if info.type == "flag" then info.f() else if i == arg:len() then param = args[pos+1] if not param then print("No parameter for flag: -" .. c) return false end info.f(param) pos = pos + 1 else param = arg:sub(i+1) info.f(param) end break end end pos = pos + 1 else if self.arg then self.arg(arg) end pos = pos + 1 end end return true end -- Handles the case when markdown is run from the command line local function run_command_line(arg) -- Generate output for input s given options local function run(s, options) s = markdown(s) if not options.wrap_header then return s end local header = "" if options.header then local f = io.open(options.header) or error("Could not open file: " .. options.header) header = f:read("*a") f:close() else header = [[ TITLE ]] local title = options.title or s:match("

    (.-)

    ") or s:match("

    (.-)

    ") or s:match("

    (.-)

    ") or "Untitled" header = header:gsub("TITLE", title) if options.inline_style then local style = "" local f = io.open(options.stylesheet) if f then style = f:read("*a") f:close() else error("Could not include style sheet " .. options.stylesheet .. ": File not found") end header = header:gsub('', "") else header = header:gsub("STYLESHEET", options.stylesheet) end header = header:gsub("CHARSET", options.charset) end local footer = "" if options.footer then local f = io.open(options.footer) or error("Could not open file: " .. options.footer) footer = f:read("*a") f:close() end return header .. s .. footer end -- Generate output path name from input path name given options. local function outpath(path, options) if options.append then return path .. ".html" end local m = path:match("^(.+%.html)[^/\\]+$") if m then return m end m = path:match("^(.+%.)[^/\\]*$") if m and path ~= m .. "html" then return m .. "html" end return path .. ".html" end -- Default commandline options local options = { wrap_header = true, header = nil, footer = nil, charset = "utf-8", title = nil, stylesheet = "default.css", inline_style = false } local help = [[ Usage: markdown.lua [OPTION] [FILE] Runs the markdown text markup to HTML converter on each file specified on the command line. If no files are specified, runs on standard input. No header: -n, --no-wrap Don't wrap the output in ... tags. Custom header: -e, --header FILE Use content of FILE for header. -f, --footer FILE Use content of FILE for footer. Generated header: -c, --charset SET Specifies charset (default utf-8). -i, --title TITLE Specifies title (default from first

    tag). -s, --style STYLE Specifies style sheet file (default default.css). -l, --inline-style Include the style sheet file inline in the header. Generated files: -a, --append Append .html extension (instead of replacing). Other options: -h, --help Print this help text. -t, --test Run the unit tests. ]] local run_stdin = true local op = OptionParser:new() op:flag("n", "no-wrap", function () options.wrap_header = false end) op:param("e", "header", function (x) options.header = x end) op:param("f", "footer", function (x) options.footer = x end) op:param("c", "charset", function (x) options.charset = x end) op:param("i", "title", function(x) options.title = x end) op:param("s", "style", function(x) options.stylesheet = x end) op:flag("l", "inline-style", function(x) options.inline_style = true end) op:flag("a", "append", function() options.append = true end) op:flag("t", "test", function() local n = arg[0]:gsub("markdown.lua", "markdown-tests.lua") local f = io.open(n) if f then f:close() dofile(n) else error("Cannot find markdown-tests.lua") end run_stdin = false end) op:flag("h", "help", function() print(help) run_stdin = false end) op:arg(function(path) local file = io.open(path) or error("Could not open file: " .. path) local s = file:read("*a") file:close() s = run(s, options) file = io.open(outpath(path, options), "w") or error("Could not open output file: " .. outpath(path, options)) file:write(s) file:close() run_stdin = false end ) if not op:run(arg) then print(help) run_stdin = false end if run_stdin then local s = io.read("*a") s = run(s, options) io.write(s) end end -- If we are being run from the command-line, act accordingly if arg and arg[0]:find("markdown%.lua$") then run_command_line(arg) else return markdown end lua-orbit-2.2.1+dfsg/samples/blog/populate_mysql.lua000066400000000000000000003507721227340735500225270ustar00rootroot00000000000000 local luasql = require "luasql.mysql" local orm = require "orbit.model" local env = luasql() local conn = env:connect("blog", "root", "") local mapper = orm.new("blog_", conn, "mysql") -- Table post local t = mapper:new('post') -- Record 1 local rec = { ["published_at"] = 1096406940, ["title"] = "Order Now And You Also Get A Attack Nose", ["id"] = 1, ["n_comments"] = 0, ["body"] = "\ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ "} rec = t:new(rec) rec:save(true) -- Record 2 local rec = { ["published_at"] = 1096941480, ["title"] = "The Care And Feeding Of Your Sleeping Bicycle", ["id"] = 2, ["n_comments"] = 0, ["body"] = "\ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ "} rec = t:new(rec) rec:save(true) -- Record 3 local rec = { ["published_at"] = 1097257260, ["title"] = "Now Anybody Can Make President", ["id"] = 3, ["n_comments"] = 0, ["body"] = "\ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ "} rec = t:new(rec) rec:save(true) -- Record 4 local rec = { ["published_at"] = 1097787720, ["title"] = "'Star Wars' As Written By A Princess", ["id"] = 4, ["n_comments"] = 1, ["body"] = "\ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ "} rec = t:new(rec) rec:save(true) -- Record 5 local rec = { ["published_at"] = 1098112500, ["title"] = "What I Learned From An Elephant", ["id"] = 5, ["n_comments"] = 2, ["body"] = "\ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ "} rec = t:new(rec) rec:save(true) -- Record 6 local rec = { ["published_at"] = 1099335240, ["title"] = "Today, The World - Tomorrow, The Mixed-Up Dice", ["id"] = 6, ["n_comments"] = 0, ["body"] = "\ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ "} rec = t:new(rec) rec:save(true) -- Record 7 local rec = { ["published_at"] = 1100140320, ["title"] = "The Funniest Joke About A Grandmother's Tree", ["id"] = 7, ["n_comments"] = 0, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ "} rec = t:new(rec) rec:save(true) -- Record 8 local rec = { ["published_at"] = 1101168000, ["title"] = "Dr. Jekyll And Mr. Bear", ["id"] = 8, ["n_comments"] = 2, ["body"] = "\ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ "} rec = t:new(rec) rec:save(true) -- Record 9 local rec = { ["published_at"] = 1102720200, ["title"] = "Christmas Shopping For A Racing Ark", ["id"] = 9, ["n_comments"] = 0, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ "} rec = t:new(rec) rec:save(true) -- Record 10 local rec = { ["published_at"] = 1102968180, ["title"] = "Once Upon A Guardian Dinosaur", ["id"] = 10, ["n_comments"] = 1, ["body"] = "\ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ "} rec = t:new(rec) rec:save(true) -- Record 11 local rec = { ["published_at"] = 1103047500, ["title"] = "The Mystery Of Lego Pirate", ["id"] = 11, ["n_comments"] = 2, ["body"] = "\ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ "} rec = t:new(rec) rec:save(true) -- Record 12 local rec = { ["published_at"] = 1104870420, ["title"] = "Thomas Edison Invents The Guardian Rollercoaster", ["id"] = 12, ["n_comments"] = 2, ["body"] = "\ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ "} rec = t:new(rec) rec:save(true) -- Record 13 local rec = { ["published_at"] = 1104872820, ["title"] = "Today, The World - Tomorrow, The Complicated Moonlight", ["id"] = 13, ["n_comments"] = 2, ["body"] = "\ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ "} rec = t:new(rec) rec:save(true) -- Record 14 local rec = { ["published_at"] = 1107454020, ["title"] = "'Star Wars' As Written By A Scary Bat", ["id"] = 14, ["n_comments"] = 3, ["body"] = "\ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ "} rec = t:new(rec) rec:save(true) -- Record 15 local rec = { ["published_at"] = 1107655200, ["title"] = "Anatomy Of A Funny Day", ["id"] = 15, ["n_comments"] = 1, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ "} rec = t:new(rec) rec:save(true) -- Record 16 local rec = { ["published_at"] = 1109017860, ["title"] = "On The Trail Of The Electric Desk", ["id"] = 16, ["n_comments"] = 1, ["body"] = "\ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ "} rec = t:new(rec) rec:save(true) -- Record 17 local rec = { ["published_at"] = 1112321220, ["title"] = "My Coach Is A New, Improved Bear", ["id"] = 17, ["n_comments"] = 1, ["body"] = "\ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ "} rec = t:new(rec) rec:save(true) -- Record 18 local rec = { ["published_at"] = 1115832420, ["title"] = "My Son, The Lost Banana", ["id"] = 18, ["n_comments"] = 0, ["body"] = "\ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ "} rec = t:new(rec) rec:save(true) -- Record 19 local rec = { ["published_at"] = 1116263400, ["title"] = "The Olympic Competition Won By An Automatic Monkey", ["id"] = 19, ["n_comments"] = 0, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ "} rec = t:new(rec) rec:save(true) -- Record 20 local rec = { ["published_at"] = 1116268920, ["title"] = "The Olympic Competition Won By An Purple Bicycle", ["id"] = 20, ["n_comments"] = 1, ["body"] = "\ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ "} rec = t:new(rec) rec:save(true) -- Record 21 local rec = { ["published_at"] = 1116340140, ["title"] = "Marco Polo Discovers The Complicated Spoon", ["id"] = 21, ["n_comments"] = 0, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ "} rec = t:new(rec) rec:save(true) -- Record 22 local rec = { ["published_at"] = 1116439080, ["title"] = "The Mystery Of Horse", ["id"] = 22, ["n_comments"] = 0, ["body"] = "\ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ "} rec = t:new(rec) rec:save(true) -- Record 23 local rec = { ["published_at"] = 1116733560, ["title"] = "Now Anybody Can Make Miniature Nose", ["id"] = 23, ["n_comments"] = 0, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ "} rec = t:new(rec) rec:save(true) -- Record 24 local rec = { ["published_at"] = 1116793620, ["title"] = "My Daughter, The Spoon", ["id"] = 24, ["n_comments"] = 0, ["body"] = "\ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ "} rec = t:new(rec) rec:save(true) -- Record 25 local rec = { ["published_at"] = 1116848940, ["title"] = "Dental Surgery On A Desert Elephant", ["id"] = 25, ["n_comments"] = 0, ["body"] = "\ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ "} rec = t:new(rec) rec:save(true) -- Record 26 local rec = { ["published_at"] = 1117480740, ["title"] = "On The Trail Of The Automatic Giant", ["id"] = 26, ["n_comments"] = 0, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ "} rec = t:new(rec) rec:save(true) -- Record 27 local rec = { ["published_at"] = 1117649280, ["title"] = "What I Learned From An Football", ["id"] = 27, ["n_comments"] = 0, ["body"] = "\ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ "} rec = t:new(rec) rec:save(true) -- Record 28 local rec = { ["published_at"] = 1117716960, ["title"] = "Now Anybody Can Make Attack Wolf", ["id"] = 28, ["n_comments"] = 0, ["body"] = "\ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ "} rec = t:new(rec) rec:save(true) -- Record 29 local rec = { ["published_at"] = 1118028360, ["title"] = "Avast, Me Invisible Twin Fish", ["id"] = 29, ["n_comments"] = 0, ["body"] = "\ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ "} rec = t:new(rec) rec:save(true) -- Record 30 local rec = { ["published_at"] = 1118244480, ["title"] = "Around The World With A Blustery Banana", ["id"] = 30, ["n_comments"] = 0, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ "} rec = t:new(rec) rec:save(true) -- Record 31 local rec = { ["published_at"] = 1119411720, ["title"] = "Mr. McMullet, The Flying Tree", ["id"] = 31, ["n_comments"] = 0, ["body"] = "\ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ "} rec = t:new(rec) rec:save(true) -- Record 32 local rec = { ["published_at"] = 1119571800, ["title"] = "Visit Fun World And See The Rare Recycled Clown", ["id"] = 32, ["n_comments"] = 0, ["body"] = "\ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ "} rec = t:new(rec) rec:save(true) -- Record 33 local rec = { ["published_at"] = 1119893580, ["title"] = "Wyoming Jones And The Secret Twin Canadian Bat", ["id"] = 33, ["n_comments"] = 1, ["body"] = "\ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ "} rec = t:new(rec) rec:save(true) -- Record 34 local rec = { ["published_at"] = 1121213220, ["title"] = "Wyoming Jones And The Clown", ["id"] = 34, ["n_comments"] = 2, ["body"] = "\ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ "} rec = t:new(rec) rec:save(true) -- Record 35 local rec = { ["published_at"] = 1125083340, ["title"] = "Marco Polo Discovers The Accountant", ["id"] = 35, ["n_comments"] = 0, ["body"] = "\ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ "} rec = t:new(rec) rec:save(true) -- Record 36 local rec = { ["published_at"] = 1128714240, ["title"] = "Playing Poker With A Tree", ["id"] = 36, ["n_comments"] = 0, ["body"] = "\ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ "} rec = t:new(rec) rec:save(true) -- Record 37 local rec = { ["published_at"] = 1144002600, ["title"] = "Barney And The Rollercoaster", ["id"] = 39, ["n_comments"] = 1, ["body"] = "\ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ "} rec = t:new(rec) rec:save(true) -- Record 38 local rec = { ["published_at"] = 1144087620, ["title"] = "Today, The World - Tomorrow, The Purple Money", ["id"] = 40, ["n_comments"] = 3, ["body"] = "\ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ "} rec = t:new(rec) rec:save(true) -- Record 39 local rec = { ["published_at"] = 1144204980, ["title"] = "I'm My Own Desert Friend", ["id"] = 41, ["n_comments"] = 1, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ "} rec = t:new(rec) rec:save(true) -- Record 40 local rec = { ["published_at"] = 1144371120, ["title"] = "I Have To Write About My Blustery Funny Nose", ["id"] = 42, ["n_comments"] = 0, ["body"] = "\ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ "} rec = t:new(rec) rec:save(true) -- Record 41 local rec = { ["published_at"] = 1144445280, ["title"] = "Once Upon A Complicated Duck", ["id"] = 43, ["n_comments"] = 0, ["body"] = "\ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ "} rec = t:new(rec) rec:save(true) -- Record 42 local rec = { ["published_at"] = 1144591560, ["title"] = "On The Trail Of The Lost Chicken", ["id"] = 44, ["n_comments"] = 0, ["body"] = "\ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ "} rec = t:new(rec) rec:save(true) -- Record 43 local rec = { ["published_at"] = 1145244840, ["title"] = "Way Out West With The Green Giant", ["id"] = 45, ["n_comments"] = 0, ["body"] = "\ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ "} rec = t:new(rec) rec:save(true) -- Record 44 local rec = { ["published_at"] = 1145394900, ["title"] = "No Man Is A Monkey", ["id"] = 46, ["n_comments"] = 0, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ "} rec = t:new(rec) rec:save(true) -- Record 45 local rec = { ["published_at"] = 1145988720, ["title"] = "Where To Meet An Impossible Friend", ["id"] = 47, ["n_comments"] = 0, ["body"] = "\ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ "} rec = t:new(rec) rec:save(true) -- Record 46 local rec = { ["published_at"] = 1146700800, ["title"] = "Barney And The Hungry Desk", ["id"] = 48, ["n_comments"] = 0, ["body"] = "\ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ "} rec = t:new(rec) rec:save(true) -- Record 47 local rec = { ["published_at"] = 1147146240, ["title"] = "Way Out West With The Furry Super Wolf", ["id"] = 49, ["n_comments"] = 0, ["body"] = "\ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ "} rec = t:new(rec) rec:save(true) -- Record 48 local rec = { ["published_at"] = 1147232220, ["title"] = "The Mystery Of Lego Chicken", ["id"] = 50, ["n_comments"] = 0, ["body"] = "\ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ "} rec = t:new(rec) rec:save(true) -- Record 49 local rec = { ["published_at"] = 1149614880, ["title"] = "I Rode Friendly Grandmother's Mixed-Up Chocolate", ["id"] = 51, ["n_comments"] = 5, ["body"] = "\ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ "} rec = t:new(rec) rec:save(true) -- Record 50 local rec = { ["published_at"] = 1149863280, ["title"] = "Christmas Shopping For A New, Improved Ark", ["id"] = 52, ["n_comments"] = 1, ["body"] = "\ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ "} rec = t:new(rec) rec:save(true) -- Record 51 local rec = { ["published_at"] = 1150032780, ["title"] = "The Funniest Joke About A Scary Ark", ["id"] = 53, ["n_comments"] = 5, ["body"] = "\ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ "} rec = t:new(rec) rec:save(true) -- Record 52 local rec = { ["published_at"] = 1153248060, ["title"] = "Where To Meet An Chicken", ["id"] = 54, ["n_comments"] = 2, ["body"] = "\ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ "} rec = t:new(rec) rec:save(true) -- Table comment local t = mapper:new('comment') -- Record 1 local rec = { ["post_id"] = 54, ["body"] = "\ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ ", ["url"] = "", ["id"] = 1, ["author"] = "John Doe", ["created_at"] = 1153306299, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 2 local rec = { ["post_id"] = 53, ["body"] = "\ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ ", ["url"] = "", ["id"] = 2, ["author"] = "Jane Doe", ["created_at"] = 1151429616, ["email"] = "tampo_8@yahoo.com"} rec = t:new(rec) rec:save(true) -- Record 3 local rec = { ["post_id"] = 53, ["body"] = "\ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 3, ["author"] = "Curly", ["created_at"] = 1150734192, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 4 local rec = { ["post_id"] = 53, ["body"] = "\ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ ", ["url"] = "", ["id"] = 4, ["author"] = "Larry", ["created_at"] = 1150733585, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 5 local rec = { ["post_id"] = 53, ["body"] = "\ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 5, ["author"] = "Larry", ["created_at"] = 1150203113, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 6 local rec = { ["post_id"] = 53, ["body"] = "\ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ ", ["url"] = "", ["id"] = 6, ["author"] = "Curly", ["created_at"] = 1150128335, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 7 local rec = { ["post_id"] = 52, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ ", ["url"] = "", ["id"] = 7, ["author"] = "Curly", ["created_at"] = 1149868978, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 8 local rec = { ["post_id"] = 51, ["body"] = "\ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ ", ["url"] = "", ["id"] = 8, ["author"] = "Jane Doe", ["created_at"] = 1151444059, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 9 local rec = { ["post_id"] = 51, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ ", ["url"] = "", ["id"] = 9, ["author"] = "Larry", ["created_at"] = 1149857129, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 10 local rec = { ["post_id"] = 51, ["body"] = "\ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ ", ["url"] = "", ["id"] = 10, ["author"] = "John Doe", ["created_at"] = 1149641466, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 11 local rec = { ["post_id"] = 51, ["body"] = "\ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ ", ["url"] = "", ["id"] = 11, ["author"] = "Jane Doe", ["created_at"] = 1149639539, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 12 local rec = { ["post_id"] = 51, ["body"] = "\ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ ", ["url"] = "", ["id"] = 12, ["author"] = "Larry", ["created_at"] = 1149638328, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 13 local rec = { ["post_id"] = 41, ["body"] = "\ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ ", ["url"] = "", ["id"] = 13, ["author"] = "Moe", ["created_at"] = 1144250235, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 14 local rec = { ["post_id"] = 40, ["body"] = "\ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ ", ["url"] = "", ["id"] = 14, ["author"] = "Jane Doe", ["created_at"] = 1144294809, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 15 local rec = { ["post_id"] = 40, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 15, ["author"] = "Moe", ["created_at"] = 1144251137, ["email"] = "mascarenhas@acm.org"} rec = t:new(rec) rec:save(true) -- Record 16 local rec = { ["post_id"] = 40, ["body"] = "\ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ ", ["url"] = "", ["id"] = 16, ["author"] = "John Doe", ["created_at"] = 1144250500, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 17 local rec = { ["post_id"] = 39, ["body"] = "\ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 17, ["author"] = "Moe", ["created_at"] = 1144014931, ["email"] = "mascarenhas@acm.org"} rec = t:new(rec) rec:save(true) -- Record 18 local rec = { ["post_id"] = 34, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 18, ["author"] = "Curly", ["created_at"] = 1121219057, ["email"] = "mascarenhas@acm.org"} rec = t:new(rec) rec:save(true) -- Record 19 local rec = { ["post_id"] = 34, ["body"] = "\ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 19, ["author"] = "Jane Doe", ["created_at"] = 1121218893, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 20 local rec = { ["post_id"] = 33, ["body"] = "\ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ ", ["url"] = "", ["id"] = 20, ["author"] = "Moe", ["created_at"] = 1121027297, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 21 local rec = { ["post_id"] = 20, ["body"] = "\ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 21, ["author"] = "Curly", ["created_at"] = 1116269248, ["email"] = "mascarenhas@acm.org"} rec = t:new(rec) rec:save(true) -- Record 22 local rec = { ["post_id"] = 17, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ ", ["url"] = "", ["id"] = 22, ["author"] = "Moe", ["created_at"] = 1115594419, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 23 local rec = { ["post_id"] = 16, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ ", ["url"] = "", ["id"] = 23, ["author"] = "Curly", ["created_at"] = 1109876549, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 24 local rec = { ["post_id"] = 15, ["body"] = "\ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ ", ["url"] = "", ["id"] = 24, ["author"] = "Jane Doe", ["created_at"] = 1107829375, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 25 local rec = { ["post_id"] = 14, ["body"] = "\ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ ", ["url"] = "", ["id"] = 25, ["author"] = "Larry", ["created_at"] = 1107656032, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 26 local rec = { ["post_id"] = 14, ["body"] = "\ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 26, ["author"] = "Larry", ["created_at"] = 1107546114, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 27 local rec = { ["post_id"] = 14, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ ", ["url"] = "", ["id"] = 27, ["author"] = "Jane Doe", ["created_at"] = 1107544824, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 28 local rec = { ["post_id"] = 13, ["body"] = "\ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ ", ["url"] = "", ["id"] = 28, ["author"] = "John Doe", ["created_at"] = 1107035129, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 29 local rec = { ["post_id"] = 13, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ ", ["url"] = "", ["id"] = 29, ["author"] = "Curly", ["created_at"] = 1105640660, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 30 local rec = { ["post_id"] = 12, ["body"] = "\ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 30, ["author"] = "Jane Doe", ["created_at"] = 1105895378, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 31 local rec = { ["post_id"] = 12, ["body"] = "\ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ ", ["url"] = "", ["id"] = 31, ["author"] = "Jane Doe", ["created_at"] = 1105640438, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 32 local rec = { ["post_id"] = 11, ["body"] = "\ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ ", ["url"] = "", ["id"] = 32, ["author"] = "John Doe", ["created_at"] = 1103055694, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 33 local rec = { ["post_id"] = 11, ["body"] = "\ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ ", ["url"] = "", ["id"] = 33, ["author"] = "Moe", ["created_at"] = 1103055668, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 34 local rec = { ["post_id"] = 10, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ ", ["url"] = "", ["id"] = 34, ["author"] = "Jane Doe", ["created_at"] = 1103036113, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 35 local rec = { ["post_id"] = 8, ["body"] = "\ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ ", ["url"] = "", ["id"] = 35, ["author"] = "Larry", ["created_at"] = 1101524526, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 36 local rec = { ["post_id"] = 8, ["body"] = "\ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ ", ["url"] = "", ["id"] = 36, ["author"] = "Moe", ["created_at"] = 1101183644, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 37 local rec = { ["post_id"] = 5, ["body"] = "\ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ ", ["url"] = "", ["id"] = 37, ["author"] = "Jane Doe", ["created_at"] = 1099774079, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 38 local rec = { ["post_id"] = 5, ["body"] = "\ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 38, ["author"] = "Moe", ["created_at"] = 1098671662, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 39 local rec = { ["post_id"] = 4, ["body"] = "\ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 39, ["author"] = "Jane Doe", ["created_at"] = 1097942722, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 40 local rec = { ["id"] = 40, ["post_id"] = 54, ["created_at"] = 1176786043, ["body"] = "\

    80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.

    \ "} rec = t:new(rec) rec:save(true) -- Table page local t = mapper:new('page') -- Record 1 local rec = { ["id"] = 1, ["title"] = "What is Kepler?", ["body"] = "## What is Kepler?\ \ **The Kepler project aims to collaboratively create an extremely portable Web development platform based on the Lua programming language, offering both flexibility and conceptual simplicity.**\ \ Kepler is an open source platform for developing Web applications in [[Lua]]. Lua is a programming language that offers a very impressive set of features while keeping everything fast, small and portable. Kepler is implemented as a set of Lua components and offers the same advantages as Lua: it is simple, extremely portable, light, extensible and offers a very flexible licence. It allows the use of XHTML, SQL, XML, Zip and other standards. There are a number of great Web development platforms out there but none balances power, size and flexibility quite like Kepler does.\ \ The Lua community is constantly contributing with more modules that can be used with Kepler, most of those modules are catalogued on LuaForge and new ones keep coming.\ "} rec = t:new(rec) rec:save(true) -- Record 2 local rec = { ["id"] = 2, ["title"] = "FAQ", ["body"] = "## General FAQ\ \ ### What is Kepler?\ \ Kepler is a a set of components for Lua that make up a powerful Web development platform. It is also the name of the project that is developing the Kepler platform.\ \ ### Why \"Kepler\"?\ \ Johannes Kepler was the astronomer that first explained that the tides are caused by the Moon. \"Lua\" means Moon in Portuguese, so the name \"Kepler\" tries to hint that some new tides may soon be caused by Lua... :o)\ \ ### What is Lua?\ \ Lua is a programming language that offers a very impressive set of features while keeping everything fast, small and portable. The Kepler Platform uses these features to offer a faster, smaller and more portable way to develop Web applications. See [[Lua]] for more information.\ \ ### What is a Web application?\ \ Web applications (also known as Web apps) are programs that are used through a Web browser. Every time you search for something with Google, read mail with Hotmail or browse Amazon you are using a Web application. Some other examples would be discussion forums, a blog or a weather site.\ \ ### What is a Web development platform?\ \ Web applications can be developed in different ways, from a hands-on approach to a very structured one. A Web development platform offers the developer a number of features that make the development of Web applications a lot easier. Instead of developing the application from scratch, the developer can benefit from the building blocks of the Web platform.\ \ ### Why build/use another Web development platform?\ \ There are a number of great Web development platforms out there but none balances power, size and flexibility quite like Kepler does.\ \ ### Is Kepler better than PHP/Java/.Net/...?\ \ That depends on what is your goal. Those platforms are surely good solutions for Web Development but sometimes they turn out to be too big, too rigid or just too unportable for the job. That's precisely where Kepler shines.\ \ ### What does Kepler offer for the developer?\ \ Kepler offers a Core plus a small but powerful combination of components. You have components for SQL Database access, XML parsing, Logging, ZIP manipulation and some others.\ \ ### What is the Kepler Core?\ \ The Kepler Core is the minimum set of components of Kepler:\ \ - [[CGILua]] for page generation\ - [[LuaSocket]] for TCP/UDP sockets \ \ ### What is the Kepler Platform?\ \ The Kepler Platform includes the Kepler Core plus a defined set of components:\ \ - [[LuaExpat]] for XML parsing\ - [[LuaFileSystem]]\ - [[LuaLogging]]\ - [[LuaSQL]] for database access\ - [[LuaZIP]] for ZIP manipulation \ \ ### Why separate the Kepler Core from the Kepler Platform?\ \ If you don't need all the Kepler Platform components or prefer to add your own components, you can simply get only the Kepler Core as a starting point. But if you choose to develop for the Kepler Platform you can benefit from some important points:\ \ - you will be able to easily upgrade your development platform as Kepler continues to evolve.\ - you will be using the same set of components as other Kepler Platform developers, making it easier to exchange ideas and experience.\ - you can be assured of the portability of your Web application for other environments, as long as those environments also run the Kepler Platform. \ \ ### Do I need to use the Kepler Platform to use the Kepler Project components?\ \ Not at all! The components developed by the Kepler Project can be used in any Lua based system. You can compile them from the source files or use the binary versions, both available free of charge on LuaForge.\ \ ### What about the licensing and pricing models?\ \ Kepler and Lua are free software: they can be used for both academic and commercial purposes at absolutely no cost. There are no royalties or GNU-like \"copyleft\" restrictions. Kepler and Lua qualifies as Open Source software. Their licenses are compatible with GPL. Kepler is not in the public domain and the Kepler Project keeps its copyright. (See also: [[License]].)\ \ ### What is CGILua?\ \ CGILua is the main component of the Kepler Core. It is a tool for creating dynamic Web pages and manipulating input data from Web forms. Among other functions, CGILua is the component responsible for the user interface programming side of your Web application, while the remaining ones handle the logic and data of your Web application.\ \ One of the big advantages of CGILua is its abstraction of the underlying Web server. You can develop a CGILua application for one Web server and run it on any other Web server that supports CGILua. See [[CGILua]] for more details.\ \ ### Do I have to use Kepler to use CGILua?\ \ No, although it is probably a lot easier to get Kepler and simply start using CGILua than to get CGILua's source and build a launcher for it from scratch. You may also benefit from the fact that Kepler includes lot of ready to use CGILua launchers so you have more choices of Web servers.\ \ ### What are CGILua launchers?\ \ A CGILua launcher is the mechanism that allows a Web server to execute and communicate with CGILua and its Web applications.\ \ ### Which CGILua launchers are available?\ \ Kepler currently offers the following set of CGILua launchers:\ \ - CGI\ - FastCGI\ - mod_lua (for Apache)\ - ISAPI (for Microsoft IIS)\ - [[Xavante]] (a Lua Web server that supports CGILua natively) \ \ You can choose your launcher based on its size, ease of use, portability or performance. You can start using a simpler launcher and then migrate to a more advanced one without any changes to your application.\ \ With this flexibility you can for example start your development locally on your Windows system running CGI and then move to a Linux server running mod_lua or even to a mobile device running Xavante.\ \ ### What if my Web server is not supported?\ \ If your target Web server does not offer any of the existent connection methods or if you would prefer to use a different connection method, you have the option of creating a CGILua launcher for the target Web server.\ \ ### How can I create a new CGILua launcher?\ \ A CGILua launcher implements SAPI, the Server API. SAPI consists in a set of functions that once implemented for a specific Web server architecture allows the execution of CGILua and its Web applications on it.\ \ ### How ready to use is Kepler?\ \ Kepler development is an ongoing process, and you can check the latest release at the Download page. Instructions for installation on Unix and Windows can be found at the Documentation page.\ \ You can also check the [[Status]] page for the incoming releases.\ \ ### Who is already using Kepler?\ \ Kepler is already being used by PUC-Rio and Hands on professional applications.\ \ ### Is there a mailing list for Kepler?\ \ Yes! Kepler questions can be posted on the Kepler Project [[Mailing List]].\ \ ### How can I help?\ \ There are a lot of ways to help the project and the team.\ \ One way is to use Kepler and provide some feedback. If you want to follow more closely, you can join the Kepler Project list or the Kepler forums on LuaForge.\ \ You can also help developing and debugging the existing modules, as much as helping document the platform and its modules. Please go to the [[Developers]] section for more information for that.\ \ Another way to help would by buying something from Amazon through the PiL links on LuaForge and the Kepler sites. Doing that you'll be helping gather resources for the Kepler team.\ \ For every product (not just PiL) bought after entering Amazon through the links we get from 2% to 5% of the product price as Amazon credits. Those credits are used to buy books for the team, so we can stay sharp and deliver the goods. :o)\ \ For those interested in helping us this way, just remember that Amazon only considers products added to the cart after you enter Amazon through the Kepler links. Anything in the cart that was added during a different visit to the store will not count for us (though it may count for another Amazon partner). \ "} rec = t:new(rec) rec:save(true) lua-orbit-2.2.1+dfsg/samples/blog/random_text.lua000066400000000000000000000216371227340735500217700ustar00rootroot00000000000000 local stuff = {}; stuff[1] = "There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on."; stuff[2] = "I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine."; stuff[3] = "Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law."; stuff[4] = "One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be."; stuff[5] = "Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold."; stuff[6] = "Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. "; stuff[7] = "This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!"; stuff[8] = "Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all."; stuff[9] = "80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world."; stuff[10] = "Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!"; stuff[11] = "Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat."; stuff[12] = "Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now."; stuff[13] = "Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!"; stuff[14] = "Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear."; stuff[15] = "Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood."; stuff[16] = "Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team."; local function shuffle() local swapFrom, swapTo, swapFromContent, swapToContent; for i=1,50 do swapFrom = math.random(1, #stuff) swapTo = math.random(1, #stuff) swapFromContent = stuff[swapFrom] swapToContent = stuff[swapTo] stuff[swapTo] = swapFromContent stuff[swapFrom] = swapToContent end end function generate() shuffle() local txt="\n" for i=1, math.random(1,2) do txt = txt .. stuff[i] .. "\n\n" end return txt end titles = { "Order Now And You Also Get A Attack Nose", "The Care And Feeding Of Your Sleeping Bicycle", "Now Anybody Can Make President", "'Star Wars' As Written By A Princess", "What I Learned From An Elephant", "Today, The World - Tomorrow, The Mixed-Up Dice", "The Funniest Joke About A Grandmother's Tree", "Dr. Jekyll And Mr. Bear", "Christmas Shopping For A Racing Ark", "Once Upon A Guardian Dinosaur", "The Mystery Of Lego Pirate", "Thomas Edison Invents The Guardian Rollercoaster", "Today, The World - Tomorrow, The Complicated Moonlight", "'Star Wars' As Written By A Scary Bat", "Anatomy Of A Funny Day", "On The Trail Of The Electric Desk", "My Coach Is A New, Improved Bear", "My Son, The Lost Banana", "The Olympic Competition Won By An Automatic Monkey", "The Olympic Competition Won By An Purple Bicycle", "Marco Polo Discovers The Complicated Spoon", "The Mystery Of Horse", "Now Anybody Can Make Miniature Nose", "My Daughter, The Spoon", "Dental Surgery On A Desert Elephant", "On The Trail Of The Automatic Giant", "What I Learned From An Football", "Now Anybody Can Make Attack Wolf", "Avast, Me Invisible Twin Fish", "Around The World With A Blustery Banana", "Mr. McMullet, The Flying Tree", "Visit Fun World And See The Rare Recycled Clown", "Wyoming Jones And The Secret Twin Canadian Bat", "Wyoming Jones And The Clown", "Marco Polo Discovers The Accountant", "Playing Poker With A Tree", "Barney And The Rollercoaster", "Today, The World - Tomorrow, The Purple Money", "I'm My Own Desert Friend", "I Have To Write About My Blustery Funny Nose", "Once Upon A Complicated Duck", "On The Trail Of The Lost Chicken", "Way Out West With The Green Giant", "No Man Is A Monkey", "Where To Meet An Impossible Friend", "Barney And The Hungry Desk", "Way Out West With The Furry Super Wolf", "The Mystery Of Lego Chicken", "I Rode Friendly Grandmother's Mixed-Up Chocolate", "Christmas Shopping For A New, Improved Ark", "The Funniest Joke About A Scary Ark", "Where To Meet An Chicken", "Once Upon Tired Water", "Always Share Your Tyrannosaurus Moonlight", "Marco Polo Discovers The Guardian Bicycle", "Training Your Proud Football", "Sherlock Holmes And The Complicated Friendly Doctor", "Christmas Shopping For A Hairy Dance", "We Elected A Secret Tree", "What It's Like Inside A Furry Desert Nose", } lua-orbit-2.2.1+dfsg/samples/blog/style.css000066400000000000000000000057771227340735500206220ustar00rootroot00000000000000 body { margin: 0; padding: 0; font: 85% arial, hevetica, sans-serif; text-align: center; color: #000066; background-color: #FFFFFF; // background-image: url(../images/img_39.gif); } a:link { color: #000066; } a:visited { color: #0000CC; } a:hover, a:active { color: #CCCCFF; background-color: #000066; } h2 { color: #000066; font: 140% georgia, times, "times new roman", serif; font-weight: bold; margin: 0 0 10px 0; } //h2 a { text-decoration: none; } h3 { color: #000066; font: 106% georgia, times, "times new roman", serif; font-weight: bold; margin-top: 0; } #container { margin: 1em auto; width: 720px; text-align: left; background-color: #FFFFFF; border: 1px none #0000CC; } #header { height: 45px; width: 100%; background-image: url(head.jpg); background-repeat: no-repeat; background-position: 0 0; border-bottom: 1px solid #0000CC; position: relative; border: 1px none #0000CC; border-bottom: 1px solid #0000CC; } #header h1 { font-size: 1px; text-align: right; color: #000066; margin: 0; padding: 0; display: none; } #mainnav ul { list-style-type: none; } #mainnav li { display: inline; } #menu { float: right; width: 165px; border-left: 1px solid #0000CC; padding-left: 15px; padding-right: 15px; } #contents { padding-right: 15px; margin: 0 200px 40px 20px; } #contents p { line-height: 165%; } //.blogentry { border-bottom: 1px solid #0000CC; } .imagefloat { float: right; } #footer { clear: both; color: #CCCCFF; background-color: #0000CC; text-align: right; font-size: 90%; } #footer img { vertical-align: middle; } #skipmenu { position: absolute; left: 0; top: 5px; width: 645px; text-align: right; } #skipmenu a { color: #666; text-decoration: none; } #skipmenu a:hover { color: #fff; background-color: #666; text-decoration: none; } #container { border: 1px solid #0000CC; } #mainnav { background-color: #0000CC; color: #CCCCFF; padding: 2px 0; margin-bottom: 22px; } #mainnav ul { margin: 0 0 0 20px; padding: 0; list-style-type: none; border-left: 1px solid #CCCCFF; } #mainnav li { display: inline; padding: 0 10px; border-right: 1px solid #CCCCFF; } #mainnav li a { text-decoration: none; color: #CCCCFF; } #mainnav li a:hover { text-decoration: none; color: #0000CC; background-color: #CCCCFF; } #menu ul { margin-left: 0; padding-left: 0; list-style-type: none; line-height: 165%; } .imagefloat { padding: 2px; border: 1px solid #0000CC; margin: 0 0 10px 10px; } .blogentry ul { // list-style-type: none; // text-align: right; // margin: 1em 0; // padding: 0; list-style-type: square; margin: 10px 0px 15px -10px; // font-size: 95%; } .blogentry li { // display: inline; // padding: 0 0 0 7px; line-height: 150%; } #footer { background-color: #0000CC; padding: 5px; font-size: 90%; } lua-orbit-2.2.1+dfsg/samples/hello/000077500000000000000000000000001227340735500171105ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/hello/hello.lua000066400000000000000000000036331227340735500207230ustar00rootroot00000000000000#!/usr/bin/env wsapi.cgi local orbit = require "orbit" -- Orbit applications are usually modules, -- orbit.new does the necessary initialization module("hello", package.seeall, orbit.new) -- These are the controllers, each receives a web object -- that is the request/response, plus any extra captures from the -- dispatch pattern. The controller sets any extra headers and/or -- the status if it's not 200, then return the response. It's -- good form to delegate the generation of the response to a view -- function function index(web) return render_index() end function say(web, name) return render_say(web, name) end -- Builds the application's dispatch table, you can -- pass multiple patterns, and any captures get passed to -- the controller hello:dispatch_get(index, "/", "/index") hello:dispatch_get(say, "/say/(%a+)") -- These are the view functions referenced by the controllers. -- orbit.htmlify does through the functions in the table passed -- as the first argument and tries to match their name against -- the provided patterns (with an implicit ^ and $ surrounding -- the pattern. Each function that matches gets an environment -- where HTML functions are created on demand. They either take -- nil (empty tags), a string (text between opening and -- closing tags), or a table with attributes and a list -- of strings that will be the text. The indexing the -- functions adds a class attribute to the tag. Functions -- are cached. -- -- This is a convenience function for the common parts of a page function render_layout(inner_html) return html{ head{ title"Hello" }, body{ inner_html } } end function render_hello() return p.hello"Hello World!" end function render_index() return render_layout(render_hello()) end function render_say(web, name) return render_layout(render_hello() .. p.hello((web.input.greeting or "Hello ") .. name .. "!")) end orbit.htmlify(hello, "render_.+") lua-orbit-2.2.1+dfsg/samples/hello/hello.ws000066400000000000000000000000301227340735500205570ustar00rootroot00000000000000return require("hello") lua-orbit-2.2.1+dfsg/samples/op.ws000066400000000000000000000004741227340735500170030ustar00rootroot00000000000000-- Orbit pages launcher, extracts script to launch local common = require "wsapi.common" local function op_loader(wsapi_env) common.normalize_paths(wsapi_env, nil, "op.ws") local app = wsapi.common.load_isolated_launcher(wsapi_env.PATH_TRANSLATED, "orbit.pages") return app(wsapi_env) end return op_loader lua-orbit-2.2.1+dfsg/samples/pages/000077500000000000000000000000001227340735500171045ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/pages/bar.op000077500000000000000000000001121227340735500202050ustar00rootroot00000000000000#!/usr/bin/env op.cgi

    This is bar, and you passed $web|input|msg!

    lua-orbit-2.2.1+dfsg/samples/pages/css/000077500000000000000000000000001227340735500176745ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/pages/css/doc.css000066400000000000000000000074271227340735500211650ustar00rootroot00000000000000body { 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; } .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: 12em; 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: 12em; 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: 10pt "Times New Roman", "TimeNR", Times, serif; } a { font-weight:bold; color: #004080; text-decoration: underline; } #main { background-color: #ffffff; border-left: 0px; } #container { margin-left: 2%; margin-right: 2%; background-color: #ffffff; } #content { margin-left: 0px; padding: 1em; border-left: 0px; border-right: 0px; background-color: #ffffff; } #navigation { display: none; } #product_logo { display: none; } #about img { display: none; } .example { font-family: "Andale Mono", monospace; font-size: 8pt; page-break-inside: avoid; } } lua-orbit-2.2.1+dfsg/samples/pages/foo.op000077500000000000000000000004121227340735500202270ustar00rootroot00000000000000#!/usr/bin/env op.cgi

    Hello Cosmo!

    I am in $web|real_path, and the script is $web|script_name.

    $lua{[[ if not web.input.msg then web.input.msg = "nothing" end ]]}

    You passed: $web|input|msg.

    $include{ "bar.op" } lua-orbit-2.2.1+dfsg/samples/pages/img/000077500000000000000000000000001227340735500176605ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/pages/img/keplerproject.gif000066400000000000000000000044051227340735500232230ustar00rootroot00000000000000GIF89a4@@@ ```000PPPppp((--ŤnnMM mmDDpp\\II((z˕))!,4pH,Ȥrl:ШtJZجvzxL.znA"~χNv}n;50 // 05;x\$;04::40;$M; ;m))E//b!҂!C:ɲV,#".1%%1."#,=ǰK20BcPxAƦNDGHEaʼn OBEETq 5x M2(ٓND AȧTt!´ACH +KlTIIKo[]IYw֑U\iQ;TeYX9f ,]h ЦS”; /݋F| 昵y/E5/eG;=$iBD A! mu(;늢 IF:4xHKcd3-©5"n$$hA}($MЮ,CW % BʐH&2n]9,)H=0Dq[xza"<;8'#tfDVr L΂GjNtP4|xk$فtș"C,ov V2.S:WNj y̵5d\E"fa X㚫uuR$Bn~z{$]ї;"ttف]7@@K!jhf{RZʝuML ء< a%C0 ji(sM'QpX)LQεBJxA"! dJF )2%! AC /_!&=8!rLXG;ymvsк9p<#WF5,f/ h2n]0)"h)ƝE" *xM fWVհgMZָB;lua-orbit-2.2.1+dfsg/samples/pages/img/test.jpg000066400000000000000000000135701227340735500213470ustar00rootroot00000000000000JFIFHH XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222Rn"5!1A"Qa#2BqbR3r#!1AQ2q ?~W6yȲqY $=۾Jpc cۓQ5⚔_RpJ10(MSJ} ~Hʒs93K)0ڊH@}Fw&mN|lf+&.3KeR?Po?lXzr\}WYjĹYbʛ$ :(IY~O 1Ce P_aO+š]bb/;湿@Z|zsRIbv s$*2Z?a\2mABǫ1\rےYi‚Nm\drXjuc=w';g셦%}6ΨB!y=8ޑffd'Zm }M QXݥE -.1oӉ]+7 nO3]м =\7LKT=);>C5N]|89:Z6~^rcJR84,wxSJ )<?,-2OYޭe4un/}SqF`VU9;Wj5|_/ 6! 9987y W(1)dOE< u+M@#uWAiI]ZmI9眸?ӰC WJ5'2DR<%#a+Lgo_Wa2jˣZ\9h%a-#qVU6euzSPA9+ ,. ˱kjU-1P  ?{c@JYVcO]nN]+# Iq0d'm4I[9Li. B9 puNRGK-N8HK}{£J &HUP^ËR;j6ѮϽGzaJ$:g}m?oհ&G͍$'M olZ?O,[b]K |J֬a8&. OHeƂ*J9MXӞB geH{$2ʂG*?SPjw9c;/j* LeAb_8#6ly@.RmK{Aյ$ө2n碯MQm@Թ2B>A-Fڧ\:wZRQR8#^6x-Eۚo)/lv ڷ==I)qIrPOqj9p﹃+9HO-a&.Qԇ;ҹ>v=\f=E<9.9l%YVHZgIOݵ,U i9ƽ[ˀ6ǣ#qجeAxaҒ:ry߯{fؔ.Q*R';qU[3m^OQrGlsW W}=&` dK#''UTGT^ UK #M'W?5/Hesv$iԹU(RG4$zٽZtUU-[DSRRw'ޚ"PVϚbdttzNՙ#SIgBFNJUP$+0i~ uhiN9%G@Rqɣ,6)J':/mqy16,/<}kQjTBvcte3Ҿ Zղ"YR܁iڢx6LÐ{hÛqe59ϯs K1u2Pۏ2]|' FZksTFqܓUI-ky6BPJh%IQJʨKyp[!/Җ!@C>|U5}=#w9aYvS垂xe}Ldi1VJOs^ZrBG>ĞX>cZ셏˅>7SN$:H95娺dppc6WK*rR~7Kth|~@˚T'Y?\\w1GN}Nj83#UkMpѾە$Nj *HTڎ3tݫ L0'%#a9v{ NSjD= ;uz] 9=2m#32?O^aZKԺfUJ*|R\sNJ+)' Welcome to Kepler!
    Welcome page

    Congratulations!

    If you are reading this page, $web|vars|SERVER_SOFTWARE has been successfully configured for Orbit Pages on your system.

    This is a page generated by CGILua that points to the installed modules documentation. It serves both as a documentation index and as a simple example of a dynamic Lua Page.

    What now?

    From here you can also run some tests.

    Contact us

    For more information on Kepler modules please contact us. Comments are welcome!

    You can also reach other Kepler developers and users on the Kepler Project mailing list.

    Copyright 2004-2007 - Kepler Project

    Valid XHTML 1.0

    $Id: index.op,v 1.1 2008/06/30 14:29:59 carregal Exp $

    lua-orbit-2.2.1+dfsg/samples/pages/test.op000077500000000000000000000130041227340735500204240ustar00rootroot00000000000000#!/usr/bin/env op.cgi Orbit Pages Test $lua{[[ if web.input.user then web:set_cookie("cookie_kepler", web.input.user) end ]]}
    Orbit Pages simple tests

    Form Handling

    Entering values on this form should display them as values in the first submission, and as a cookie in the next submission

    The values should show the previous POST

    Values: Username = $if{$web|input|user}[[$it]],[[(not set)]], Password = $if{$web|input|pass}[[$it]],[[(not set)]]

    Cookies test

    Here you should see the values posted before the ones shown above

    cookie_kepler = $if{$web|cookies|cookie_kepler}[[$it]],[[(not set)]]

    File Upload

    Choose a file to upload, press "Upload" and a link to the file should appear below with the corresponding "Remove" button.

    $lua{[[ local f = web.input.file upload = {} if f then local name = f.name local bytes = f.contents local dest = io.open(web.real_path .. "/" .. name, "wb") if dest then dest:write(bytes) dest:close() upload[1] = name end end ]]} $upload[[ $it
    ]] $lua{[[ if web.input.remove then os.remove(web.input.filename) end ]]} $lua{[=[ function showtable(arg) local t = arg[1] local out = {} local put = function (s) table.insert(out, s) end put "{" for i,v in pairs (t) do put("\n") if type(v) == "table" then local vv = "{\n" for a,b in pairs(v) do vv = string.format ("%s %s = [[%s]],\n", vv, a, tostring(b)) end v = vv.." }," put (string.format (" %s = %s", i, tostring(v))) else put (string.format (" %s = [[%s]],", i, tostring(v))) end end if next(t) then put "\n" end put "}\n" return table.concat(out) end ]=]}

    web.GET

    $showtable{ $web|GET }
    

    web.POST

    $showtable{ $web|POST }
    

    Web Variables

    $lua{[[ vars = { "real_path", "path_info", "doc_root", "script_name", "path_translated", "prefix", "method" } webvar = function (arg) return web[arg[1] ] end ]]} $vars[[ ]]
    web.$it$webvar{ $it }

    Server Variables

    $lua{[[ vars = { "SERVER_SOFTWARE", "SERVER_NAME", "SERVER_PROTOCOL", "SERVER_PORT", "GATEWAY_INTERFACE", "REQUEST_METHOD", "SCRIPT_NAME", "PATH_INFO", "PATH_TRANSLATED", "QUERY_STRING", "CONTENT_TYPE", "CONTENT_LENGTH", "REMOTE_ADDR", "REMOTE_HOST", "REMOTE_USER", "REMOTE_IDENT", "AUTH_TYPE", } servervar = function (arg) return web.vars[arg[1] ] end ]]} $vars[[ ]]
    $it$servervar{ $it }

    Date

    Today is: $os|date

    Image test

    Here should be a small image: a small photograph

    FileSystem test

    $lua{[[ dirname = web.doc_root or "" dir = {} for file in lfs.dir(dirname) do dir[#dir + 1] = "   "..file.."
    " end ]]} Iterating over $dirname $dir[[$it]]

    Containment test

    $lua{[[ if not x then x = 1 else x = x + 1 end ]]} Expected value: 1, actual value: $x.

    Valid XHTML 1.0

    $Id: test.op,v 1.1 2008/06/30 14:29:59 carregal Exp $

    lua-orbit-2.2.1+dfsg/samples/routes/000077500000000000000000000000001227340735500173265ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/routes/hello.lua000066400000000000000000000011701227340735500211330ustar00rootroot00000000000000#!/usr/bin/env wsapi.cgi local orbit = require "orbit" local R = require "orbit.routes" local hello = orbit.new() hello:dispatch_get(function (web) return string.format('

    Welcome to %s!

    ', web.real_path) end, R'/') hello:dispatch_get(function(web, params) return string.format('Hello %s!', params.name) end, R'/hello/:name') hello:dispatch_get(function(web, params) return string.format('Hi %s!', params.splat[1]) end, R'/hi/*') hello:dispatch_get(function(web, params) return string.format('Hey %s!', params.name or "stranger") end, R'/hey/?:name?') return hello lua-orbit-2.2.1+dfsg/samples/songs/000077500000000000000000000000001227340735500171365ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/songs/songs.cgi000077500000000000000000000003001227340735500207470ustar00rootroot00000000000000#!/usr/bin/env lua local lfs = require "lfs" lfs.chdir("/home/mascarenhas/work/orbit/samples/songs") local wscgi = require "wsapi.cgi" local songs = require "songs" wscgi.run(songs.run) lua-orbit-2.2.1+dfsg/samples/songs/songs.fcgi000077500000000000000000000003071227340735500211240ustar00rootroot00000000000000#!/usr/bin/env lua local lfs = require "lfs" lfs.chdir("/home/mascarenhas/work/orbit/samples/songs") local wsfcgi = require "wsapi.fastcgi" local sontgs = require "songs" wsfcgi.run(songs.run) lua-orbit-2.2.1+dfsg/samples/songs/songs.lua000066400000000000000000000017631227340735500210010ustar00rootroot00000000000000#!/usr/bin/env wsapi.cgi local orbit = require"orbit" local cosmo = require"cosmo" local songs = orbit.new() function songs.index(web) local songlist = { "Sgt. Pepper's Lonely Hearts Club Band", "With a Little Help from My Friends", "Lucy in the Sky with Diamonds", "Getting Better", "Fixing a Hole", "She's Leaving Home", "Being for the Benefit of Mr. Kite!", "Within You Without You", "When I'm Sixty-Four", "Lovely Rita", "Good Morning Good Morning", "Sgt. Pepper's Lonely Hearts Club Band (Reprise)", "A Day in the Life" } return songs.layout(songs.render_index({ songs = songlist })) end songs:dispatch_get(songs.index, "/") function songs.layout(inner_html) return html{ head{ title"Song List" }, body{ inner_html } } end orbit.htmlify(songs, "layout") songs.render_index = cosmo.compile[[

    Songs

    $songs[=[]=]
    $it
    ]] return songs.run lua-orbit-2.2.1+dfsg/samples/songs/songs.ws000066400000000000000000000000301227340735500206330ustar00rootroot00000000000000return require("songs") lua-orbit-2.2.1+dfsg/samples/todo/000077500000000000000000000000001227340735500167525ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/todo/items.op000077500000000000000000000004461227340735500204420ustar00rootroot00000000000000$lua{[[ items = todo_list:find_all{ order = "created_at desc" } ]]} $if{$items|1}[==[ $items[[
  • $title Remove
  • ]] ]==],[==[Nothing to do!]==] lua-orbit-2.2.1+dfsg/samples/todo/jquery-1.2.3.js000066400000000000000000002747731227340735500213120ustar00rootroot00000000000000(function(){ /* * jQuery 1.2.3 - New Wave Javascript * * Copyright (c) 2008 John Resig (jquery.com) * Dual licensed under the MIT (MIT-LICENSE.txt) * and GPL (GPL-LICENSE.txt) licenses. * * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $ * $Rev: 4663 $ */ // Map over jQuery in case of overwrite if ( window.jQuery ) var _jQuery = window.jQuery; var jQuery = window.jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' return new jQuery.prototype.init( selector, context ); }; // Map over the $ in case of overwrite if ( window.$ ) var _$ = window.$; // Map the jQuery namespace to the '$' one window.$ = jQuery; // A simple way to check for HTML strings or ID strings // (both of which we optimize for) var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/; // Is it a simple selector var isSimple = /^.[^:#\[\.]*$/; jQuery.fn = jQuery.prototype = { init: function( selector, context ) { // Make sure that a selection was provided selector = selector || document; // Handle $(DOMElement) if ( selector.nodeType ) { this[0] = selector; this.length = 1; return this; // Handle HTML strings } else if ( typeof selector == "string" ) { // Are we dealing with HTML string or an ID? var match = quickExpr.exec( selector ); // Verify a match, and that no context was specified for #id if ( match && (match[1] || !context) ) { // HANDLE: $(html) -> $(array) if ( match[1] ) selector = jQuery.clean( [ match[1] ], context ); // HANDLE: $("#id") else { var elem = document.getElementById( match[3] ); // Make sure an element was located if ( elem ) // Handle the case where IE and Opera return items // by name instead of ID if ( elem.id != match[3] ) return jQuery().find( selector ); // Otherwise, we inject the element directly into the jQuery object else { this[0] = elem; this.length = 1; return this; } else selector = []; } // HANDLE: $(expr, [context]) // (which is just equivalent to: $(content).find(expr) } else return new jQuery( context ).find( selector ); // HANDLE: $(function) // Shortcut for document ready } else if ( jQuery.isFunction( selector ) ) return new jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( selector ); return this.setArray( // HANDLE: $(array) selector.constructor == Array && selector || // HANDLE: $(arraylike) // Watch for when an array-like object, contains DOM nodes, is passed in as the selector (selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray( selector ) || // HANDLE: $(*) [ selector ] ); }, // The current version of jQuery being used jquery: "1.2.3", // The number of elements contained in the matched element set size: function() { return this.length; }, // The number of elements contained in the matched element set length: 0, // Get the Nth element in the matched element set OR // Get the whole matched element set as a clean array get: function( num ) { return num == undefined ? // Return a 'clean' array jQuery.makeArray( this ) : // Return just the object this[ num ]; }, // Take an array of elements and push it onto the stack // (returning the new matched element set) pushStack: function( elems ) { // Build a new jQuery matched element set var ret = jQuery( elems ); // Add the old object onto the stack (as a reference) ret.prevObject = this; // Return the newly-formed element set return ret; }, // Force the current matched set of elements to become // the specified array of elements (destroying the stack in the process) // You should use pushStack() in order to do this, but maintain the stack setArray: function( elems ) { // Resetting the length to 0, then using the native Array push // is a super-fast way to populate an object with array-like properties this.length = 0; Array.prototype.push.apply( this, elems ); return this; }, // Execute a callback for every element in the matched set. // (You can seed the arguments with an array of args, but this is // only used internally.) each: function( callback, args ) { return jQuery.each( this, callback, args ); }, // Determine the position of an element within // the matched set of elements index: function( elem ) { var ret = -1; // Locate the position of the desired element this.each(function(i){ if ( this == elem ) ret = i; }); return ret; }, attr: function( name, value, type ) { var options = name; // Look for the case where we're accessing a style value if ( name.constructor == String ) if ( value == undefined ) return this.length && jQuery[ type || "attr" ]( this[0], name ) || undefined; else { options = {}; options[ name ] = value; } // Check to see if we're setting style values return this.each(function(i){ // Set all the styles for ( name in options ) jQuery.attr( type ? this.style : this, name, jQuery.prop( this, options[ name ], type, i, name ) ); }); }, css: function( key, value ) { // ignore negative width and height values if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 ) value = undefined; return this.attr( key, value, "curCSS" ); }, text: function( text ) { if ( typeof text != "object" && text != null ) return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); var ret = ""; jQuery.each( text || this, function(){ jQuery.each( this.childNodes, function(){ if ( this.nodeType != 8 ) ret += this.nodeType != 1 ? this.nodeValue : jQuery.fn.text( [ this ] ); }); }); return ret; }, wrapAll: function( html ) { if ( this[0] ) // The elements to wrap the target around jQuery( html, this[0].ownerDocument ) .clone() .insertBefore( this[0] ) .map(function(){ var elem = this; while ( elem.firstChild ) elem = elem.firstChild; return elem; }) .append(this); return this; }, wrapInner: function( html ) { return this.each(function(){ jQuery( this ).contents().wrapAll( html ); }); }, wrap: function( html ) { return this.each(function(){ jQuery( this ).wrapAll( html ); }); }, append: function() { return this.domManip(arguments, true, false, function(elem){ if (this.nodeType == 1) this.appendChild( elem ); }); }, prepend: function() { return this.domManip(arguments, true, true, function(elem){ if (this.nodeType == 1) this.insertBefore( elem, this.firstChild ); }); }, before: function() { return this.domManip(arguments, false, false, function(elem){ this.parentNode.insertBefore( elem, this ); }); }, after: function() { return this.domManip(arguments, false, true, function(elem){ this.parentNode.insertBefore( elem, this.nextSibling ); }); }, end: function() { return this.prevObject || jQuery( [] ); }, find: function( selector ) { var elems = jQuery.map(this, function(elem){ return jQuery.find( selector, elem ); }); return this.pushStack( /[^+>] [^+>]/.test( selector ) || selector.indexOf("..") > -1 ? jQuery.unique( elems ) : elems ); }, clone: function( events ) { // Do the clone var ret = this.map(function(){ if ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) { // IE copies events bound via attachEvent when // using cloneNode. Calling detachEvent on the // clone will also remove the events from the orignal // In order to get around this, we use innerHTML. // Unfortunately, this means some modifications to // attributes in IE that are actually only stored // as properties will not be copied (such as the // the name attribute on an input). var clone = this.cloneNode(true), container = document.createElement("div"); container.appendChild(clone); return jQuery.clean([container.innerHTML])[0]; } else return this.cloneNode(true); }); // Need to set the expando to null on the cloned set if it exists // removeData doesn't work here, IE removes it from the original as well // this is primarily for IE but the data expando shouldn't be copied over in any browser var clone = ret.find("*").andSelf().each(function(){ if ( this[ expando ] != undefined ) this[ expando ] = null; }); // Copy the events from the original to the clone if ( events === true ) this.find("*").andSelf().each(function(i){ if (this.nodeType == 3) return; var events = jQuery.data( this, "events" ); for ( var type in events ) for ( var handler in events[ type ] ) jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data ); }); // Return the cloned set return ret; }, filter: function( selector ) { return this.pushStack( jQuery.isFunction( selector ) && jQuery.grep(this, function(elem, i){ return selector.call( elem, i ); }) || jQuery.multiFilter( selector, this ) ); }, not: function( selector ) { if ( selector.constructor == String ) // test special case where just one selector is passed in if ( isSimple.test( selector ) ) return this.pushStack( jQuery.multiFilter( selector, this, true ) ); else selector = jQuery.multiFilter( selector, this ); var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; return this.filter(function() { return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; }); }, add: function( selector ) { return !selector ? this : this.pushStack( jQuery.merge( this.get(), selector.constructor == String ? jQuery( selector ).get() : selector.length != undefined && (!selector.nodeName || jQuery.nodeName(selector, "form")) ? selector : [selector] ) ); }, is: function( selector ) { return selector ? jQuery.multiFilter( selector, this ).length > 0 : false; }, hasClass: function( selector ) { return this.is( "." + selector ); }, val: function( value ) { if ( value == undefined ) { if ( this.length ) { var elem = this[0]; // We need to handle select boxes special if ( jQuery.nodeName( elem, "select" ) ) { var index = elem.selectedIndex, values = [], options = elem.options, one = elem.type == "select-one"; // Nothing was selected if ( index < 0 ) return null; // Loop through all the selected options for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { var option = options[ i ]; if ( option.selected ) { // Get the specifc value for the option value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value; // We don't need an array for one selects if ( one ) return value; // Multi-Selects return an array values.push( value ); } } return values; // Everything else, we just grab the value } else return (this[0].value || "").replace(/\r/g, ""); } return undefined; } return this.each(function(){ if ( this.nodeType != 1 ) return; if ( value.constructor == Array && /radio|checkbox/.test( this.type ) ) this.checked = (jQuery.inArray(this.value, value) >= 0 || jQuery.inArray(this.name, value) >= 0); else if ( jQuery.nodeName( this, "select" ) ) { var values = value.constructor == Array ? value : [ value ]; jQuery( "option", this ).each(function(){ this.selected = (jQuery.inArray( this.value, values ) >= 0 || jQuery.inArray( this.text, values ) >= 0); }); if ( !values.length ) this.selectedIndex = -1; } else this.value = value; }); }, html: function( value ) { return value == undefined ? (this.length ? this[0].innerHTML : null) : this.empty().append( value ); }, replaceWith: function( value ) { return this.after( value ).remove(); }, eq: function( i ) { return this.slice( i, i + 1 ); }, slice: function() { return this.pushStack( Array.prototype.slice.apply( this, arguments ) ); }, map: function( callback ) { return this.pushStack( jQuery.map(this, function(elem, i){ return callback.call( elem, i, elem ); })); }, andSelf: function() { return this.add( this.prevObject ); }, data: function( key, value ){ var parts = key.split("."); parts[1] = parts[1] ? "." + parts[1] : ""; if ( value == null ) { var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); if ( data == undefined && this.length ) data = jQuery.data( this[0], key ); return data == null && parts[1] ? this.data( parts[0] ) : data; } else return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){ jQuery.data( this, key, value ); }); }, removeData: function( key ){ return this.each(function(){ jQuery.removeData( this, key ); }); }, domManip: function( args, table, reverse, callback ) { var clone = this.length > 1, elems; return this.each(function(){ if ( !elems ) { elems = jQuery.clean( args, this.ownerDocument ); if ( reverse ) elems.reverse(); } var obj = this; if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( elems[0], "tr" ) ) obj = this.getElementsByTagName("tbody")[0] || this.appendChild( this.ownerDocument.createElement("tbody") ); var scripts = jQuery( [] ); jQuery.each(elems, function(){ var elem = clone ? jQuery( this ).clone( true )[0] : this; // execute all scripts after the elements have been injected if ( jQuery.nodeName( elem, "script" ) ) { scripts = scripts.add( elem ); } else { // Remove any inner scripts for later evaluation if ( elem.nodeType == 1 ) scripts = scripts.add( jQuery( "script", elem ).remove() ); // Inject the elements into the document callback.call( obj, elem ); } }); scripts.each( evalScript ); }); } }; // Give the init function the jQuery prototype for later instantiation jQuery.prototype.init.prototype = jQuery.prototype; function evalScript( i, elem ) { if ( elem.src ) jQuery.ajax({ url: elem.src, async: false, dataType: "script" }); else jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); if ( elem.parentNode ) elem.parentNode.removeChild( elem ); } jQuery.extend = jQuery.fn.extend = function() { // copy reference to target object var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; // Handle a deep copy situation if ( target.constructor == Boolean ) { deep = target; target = arguments[1] || {}; // skip the boolean and the target i = 2; } // Handle case when target is a string or something (possible in deep copy) if ( typeof target != "object" && typeof target != "function" ) target = {}; // extend jQuery itself if only one argument is passed if ( length == 1 ) { target = this; i = 0; } for ( ; i < length; i++ ) // Only deal with non-null/undefined values if ( (options = arguments[ i ]) != null ) // Extend the base object for ( var name in options ) { // Prevent never-ending loop if ( target === options[ name ] ) continue; // Recurse if we're merging object values if ( deep && options[ name ] && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType ) target[ name ] = jQuery.extend( target[ name ], options[ name ] ); // Don't bring in undefined values else if ( options[ name ] != undefined ) target[ name ] = options[ name ]; } // Return the modified object return target; }; var expando = "jQuery" + (new Date()).getTime(), uuid = 0, windowData = {}; // exclude the following css properties to add px var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i; jQuery.extend({ noConflict: function( deep ) { window.$ = _$; if ( deep ) window.jQuery = _jQuery; return jQuery; }, // See test/unit/core.js for details concerning this function. isFunction: function( fn ) { return !!fn && typeof fn != "string" && !fn.nodeName && fn.constructor != Array && /function/i.test( fn + "" ); }, // check if an element is in a (or is an) XML document isXMLDoc: function( elem ) { return elem.documentElement && !elem.body || elem.tagName && elem.ownerDocument && !elem.ownerDocument.body; }, // Evalulates a script in a global context globalEval: function( data ) { data = jQuery.trim( data ); if ( data ) { // Inspired by code by Andrea Giammarchi // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html var head = document.getElementsByTagName("head")[0] || document.documentElement, script = document.createElement("script"); script.type = "text/javascript"; if ( jQuery.browser.msie ) script.text = data; else script.appendChild( document.createTextNode( data ) ); head.appendChild( script ); head.removeChild( script ); } }, nodeName: function( elem, name ) { return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); }, cache: {}, data: function( elem, name, data ) { elem = elem == window ? windowData : elem; var id = elem[ expando ]; // Compute a unique ID for the element if ( !id ) id = elem[ expando ] = ++uuid; // Only generate the data cache if we're // trying to access or manipulate it if ( name && !jQuery.cache[ id ] ) jQuery.cache[ id ] = {}; // Prevent overriding the named cache with undefined values if ( data != undefined ) jQuery.cache[ id ][ name ] = data; // Return the named cache data, or the ID for the element return name ? jQuery.cache[ id ][ name ] : id; }, removeData: function( elem, name ) { elem = elem == window ? windowData : elem; var id = elem[ expando ]; // If we want to remove a specific section of the element's data if ( name ) { if ( jQuery.cache[ id ] ) { // Remove the section of cache data delete jQuery.cache[ id ][ name ]; // If we've removed all the data, remove the element's cache name = ""; for ( name in jQuery.cache[ id ] ) break; if ( !name ) jQuery.removeData( elem ); } // Otherwise, we want to remove all of the element's data } else { // Clean up the element expando try { delete elem[ expando ]; } catch(e){ // IE has trouble directly removing the expando // but it's ok with using removeAttribute if ( elem.removeAttribute ) elem.removeAttribute( expando ); } // Completely remove the data cache delete jQuery.cache[ id ]; } }, // args is for internal usage only each: function( object, callback, args ) { if ( args ) { if ( object.length == undefined ) { for ( var name in object ) if ( callback.apply( object[ name ], args ) === false ) break; } else for ( var i = 0, length = object.length; i < length; i++ ) if ( callback.apply( object[ i ], args ) === false ) break; // A special, fast, case for the most common use of each } else { if ( object.length == undefined ) { for ( var name in object ) if ( callback.call( object[ name ], name, object[ name ] ) === false ) break; } else for ( var i = 0, length = object.length, value = object[0]; i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} } return object; }, prop: function( elem, value, type, i, name ) { // Handle executable functions if ( jQuery.isFunction( value ) ) value = value.call( elem, i ); // Handle passing in a number to a CSS property return value && value.constructor == Number && type == "curCSS" && !exclude.test( name ) ? value + "px" : value; }, className: { // internal only, use addClass("class") add: function( elem, classNames ) { jQuery.each((classNames || "").split(/\s+/), function(i, className){ if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) ) elem.className += (elem.className ? " " : "") + className; }); }, // internal only, use removeClass("class") remove: function( elem, classNames ) { if (elem.nodeType == 1) elem.className = classNames != undefined ? jQuery.grep(elem.className.split(/\s+/), function(className){ return !jQuery.className.has( classNames, className ); }).join(" ") : ""; }, // internal only, use is(".class") has: function( elem, className ) { return jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1; } }, // A method for quickly swapping in/out CSS properties to get correct calculations swap: function( elem, options, callback ) { var old = {}; // Remember the old values, and insert the new ones for ( var name in options ) { old[ name ] = elem.style[ name ]; elem.style[ name ] = options[ name ]; } callback.call( elem ); // Revert the old values for ( var name in options ) elem.style[ name ] = old[ name ]; }, css: function( elem, name, force ) { if ( name == "width" || name == "height" ) { var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; function getWH() { val = name == "width" ? elem.offsetWidth : elem.offsetHeight; var padding = 0, border = 0; jQuery.each( which, function() { padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; }); val -= Math.round(padding + border); } if ( jQuery(elem).is(":visible") ) getWH(); else jQuery.swap( elem, props, getWH ); return Math.max(0, val); } return jQuery.curCSS( elem, name, force ); }, curCSS: function( elem, name, force ) { var ret; // A helper method for determining if an element's values are broken function color( elem ) { if ( !jQuery.browser.safari ) return false; var ret = document.defaultView.getComputedStyle( elem, null ); return !ret || ret.getPropertyValue("color") == ""; } // We need to handle opacity special in IE if ( name == "opacity" && jQuery.browser.msie ) { ret = jQuery.attr( elem.style, "opacity" ); return ret == "" ? "1" : ret; } // Opera sometimes will give the wrong display answer, this fixes it, see #2037 if ( jQuery.browser.opera && name == "display" ) { var save = elem.style.outline; elem.style.outline = "0 solid black"; elem.style.outline = save; } // Make sure we're using the right name for getting the float value if ( name.match( /float/i ) ) name = styleFloat; if ( !force && elem.style && elem.style[ name ] ) ret = elem.style[ name ]; else if ( document.defaultView && document.defaultView.getComputedStyle ) { // Only "float" is needed here if ( name.match( /float/i ) ) name = "float"; name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); var getComputedStyle = document.defaultView.getComputedStyle( elem, null ); if ( getComputedStyle && !color( elem ) ) ret = getComputedStyle.getPropertyValue( name ); // If the element isn't reporting its values properly in Safari // then some display: none elements are involved else { var swap = [], stack = []; // Locate all of the parent display: none elements for ( var a = elem; a && color(a); a = a.parentNode ) stack.unshift(a); // Go through and make them visible, but in reverse // (It would be better if we knew the exact display type that they had) for ( var i = 0; i < stack.length; i++ ) if ( color( stack[ i ] ) ) { swap[ i ] = stack[ i ].style.display; stack[ i ].style.display = "block"; } // Since we flip the display style, we have to handle that // one special, otherwise get the value ret = name == "display" && swap[ stack.length - 1 ] != null ? "none" : ( getComputedStyle && getComputedStyle.getPropertyValue( name ) ) || ""; // Finally, revert the display styles back for ( var i = 0; i < swap.length; i++ ) if ( swap[ i ] != null ) stack[ i ].style.display = swap[ i ]; } // We should always get a number back from opacity if ( name == "opacity" && ret == "" ) ret = "1"; } else if ( elem.currentStyle ) { var camelCase = name.replace(/\-(\w)/g, function(all, letter){ return letter.toUpperCase(); }); ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ]; // From the awesome hack by Dean Edwards // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 // If we're not dealing with a regular pixel number // but a number that has a weird ending, we need to convert it to pixels if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { // Remember the original values var style = elem.style.left, runtimeStyle = elem.runtimeStyle.left; // Put in the new values to get a computed value out elem.runtimeStyle.left = elem.currentStyle.left; elem.style.left = ret || 0; ret = elem.style.pixelLeft + "px"; // Revert the changed values elem.style.left = style; elem.runtimeStyle.left = runtimeStyle; } } return ret; }, clean: function( elems, context ) { var ret = []; context = context || document; // !context.createElement fails in IE with an error but returns typeof 'object' if (typeof context.createElement == 'undefined') context = context.ownerDocument || context[0] && context[0].ownerDocument || document; jQuery.each(elems, function(i, elem){ if ( !elem ) return; if ( elem.constructor == Number ) elem = elem.toString(); // Convert html string into DOM nodes if ( typeof elem == "string" ) { // Fix "XHTML"-style tags in all browsers elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? all : front + ">"; }); // Trim whitespace, otherwise indexOf won't work as expected var tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement("div"); var wrap = // option or optgroup !tags.indexOf("", "" ] || !tags.indexOf("", "" ] || tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && [ 1, "", "
    " ] || !tags.indexOf("", "" ] || // matched above (!tags.indexOf("", "" ] || !tags.indexOf("", "" ] || // IE can't serialize and

    To-do

      $include{ "items.op" }
    lua-orbit-2.2.1+dfsg/samples/todo/todo.sql000066400000000000000000000002541227340735500204410ustar00rootroot00000000000000CREATE TABLE todo_list ("id" INTEGER PRIMARY KEY NOT NULL, "title" VARCHAR(255) DEFAULT "", "done" BOOLEAN DEFAULT "f", "created_at" DATETIME); lua-orbit-2.2.1+dfsg/samples/todo/todo.ws000077500000000000000000000053501227340735500203000ustar00rootroot00000000000000#!/usr/bin/env wsapi.cgi local orbit = require "orbit" local cosmo = require "cosmo" local luasql = require "luasql.sqlite3" local todo = orbit.new() todo.mapper.logging = true todo.mapper.conn = luasql.sqlite3():connect(todo.real_path .. "/todo.db") todo.list = todo:model("todo_list") local function item_list() return todo.list:find_all{ order = "created_at desc" } end local function index(web) local list = web:page_inline(todo.items, { items = item_list() }) return web:page_inline(todo.index, { items = list }) end todo:dispatch_get(index, "/") local function add(web) local item = todo.list:new() item.title = web.input.item or "" item:save() return web:page_inline(todo.items, { items = item_list() }) end todo:dispatch_post(add, "/add") local function remove(web, id) local item = todo.list:find(tonumber(id)) item:delete() return web:page_inline(todo.items, { items = item_list() }) end todo:dispatch_post(remove, "/remove/(%d+)") local function toggle(web, id) local item = todo.list:find(tonumber(id)) item.done = not item.done item:save() return "toggle" end todo:dispatch_post(toggle, "/toggle/(%d+)") todo:dispatch_static(".+%.js") todo.index = [===[ To-do List

    To-do

      $items
    ]===] todo.items = [===[ $if{$items|1}[==[ $items[[
  • $title Remove
  • ]] ]==],[==[Nothing to do!]==] ]===] return todo lua-orbit-2.2.1+dfsg/samples/toycms/000077500000000000000000000000001227340735500173235ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/toycms/.htaccess000066400000000000000000000033331227340735500211230ustar00rootroot00000000000000 AddHandler cgi-script .lua AddHandler fcgid-script .lua FCGIWrapper "/usr/bin/env wsapi.fcgi" .lua Deny from all Allow from none Allow from all Deny from none XSendFile on RewriteEngine on RewriteCond %{REQUEST_FILENAME} ^(.*)/(toycms|index)\.lua$ RewriteCond %1/page_cache/index.html -f RewriteRule ^(toycms|index)\.lua/?$ page_cache/index.html [L] RewriteCond %{REQUEST_FILENAME} ^(.*)/(toycms|index)\.lua$ RewriteCond %1/page_cache/post-$2.html -f RewriteRule ^(toycms|index)\.lua/post/(.+)$ page_cache/post-$2.html [L] RewriteCond %{REQUEST_FILENAME} ^(.*)/(toycms|index)\.lua$ RewriteCond %1/page_cache/archive-$2-$3.html -f RewriteRule ^(toycms|index)\.lua/archive/([^/]+)/([^/]+)$ page_cache/archive-$2-$3.html [L] RewriteCond %{REQUEST_FILENAME} ^(.*)/(toycms|index)\.lua$ RewriteCond %1/page_cache/section-$2.html -f RewriteRule ^(toycms|index)\.lua/section/(.+)$ page_cache/section-$2.html [L] RewriteCond %{REQUEST_FILENAME} ^(.*)/(toycms|index)\.lua$ RewriteCond %1/page_cache/index.xml -f RewriteRule ^(toycms|index)\.lua/xml$ page_cache/index.xml [L] RewriteCond %{REQUEST_FILENAME} ^(.*)/(toycms|index)\.lua$ RewriteCond %1/page_cache/post-$2.xml -f RewriteRule ^(toycms|index)\.lua/post/([^/]+)/xml$ page_cache/post-$2.xml [L] RewriteCond %{REQUEST_FILENAME} ^(.*)/(toycms|index)\.lua$ RewriteCond %1/page_cache/section-$2.xml -f RewriteRule ^(toycms|index)\.lua/section/([^/]+)$ page_cache/section-$2.xml [L] lua-orbit-2.2.1+dfsg/samples/toycms/admin_style.css000066400000000000000000000052041227340735500223460ustar00rootroot00000000000000body { margin: 0; padding: 0; font: 85% arial, hevetica, sans-serif; text-align: center; color: #000066; background-color: #FFFFFF; } a:link { color: #000066; } a:visited { color: #0000CC; } a:hover, a:active { color: #CCCCFF; background-color: #000066; } a.button { color: #000066; text-decoration: none; } a.button:visited { color: #000066; } a.button:hover { color: #000066; background-color: transparent; } h2 { color: #000066; font: 140% georgia, times, "times new roman", serif; font-weight: bold; margin: 0 0 10px 0; } h3 { color: #000066; font: 106% georgia, times, "times new roman", serif; font-weight: bold; margin-top: 0; } #container { margin: 1em auto; width: 720px; text-align: left; background-color: #FFFFFF; border: 1px none #0000CC; } #header { color: #CCCCFF; background-color: #000088; height: 45px; width: 710px; border-bottom: 1px solid #0000CC; position: relative; border: 1px none #0000CC; border-bottom: 1px solid #0000CC; padding: 5px; text-align: right; font-size: 300%; } #mainnav ul { list-style-type: none; } #mainnav li { display: inline; } #menu { float: right; width: 165px; border-left: 1px solid #0000CC; padding-left: 15px; padding-right: 15px; margin-bottom: 30px; } #contents { padding-right: 15px; margin: 0 200px 40px 20px; } #contents p { line-height: 165%; } .imagefloat { float: right; } #footer { clear: both; color: #CCCCFF; background-color: #0000CC; text-align: right; font-size: 90%; } #footer img { vertical-align: middle; } #skipmenu { position: absolute; left: 0; top: 5px; width: 645px; text-align: right; } #skipmenu a { color: #666; text-decoration: none; } #skipmenu a:hover { color: #fff; background-color: #666; text-decoration: none; } #container { border: 1px solid #0000CC; } #mainnav { background-color: #0000CC; color: #CCCCFF; padding: 2px 0; margin-bottom: 22px; } #mainnav ul { margin: 0 0 0 20px; padding: 0; list-style-type: none; border-left: 1px solid #CCCCFF; } #mainnav li { display: inline; padding: 0 10px; border-right: 1px solid #CCCCFF; } #mainnav li a { text-decoration: none; color: #CCCCFF; } #mainnav li a:hover { text-decoration: none; color: #0000CC; background-color: #CCCCFF; } #menu ul { margin-left: 0; padding-left: 0; list-style-type: none; line-height: 165%; } .imagefloat { padding: 2px; border: 1px solid #0000CC; margin: 0 0 10px 10px; } div.blogentry { padding-bottom: 30px; } .blogentry ul { list-style-type: square; margin: 10px 0px 15px -10px; } .blogentry li { line-height: 150%; } #footer { background-color: #0000CC; padding: 5px; font-size: 90%; } lua-orbit-2.2.1+dfsg/samples/toycms/blog.db000066400000000000000000004160001227340735500205560ustar00rootroot00000000000000SQLite format 3@ $L_~ytoje`[VQL]7\6[4V2T1R0P/M.K,I+G*E)B(@&>%<$;"7!41/-+)'%!    tO~yt'~%|${"z!y xwvutrqponmlk j i h g fdb,a ,,P##gtabletoycms_posttoycms_postCREATE TABLE toycms_post ("id" INTEGER PRIMARY KEY NOT NULL, "title" VARCHAR(255) DEFAULT "", "body" TEXT DEFAULT "", "abstract" TEXT DEFAULT "", "image" VARCHAR(255) DEFAULT "", "external_url" VARCHAR(255) DEFAULT "", "comment_status" VARCHAR(30) DEFAULT "closed", "n_comments" INTEGER DEFAULT 0, "section_id" INTEGER DEFAULT NULL, "user_id" INTEGER DEFAULT NULL, "in_home" BOOLEAN DEFAULT "f", "published" BOOLEAN DEFAULT "f", "published_at" DATETIME DEFAULT NULL)~))7tabletoycms_commenttoycms_commentCREATE TABLE toycms_comment ("id" INTEGER PRIMARY KEY NOT NULL, "post_id" INTEGER DEFAULT NULL, "author" VARCHAR(255) DEFAULT "", "email" VARCHAR(255) DEFAULT "", "url" VARCHAR(255) DEFAULT "", "body" TEXT DEFAULT "", "approved" BOOLEAN DEFAULT "f", "created_at" DATETIME DEFAULT NULL)  Blogrollblogroll Pagespages! Blog Postsblog-main N%NT##otabletoycms_usertoycms_userCREATE TABLE toycms_user ("id" INTEGER PRIMARY KEY NOT NULL, "login" VARCHAR(255) DEFAULT "", "password" VARCHAR(30) DEFAULT "", "name" VARCHAR(255) DEFAULT "")X))ktabletoycms_sectiontoycms_sectionCREATE TABLE toycms_section ("id" INTEGER PRIMARY KEY NOT NULL, "title" VARCHAR(255) DEFAULT "", "description" TEXT DEFAULT "", "tag" VARCHAR(255) DEFAULT "") 33/mascarenha /adminadminFabio Mascarenhasoin the Kepler Project list or the Kepler forums on LuaForge. You can also help developing and debugging the existing modules, as much as helping document the platform and its modules. Please go to the [[Developers]] section for more information for that. Another way to help would by buying something from Amazon through the PiL links on LuaForge and the Kepler sites. Doing that you'll be helping gather resources for the Kepler team. For every product (not just PiL) bought after entering Amazon through the links we get from 2% to 5% of the product price as Amazon credits. Those credits are used to buy books for the team, so we can stay sharp and deliver the goods. :o) For those interested in helping us this way, just remember that Amazon only considers products added to the cart after you enter Amazon through the Kepler links. Anything in the cart that was added during a different visit to the store will not count for us (though it may count for another Amazon partner). closedt2007-07-06 16:28:00! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. unmoderatedt2004-10-18 12:15:00on of creating a CGILua launcher for the target Web server. ### How can I create a new CGILua launcher? A CGILua launcher implements SAPI, the Server API. SAPI consists in a set of functions that once implemented for a specific Web server architecture allows the execution of CGILua and its Web applications on it. ### How ready to use is Kepler? Kepler development is an ongoing process, and you can check the latest release at the Download page. Instructions for installation on Unix and Windows can be found at the Documentation page. You can also check the [[Status]] page for the incoming releases. ### Who is already using Kepler? Kepler is already being used by PUC-Rio and Hands on professional applications. ### Is there a mailing list for Kepler? Yes! Kepler questions can be posted on the Kepler Project [[Mailing List]]. ### How can I help? There are a lot of ways to help the project and the team. One way is to use Kepler and provide some feedback. If you want to follow more closely, you can j ervers. ### What are CGILua launchers? A CGILua launcher is the mechanism that allows a Web server to execute and communicate with CGILua and its Web applications. ### Which CGILua launchers are available? Kepler currently offers the following set of CGILua launchers: - CGI - FastCGI - mod_lua (for Apache) - ISAPI (for Microsoft IIS) - [[Xavante]] (a Lua Web server that supports CGILua natively) You can choose your launcher based on its size, ease of use, portability or performance. You can start using a simpler launcher and then migrate to a more advanced one without any changes to your application. With this flexibility you can for example start your development locally on your Windows system running CGI and then move to a Linux server running mod_lua or even to a mobile device running Xavante. ### What if my Web server is not supported? If your target Web server does not offer any of the existent connection methods or if you would prefer to use a different connection method, you have the opti ler is not in the public domain and the Kepler Project keeps its copyright. (See also: [[License]].) ### What is CGILua? CGILua is the main component of the Kepler Core. It is a tool for creating dynamic Web pages and manipulating input data from Web forms. Among other functions, CGILua is the component responsible for the user interface programming side of your Web application, while the remaining ones handle the logic and data of your Web application. One of the big advantages of CGILua is its abstraction of the underlying Web server. You can develop a CGILua application for one Web server and run it on any other Web server that supports CGILua. See [[CGILua]] for more details. ### Do I have to use Kepler to use CGILua? No, although it is probably a lot easier to get Kepler and simply start using CGILua than to get CGILua's source and build a launcher for it from scratch. You may also benefit from the fact that Kepler includes lot of ready to use CGILua launchers so you have more choices of Web sse. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. unmoderatedt2005-05-11 14:27:00 friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. unmoderatedt2004-11-01 15:54:00old. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. unmoderatedt2004-11-11 00:32:00 J I 3FAQ## General FAQ ### What is Kepler? Kepler is a a set of components for Lua that make up a powerful Web development platform. It is also the name of the project that is developing the Kepler platform. ### Why "Kepler"? Johannes Kepler was the astronomer that first explained that the tides are caused by the Moon. "Lua" means Moon in Portuguese, so the name "Kepler" tries to hint that some new tides may soon be caused by Lua... :o) ### What is Lua? Lua is a programming language that offers a very impressive set of features while keeping everything fast, small and portable. The Kepler Platform uses these features to offer a faster, smaller and more portable way to develop Web applications. See [[Lua]] for more information. ### What is a Web application? Web applications (also^t 3About## What is Kepler? **The Kepler project aims to collaboratively create an extremelF 33Slashdothttp://slashdot.orgclosedt2007-07-06 17:07:00 4d4-]9 3Order Now And You Also Get A Attack NoseHey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. moderatedt2004-09-28 18:29:00L =3Wikipediahttp://www.wikipedia.orgclosedt2007-07-06 17:08:00L# 93Google Newshttp://news.google.comclosedt2007-07-06 17:07:00e. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. unmoderatedt2004-11-22 22:00:00 `gm#3The Care And Feeding Of Your Sleeping Bicycle Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Mutley, you snickering, flZI#3Now Anybody Can Make President 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fie my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. unmoderatedt2004-12-10 21:10:00 b U'#3'Star Wars' As Written By A Princess Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. unmoderatedt2004-10-14 18:02:00 the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! unmoderatedt2004-12-13 18:03:00 < Ke#3What I Learned From An Elephant I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats  call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. One for all and all for one, Muskehounds are always ready. One for all and all for one, he ? iM#3Today, The World - Tomorrow, The Mixed-Up Dice I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your eo#3The Funniest Joke About A Grandmother's Tree Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Glping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. unmoderatedt2005-01-04 19:07:00dy. One for all and all for one, hey and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. unmoderatedt2005-02-03 16:07:00 p ;]#3Dr. Jekyll And Mr. Bear One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to bdS-#3Christmas Shopping For A Racing Ark Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. I never spend much time in school but I taught ladies plenty. It's true I hiro the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. unmoderatedt2005-06-22 00:42:00st the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! unmoderatedt2005-03-31 23:07:00 +GG#3Once Upon A Guardian Dinosaur Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. Ulysses, Ulysses - Soaring through all ;Am#3The Mystery Of Lego Pirate Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. unmoderatedt2004-12-14 16:05:00 bb-m%#3Thomas Edison Invents The Guardian Rollercoaster There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. unmoderatedt2005-01-04 18:27:00<y7#3Today, The World - Tomorrow, The Complicated Moonlight Barnaby The Bear's my name, never sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. unmoderatedt2005-07-12 21:07:00s just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. unmoderatedt2005-05-16 14:10:0011 14:27:00ies of Gold. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! unmoderatedt2005-05-17 11:29:00 ==/W?#3'Star Wars' As Written By A Scary Bat Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKa9 #3Anatomy Of A Funny Day Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. unmoderatedt2005-02-06 00:00:00ll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. unmoderatedt2005-05-18 14:58:00 DD1OK#3On The Trail Of The Electric Desk There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. unmoderatedt2005-05-22 17:27:00  M+#3My Coach Is A New, Improved Bear Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Jun search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! unmoderatedt2005-05-23 08:49:00 &;I#3My Son, The Lost Banana Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loo Xqw#3The Olympic Competition Won By An Automatic Monkey Children of the sun, see your time ha# for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. unmoderatedt2005-05-30 16:19:00 UU(m#3The Olympic Competition Won By An Purple Bicycle I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. unmoderatedt2005-05-16 15:42:00Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. unmoderatedt2005-06-01 15:08:00 ffo~aS#3Marco Polo Discovers The Complicated Spoon Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cit$5#3The Mystery Of Horse 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'&2zzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil for -S?#3Now Anybody Can Make Miniature Nose Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. unmoderatedt2005-05-22 00:46:00q9a#3My Daughter, The Spoon Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been (ces bringing peace and justice to all. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. unmoderatedt2005-06-02 09:56:00 all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. unmoderatedt2005-06-06 00:26:00 55CSk#3On The Trail Of The Automatic Giant Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. One for all and all for one, Muskehounds are always ready. One,rSI#3Dental Surgery On A Desert Elephant There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Ulysses, Ulysses - Soaring through all the galaxies. I*6zzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forpalace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. unmoderatedt2005-06-27 14:33:00 mm8@ Km#3What I Learned From An Football This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. .9!M]#3Now Anybody Can Make Attack Wolf Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fi0 t from some important points: - you will be able to easily upgrade your development platform as Kepler continues to evolve. - you will be using the same set of components as other Kepler Platform developers, making it easier to exchange ideas and experience. - you can be assured of the portability of your Web application for other environments, as long as those environments also run the Kepler Platform. ### Do I need to use the Kepler Platform to use the Kepler Project components? Not at all! The components developed by the Kepler Project can be used in any Lua based system. You can compile them from the source files or use the binary versions, both available free of charge on LuaForge. ### What about the licensing and pricing models? Kepler and Lua are free software: they can be used for both academic and commercial purposes at absolutely no cost. There are no royalties or GNU-like "copyleft" restrictions. Kepler and Lua qualifies as Open Source software. Their licenses are compatible with GPL. Kepder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. unmoderatedt2005-08-26 16:09:00evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. unmoderatedt2005-10-07 16:44:00 "G)#3Avast, Me Invisible Twin Fish Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for3 XXx#[#3Around The World With A Blustery Banana Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. unmoderatedt2005-06-08 12:28:00}$Gk#3Mr. McMullet, The Flying Tree Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in tBarnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! unmoderatedt2006-04-02 15:30:00 &&W%k{#3Visit Fun World And See The Rare Recycled Clown Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! unmoderatedt2005-06-23 21:10:00e my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. unmoderatedt2006-04-03 15:07:00 X&i#3Wyoming Jones And The Secret Twin Canadian Bat Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my 6 there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. unmoderatedt2006-04-04 23:43:00   l'CM#3Wyoming Jones And The Clown Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the"q(SG#3Marco Polo Discovers The Accountant Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thun9ay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. unmoderatedt2006-04-06 21:52:00e. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. unmoderatedt2006-04-07 18:28:00   j)?M#3Playing Poker With A Tree There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting : how it could be. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. unmoderatedt2006-04-09 11:06:00 NN'*EA#3Barney And The Rollercoaster Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. =l for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. unmoderatedt2006-04-17 00:34:00 +gy#3Today, The World - Tomorrow, The Purple Money One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. I never spend much time in school but I taught ladies plenty. It's true I hir?e. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. unmoderatedt2006-04-18 18:15:00 XX,=5#3I'm My Own Desert Friend Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should beA providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. unmoderatedt2006-04-25 15:12:00 _L-ek#3I Have To Write About My Blustery Funny Nose Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hC.E#3Once Upon A Complicated Duck Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my namD providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. unmoderatedt2006-04-25 15:12:00 UU(- 34Larry

    Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.

    t2009-10-26 16:59:39 //MI#3On The Trail Of The Lost Chicken Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, thinkFr, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. unmoderatedt2006-05-10 00:37:00 {{z0O]#3Way Out West With The Green Giant Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! One for all and alHnd all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. unmoderatedt2006-06-06 14:28:00 P11'#3No Man Is A Monkey Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my namJ, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. unmoderatedt2006-06-11 10:33:00 22C2Qm#3Where To Meet An Impossible Friend Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C.,Luite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. unmoderatedt2006-07-18 15:41:006-11 10:33:00 from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. unmoderatedt2006-05-03 21:00:00courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. unmoderatedt2006-05-09 00:44:00oppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! unmoderatedt2004-10-04 22:58:00 x3Ag#3Barney And The Hungry Desk Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escapedXS4Y#3Way Out West With The Furry Super Wolf Mutley, you snickering, floppy eared hound. When Y ,,6mS#3I Rode Friendly Grandmother's Mixed-Up Chocolate One for all and all for one, Muskehounds are always ready. One for all aS:5Ci#3The Mystery Of Lego Chicken This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thundeQ 7a#3Christmas Shopping For A New, Improved Ark Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. unmoderatedt2006-06-09 11:28:00` known as Web apps) are programs that are used through a Web browser. Every time you search for something with Google, read mail with Hotmail or browse Amazon you are using a Web application. Some other examples would be discussion forums, a blog or a weather site. ### What is a Web development platform? Web applications can be developed in different ways, from a hands-on approach to a very structured one. A Web development platform offers the developer a number of features that make the development of Web applications a lot easier. Instead of developing the application from scratch, the developer can benefit from the building blocks of the Web platform. ### Why build/use another Web development platform? There are a number of great Web development platforms out there but none balances power, size and flexibility quite like Kepler does. ### Is Kepler better than PHP/Java/.Net/...? That depends on what is your goal. Those platforms are surely good solutions for Web Development but sometimes they turn n8SA#3The Funniest Joke About A Scary Ark Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael KnightUV9='#3Where To Meet An Chicken This is my boss, Jonathan Hart, a self-made millionaire, he's qW8 out to be too big, too rigid or just too unportable for the job. That's precisely where Kepler shines. ### What does Kepler offer for the developer? Kepler offers a Core plus a small but powerful combination of components. You have components for SQL Database access, XML parsing, Logging, ZIP manipulation and some others. ### What is the Kepler Core? The Kepler Core is the minimum set of components of Kepler: - [[CGILua]] for page generation - [[LuaSocket]] for TCP/UDP sockets ### What is the Kepler Platform? The Kepler Platform includes the Kepler Core plus a defined set of components: - [[LuaExpat]] for XML parsing - [[LuaFileSystem]] - [[LuaLogging]] - [[LuaSQL]] for database access - [[LuaZIP]] for ZIP manipulation ### Why separate the Kepler Core from the Kepler Platform? If you don't need all the Kepler Platform components or prefer to add your own components, you can simply get only the Kepler Core as a starting point. But if you choose to develop for the Kepler Platform you can benefi ,  36John Doe One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. t2007-07-06 18:26:41 --P  E-35Curlyhttp://www.keplerproject.org There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. t2007-07-06 18:26:41 --P  E-35Curlyhttp://www.keplerproject.org There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. t2007-07-06 18:26:41 GGo  Ek35Larryhttp://www.keplerproject.org Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker thane<  =35Larry Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! t2007-07-06 18:26:41 the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. t2007-07-06 18:26:41     _34Curly Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. t2007-07-06 18:26:41]  35Curly Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. t2007-07-06 18:26:41 yy  _33Larry Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. t2007-07-06 18:26:41t  '33Jane Doe This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! t2007-07-06 18:26:41 ~  ;33John Doe Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. t2007-07-06 18:26:41   q  !33Jane Doe Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. t2007-07-06 18:26:41 YY$  33Larry Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. t2007-07-06 18:26:41 dd  {3)Moe 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. t2007-07-06 18:26:41 z  33(Jane Doe 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. t2007-07-06 18:26:41 5  )3(John Doe There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. t2007-07-06 18:26:41( 3E;3(Moemascarenhas@acm.orghttp://www.keplerproject.org Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. t2007-07-06 18:26:41 FF7 3EY3'Moemascarenhas@acm.orghttp://www.keplerproject.org Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! t2007-07-06 18:26:41 ??> 3Ec3"Curlymascarenhas@acm.orghttp://www.keplerproject.org Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. t2007-07-06 18:26:41 ee  o3!Moe Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. t2007-07-06 18:26:41  E 3"Jane Doehttp://www.keplerproject.org Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. t2007-07-06 18:26:41 # 3E-3Curlymascarenhas@acm.orghttp://www.keplerproject.org This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. t2007-07-06 18:26:41 a  3Jane Doe Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in s{  ;3Curly Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. t2007-07-06 18:26:41   _3Moe Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. t2007-07-06 18:26:41to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. t2007-07-06 18:26:41 zz  K3Larry Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. t2007-07-06 18:26:41 y  E3Larryhttp://www.keplerproject.org Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood. Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat. t2007-07-06 18:26:41 XX$  3 John Doe 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. t2007-07-06 18:26:41~  ;3Jane Doe Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. t2007-07-06 18:26:41 `  3 Curly Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! t2007-07-06 18:26:41    E!3 Jane Doehttp://www.keplerproject.org Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. t2007-07-06 18:26:41 p  K3 John Doe I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. t2007-07-06 18:26:41   Y3 Jane Doe Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! t2007-07-06 18:26:41 !  s3 Moe Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. t2007-07-06 18:26:41  "  U3 Jane Doe Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on. t2007-07-06 18:26:41 ?}$  C3Moe This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H}>#  A3Larry Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine. t2007-07-06 18:26:41., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER! Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. t2007-07-06 18:26:41 e%  3Jane Doe Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! t2007-07-06 18:26:41 YF'  E3Jane Doehttp://www.keplerproject.org Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. t2007-07-06 18:26:41$&  EY3Moehttp://www.keplerproject.org Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! t2007-07-06 18:26:41 [$#, 34Moe

    Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.

    t2009-10-26 16:54:14f* /7Q36Fabio Mascarenhasmascarenhas@gmail.com

    Blatz blum plaz.

    t2007-07-06 19:26:354+ 93

    Foo bar blaz.

    t2007-07-06 19:35:553"( 36

    80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.

    t2007-07-06 18:26:41c5NcOKe used through a Web browser. Every time you search for something with Google, read mail with Hotmail or browse Amazon you are using a Web application. Some other examples would be discussion forums, a blog or a weather site. ### What is a Web development platform? Web applications can be developed in different ways, from a hands-on approach to a very structured one. A Web development platform offers the developer a number of features that make the development of Web applications a lot easier. Instead of developing the application from scratch, the developer can benefit from the building blocks of the Web platform. ### Why build/use another Web development platform? There are a number of great Web development platforms out there but none balances power, size and flexibility quite like Kepler does. ### Is Kepler better than PHP/Java/.Net/...? That depends on what is your goal. Those platforms are surely good solutions for Web Development but sometimes they turny portable Web development platform based on the Lua programming language, offering both flexibility and conceptual simplicity.** Kepler is an open source platform for developing Web applications in [[Lua]]. Lua is a programming language that offers a very impressive set of features while keeping everything fast, small and portable. Kepler is implemented as a set of Lua components and offers the same advantages as Lua: it is simple, extremely portable, light, extensible and offers a very flexible licence. It allows the use of XHTML, SQL, XML, Zip and other standards. There are a number of great Web development platforms out there but none balances power, size and flexibility quite like Kepler does. The Lua community is constantly contributing with more modules that can be used with Kepler, most of those modules are catalogued on LuaForge and new ones keep coming. closedt2007-07-06 16:30:00t only the Kepler Core as a starting point. But if you choose to develop for the Kepler Platform you can benefit from some important points: - you will be able to easily upgrade your development platform as Kepler continues to evolve. - you will be using the same set of components as other Kepler Platform developers, making it easier to exchange ideas and experience. - you can be assured of the portability of your Web application for other environments, as long as those environments also run the Kepler Platform. ### Do I need to use the Kepler Platform to use the Kepler Project components? Not at all! The components developed by the Kepler Project can be used in any Lua based system. You can compile them from the source files or use the binary versions, both available free of charge on LuaForge. ### What about the licensing and pricing models? Kepler and Lua are free software: they can be used for both academic and commercial purposes at absolutely no cost. There are no royalties or GNU-like "copyleft" restrictions. Kepler and Lua qualifies as Open Source software. Their licenses are compatible with GPL. Kepler is not in the public domain and the Kepler Project keeps its copyright. (See also: [[License]].) ### What is CGILua? CGILua is the main component of the Kepler Core. It is a tool for creating dynamic Web pages and manipulating input data from Web forms. Among other functions, CGILua is the component responsible for the user interface programming side of your Web application, while the remaining ones handle the logic and data of your Web application. One of the big advantages of CGILua is its abstraction of the underlying Web server. You can develop a CGILua application for one Web server and run it on any other Web server that supports CGILua. See [[CGILua]] for more details. ### Do I have to use Kepler to use CGILua? No, although it is probably a lot easier to get Kepler and simply start using CGILua than to get CGILua's source and build a launcher for it from scratch. You may also benefit from the fact that Kepler includes lot of ready to use CGILua launchers so you have more choices of Web servers. ### What are CGILua launchers? A CGILua launcher is the mechanism that allows a Web server to execute and communicate with CGILua and its Web applications. ### Which CGILua launchers are available? Kepler currently offers the following set of CGILua launchers: - CGI - FastCGI - mod_lua (for Apache) - ISAPI (for Microsoft IIS) - [[Xavante]] (a Lua Web server that supports CGILua natively) You can choose your launcher based on its size, ease of use, portability or performance. You can start using a simpler launcher and then migrate to a more advanced one without any changes to your application. With this flexibility you can for example start your development locally on your Windows system running CGI and then move to a Linux server running mod_lua or even to a mobile device running Xavante. ### What if my Web server is not supported? If your target Web server does not offer any of the existent connection methods or if you would prefer to use a different connection method, you have the optithe time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! unmoderatedt2005-02-21 17:31:00ght against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. unmoderatedt2004-10-08 14:41:00lua-orbit-2.2.1+dfsg/samples/toycms/blog.dump.sqlite3000066400000000000000000003357011227340735500225310ustar00rootroot00000000000000BEGIN TRANSACTION; CREATE TABLE toycms_post ("id" INTEGER PRIMARY KEY NOT NULL, "title" VARCHAR(255) DEFAULT "", "body" TEXT DEFAULT "", "abstract" TEXT DEFAULT "", "image" VARCHAR(255) DEFAULT "", "external_url" VARCHAR(255) DEFAULT "", "comment_status" VARCHAR(30) DEFAULT "closed", "n_comments" INTEGER DEFAULT 0, "section_id" INTEGER DEFAULT NULL, "user_id" INTEGER DEFAULT NULL, "in_home" BOOLEAN DEFAULT "f", "published" BOOLEAN DEFAULT "f", "published_at" DATETIME DEFAULT NULL); INSERT INTO "toycms_post" VALUES(1,'FAQ','## General FAQ ### What is Kepler? Kepler is a a set of components for Lua that make up a powerful Web development platform. It is also the name of the project that is developing the Kepler platform. ### Why "Kepler"? Johannes Kepler was the astronomer that first explained that the tides are caused by the Moon. "Lua" means Moon in Portuguese, so the name "Kepler" tries to hint that some new tides may soon be caused by Lua... :o) ### What is Lua? Lua is a programming language that offers a very impressive set of features while keeping everything fast, small and portable. The Kepler Platform uses these features to offer a faster, smaller and more portable way to develop Web applications. See [[Lua]] for more information. ### What is a Web application? Web applications (also known as Web apps) are programs that are used through a Web browser. Every time you search for something with Google, read mail with Hotmail or browse Amazon you are using a Web application. Some other examples would be discussion forums, a blog or a weather site. ### What is a Web development platform? Web applications can be developed in different ways, from a hands-on approach to a very structured one. A Web development platform offers the developer a number of features that make the development of Web applications a lot easier. Instead of developing the application from scratch, the developer can benefit from the building blocks of the Web platform. ### Why build/use another Web development platform? There are a number of great Web development platforms out there but none balances power, size and flexibility quite like Kepler does. ### Is Kepler better than PHP/Java/.Net/...? That depends on what is your goal. Those platforms are surely good solutions for Web Development but sometimes they turn out to be too big, too rigid or just too unportable for the job. That''s precisely where Kepler shines. ### What does Kepler offer for the developer? Kepler offers a Core plus a small but powerful combination of components. You have components for SQL Database access, XML parsing, Logging, ZIP manipulation and some others. ### What is the Kepler Core? The Kepler Core is the minimum set of components of Kepler: - [[CGILua]] for page generation - [[LuaSocket]] for TCP/UDP sockets ### What is the Kepler Platform? The Kepler Platform includes the Kepler Core plus a defined set of components: - [[LuaExpat]] for XML parsing - [[LuaFileSystem]] - [[LuaLogging]] - [[LuaSQL]] for database access - [[LuaZIP]] for ZIP manipulation ### Why separate the Kepler Core from the Kepler Platform? If you don''t need all the Kepler Platform components or prefer to add your own components, you can simply get only the Kepler Core as a starting point. But if you choose to develop for the Kepler Platform you can benefit from some important points: - you will be able to easily upgrade your development platform as Kepler continues to evolve. - you will be using the same set of components as other Kepler Platform developers, making it easier to exchange ideas and experience. - you can be assured of the portability of your Web application for other environments, as long as those environments also run the Kepler Platform. ### Do I need to use the Kepler Platform to use the Kepler Project components? Not at all! The components developed by the Kepler Project can be used in any Lua based system. You can compile them from the source files or use the binary versions, both available free of charge on LuaForge. ### What about the licensing and pricing models? Kepler and Lua are free software: they can be used for both academic and commercial purposes at absolutely no cost. There are no royalties or GNU-like "copyleft" restrictions. Kepler and Lua qualifies as Open Source software. Their licenses are compatible with GPL. Kepler is not in the public domain and the Kepler Project keeps its copyright. (See also: [[License]].) ### What is CGILua? CGILua is the main component of the Kepler Core. It is a tool for creating dynamic Web pages and manipulating input data from Web forms. Among other functions, CGILua is the component responsible for the user interface programming side of your Web application, while the remaining ones handle the logic and data of your Web application. One of the big advantages of CGILua is its abstraction of the underlying Web server. You can develop a CGILua application for one Web server and run it on any other Web server that supports CGILua. See [[CGILua]] for more details. ### Do I have to use Kepler to use CGILua? No, although it is probably a lot easier to get Kepler and simply start using CGILua than to get CGILua''s source and build a launcher for it from scratch. You may also benefit from the fact that Kepler includes lot of ready to use CGILua launchers so you have more choices of Web servers. ### What are CGILua launchers? A CGILua launcher is the mechanism that allows a Web server to execute and communicate with CGILua and its Web applications. ### Which CGILua launchers are available? Kepler currently offers the following set of CGILua launchers: - CGI - FastCGI - mod_lua (for Apache) - ISAPI (for Microsoft IIS) - [[Xavante]] (a Lua Web server that supports CGILua natively) You can choose your launcher based on its size, ease of use, portability or performance. You can start using a simpler launcher and then migrate to a more advanced one without any changes to your application. With this flexibility you can for example start your development locally on your Windows system running CGI and then move to a Linux server running mod_lua or even to a mobile device running Xavante. ### What if my Web server is not supported? If your target Web server does not offer any of the existent connection methods or if you would prefer to use a different connection method, you have the option of creating a CGILua launcher for the target Web server. ### How can I create a new CGILua launcher? A CGILua launcher implements SAPI, the Server API. SAPI consists in a set of functions that once implemented for a specific Web server architecture allows the execution of CGILua and its Web applications on it. ### How ready to use is Kepler? Kepler development is an ongoing process, and you can check the latest release at the Download page. Instructions for installation on Unix and Windows can be found at the Documentation page. You can also check the [[Status]] page for the incoming releases. ### Who is already using Kepler? Kepler is already being used by PUC-Rio and Hands on professional applications. ### Is there a mailing list for Kepler? Yes! Kepler questions can be posted on the Kepler Project [[Mailing List]]. ### How can I help? There are a lot of ways to help the project and the team. One way is to use Kepler and provide some feedback. If you want to follow more closely, you can join the Kepler Project list or the Kepler forums on LuaForge. You can also help developing and debugging the existing modules, as much as helping document the platform and its modules. Please go to the [[Developers]] section for more information for that. Another way to help would by buying something from Amazon through the PiL links on LuaForge and the Kepler sites. Doing that you''ll be helping gather resources for the Kepler team. For every product (not just PiL) bought after entering Amazon through the links we get from 2% to 5% of the product price as Amazon credits. Those credits are used to buy books for the team, so we can stay sharp and deliver the goods. :o) For those interested in helping us this way, just remember that Amazon only considers products added to the cart after you enter Amazon through the Kepler links. Anything in the cart that was added during a different visit to the store will not count for us (though it may count for another Amazon partner). ','','','','closed',1,2,1,NULL,'t','2007-07-06 16:28:00'); INSERT INTO "toycms_post" VALUES(2,'About','## What is Kepler? **The Kepler project aims to collaboratively create an extremely portable Web development platform based on the Lua programming language, offering both flexibility and conceptual simplicity.** Kepler is an open source platform for developing Web applications in [[Lua]]. Lua is a programming language that offers a very impressive set of features while keeping everything fast, small and portable. Kepler is implemented as a set of Lua components and offers the same advantages as Lua: it is simple, extremely portable, light, extensible and offers a very flexible licence. It allows the use of XHTML, SQL, XML, Zip and other standards. There are a number of great Web development platforms out there but none balances power, size and flexibility quite like Kepler does. The Lua community is constantly contributing with more modules that can be used with Kepler, most of those modules are catalogued on LuaForge and new ones keep coming. ','','','','closed',1,2,1,NULL,'t','2007-07-06 16:30:00'); INSERT INTO "toycms_post" VALUES(3,'Slashdot','','','','http://slashdot.org','closed',1,3,1,NULL,'t','2007-07-06 17:07:00'); INSERT INTO "toycms_post" VALUES(4,'Google News','','','','http://news.google.com','closed',1,3,1,NULL,'t','2007-07-06 17:07:00'); INSERT INTO "toycms_post" VALUES(5,'Wikipedia','','','','http://www.wikipedia.org','closed',1,3,1,NULL,'t','2007-07-06 17:08:00'); INSERT INTO "toycms_post" VALUES(6,'Order Now And You Also Get A Attack Nose','Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. ','','','','moderated',0,1,1,NULL,'t','2004-09-28 18:29:00'); INSERT INTO "toycms_post" VALUES(7,'The Care And Feeding Of Your Sleeping Bicycle',' Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2004-10-04 22:58:00'); INSERT INTO "toycms_post" VALUES(8,'Now Anybody Can Make President',' 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ',NULL,NULL,NULL,'unmoderated',2,1,1,NULL,'t','2004-10-08 14:41:00'); INSERT INTO "toycms_post" VALUES(9,'''Star Wars'' As Written By A Princess',' Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2004-10-14 18:02:00'); INSERT INTO "toycms_post" VALUES(10,'What I Learned From An Elephant',' I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ',NULL,NULL,NULL,'unmoderated',1,1,1,NULL,'t','2004-10-18 12:15:00'); INSERT INTO "toycms_post" VALUES(11,'Today, The World - Tomorrow, The Mixed-Up Dice',' I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. ',NULL,NULL,NULL,'unmoderated',2,1,1,NULL,'t','2004-11-01 15:54:00'); INSERT INTO "toycms_post" VALUES(12,'The Funniest Joke About A Grandmother''s Tree',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. ',NULL,NULL,NULL,'unmoderated',2,1,1,NULL,'t','2004-11-11 00:32:00'); INSERT INTO "toycms_post" VALUES(13,'Dr. Jekyll And Mr. Bear',' One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ',NULL,NULL,NULL,'unmoderated',2,1,1,NULL,'t','2004-11-22 22:00:00'); INSERT INTO "toycms_post" VALUES(14,'Christmas Shopping For A Racing Ark',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ',NULL,NULL,NULL,'unmoderated',3,1,1,NULL,'t','2004-12-10 21:10:00'); INSERT INTO "toycms_post" VALUES(15,'Once Upon A Guardian Dinosaur',' Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! ',NULL,NULL,NULL,'unmoderated',1,1,1,NULL,'t','2004-12-13 18:03:00'); INSERT INTO "toycms_post" VALUES(16,'The Mystery Of Lego Pirate',' Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. ',NULL,NULL,NULL,'unmoderated',1,1,1,NULL,'t','2004-12-14 16:05:00'); INSERT INTO "toycms_post" VALUES(17,'Thomas Edison Invents The Guardian Rollercoaster',' There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. ',NULL,NULL,NULL,'unmoderated',1,1,1,NULL,'t','2005-01-04 18:27:00'); INSERT INTO "toycms_post" VALUES(18,'Today, The World - Tomorrow, The Complicated Moonlight',' Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-01-04 19:07:00'); INSERT INTO "toycms_post" VALUES(19,'''Star Wars'' As Written By A Scary Bat',' Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-02-03 16:07:00'); INSERT INTO "toycms_post" VALUES(20,'Anatomy Of A Funny Day',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. ',NULL,NULL,NULL,'unmoderated',1,1,1,NULL,'t','2005-02-06 00:00:00'); INSERT INTO "toycms_post" VALUES(21,'On The Trail Of The Electric Desk',' There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-02-21 17:31:00'); INSERT INTO "toycms_post" VALUES(22,'My Coach Is A New, Improved Bear',' Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-03-31 23:07:00'); INSERT INTO "toycms_post" VALUES(23,'My Son, The Lost Banana',' Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-05-11 14:27:00'); INSERT INTO "toycms_post" VALUES(24,'The Olympic Competition Won By An Automatic Monkey',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-05-16 14:10:00'); INSERT INTO "toycms_post" VALUES(25,'The Olympic Competition Won By An Purple Bicycle',' I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-05-16 15:42:00'); INSERT INTO "toycms_post" VALUES(26,'Marco Polo Discovers The Complicated Spoon',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-05-17 11:29:00'); INSERT INTO "toycms_post" VALUES(27,'The Mystery Of Horse',' 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-05-18 14:58:00'); INSERT INTO "toycms_post" VALUES(28,'Now Anybody Can Make Miniature Nose',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-05-22 00:46:00'); INSERT INTO "toycms_post" VALUES(29,'My Daughter, The Spoon',' Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-05-22 17:27:00'); INSERT INTO "toycms_post" VALUES(30,'Dental Surgery On A Desert Elephant',' There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-05-23 08:49:00'); INSERT INTO "toycms_post" VALUES(31,'On The Trail Of The Automatic Giant',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-05-30 16:19:00'); INSERT INTO "toycms_post" VALUES(32,'What I Learned From An Football',' This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-06-01 15:08:00'); INSERT INTO "toycms_post" VALUES(33,'Now Anybody Can Make Attack Wolf',' Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. ',NULL,NULL,NULL,'unmoderated',1,1,1,NULL,'t','2005-06-02 09:56:00'); INSERT INTO "toycms_post" VALUES(34,'Avast, Me Invisible Twin Fish',' Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. ',NULL,NULL,NULL,'unmoderated',2,1,1,NULL,'t','2005-06-06 00:26:00'); INSERT INTO "toycms_post" VALUES(35,'Around The World With A Blustery Banana',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-06-08 12:28:00'); INSERT INTO "toycms_post" VALUES(36,'Mr. McMullet, The Flying Tree',' Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-06-22 00:42:00'); INSERT INTO "toycms_post" VALUES(37,'Visit Fun World And See The Rare Recycled Clown',' Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-06-23 21:10:00'); INSERT INTO "toycms_post" VALUES(38,'Wyoming Jones And The Secret Twin Canadian Bat',' Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2005-06-27 14:33:00'); INSERT INTO "toycms_post" VALUES(39,'Wyoming Jones And The Clown',' Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ',NULL,NULL,NULL,'unmoderated',1,1,1,NULL,'t','2005-07-12 21:07:00'); INSERT INTO "toycms_post" VALUES(40,'Marco Polo Discovers The Accountant',' Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. ',NULL,NULL,NULL,'unmoderated',3,1,1,NULL,'t','2005-08-26 16:09:00'); INSERT INTO "toycms_post" VALUES(41,'Playing Poker With A Tree',' There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ',NULL,NULL,NULL,'unmoderated',1,1,1,NULL,'t','2005-10-07 16:44:00'); INSERT INTO "toycms_post" VALUES(42,'Barney And The Rollercoaster',' Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2006-04-02 15:30:00'); INSERT INTO "toycms_post" VALUES(43,'Today, The World - Tomorrow, The Purple Money',' One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2006-04-03 15:07:00'); INSERT INTO "toycms_post" VALUES(44,'I''m My Own Desert Friend',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2006-04-04 23:43:00'); INSERT INTO "toycms_post" VALUES(45,'I Have To Write About My Blustery Funny Nose',' Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2006-04-06 21:52:00'); INSERT INTO "toycms_post" VALUES(46,'Once Upon A Complicated Duck',' Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2006-04-07 18:28:00'); INSERT INTO "toycms_post" VALUES(47,'On The Trail Of The Lost Chicken',' Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2006-04-09 11:06:00'); INSERT INTO "toycms_post" VALUES(48,'Way Out West With The Green Giant',' Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2006-04-17 00:34:00'); INSERT INTO "toycms_post" VALUES(49,'No Man Is A Monkey',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2006-04-18 18:15:00'); INSERT INTO "toycms_post" VALUES(50,'Where To Meet An Impossible Friend',' Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2006-04-25 15:12:00'); INSERT INTO "toycms_post" VALUES(51,'Barney And The Hungry Desk',' Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ',NULL,NULL,NULL,'unmoderated',5,1,1,NULL,'t','2006-05-03 21:00:00'); INSERT INTO "toycms_post" VALUES(52,'Way Out West With The Furry Super Wolf',' Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. ',NULL,NULL,NULL,'unmoderated',1,1,1,NULL,'t','2006-05-09 00:44:00'); INSERT INTO "toycms_post" VALUES(53,'The Mystery Of Lego Chicken',' This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. ',NULL,NULL,NULL,'unmoderated',5,1,1,NULL,'t','2006-05-10 00:37:00'); INSERT INTO "toycms_post" VALUES(54,'I Rode Friendly Grandmother''s Mixed-Up Chocolate',' One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. ',NULL,NULL,NULL,'unmoderated',4,1,1,NULL,'t','2006-06-06 14:28:00'); INSERT INTO "toycms_post" VALUES(55,'Christmas Shopping For A New, Improved Ark',' Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2006-06-09 11:28:00'); INSERT INTO "toycms_post" VALUES(56,'The Funniest Joke About A Scary Ark',' Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2006-06-11 10:33:00'); INSERT INTO "toycms_post" VALUES(57,'Where To Meet An Chicken',' This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. ',NULL,NULL,NULL,'unmoderated',0,1,1,NULL,'t','2006-07-18 15:41:00'); CREATE TABLE toycms_comment ("id" INTEGER PRIMARY KEY NOT NULL, "post_id" INTEGER DEFAULT NULL, "author" VARCHAR(255) DEFAULT "", "email" VARCHAR(255) DEFAULT "", "url" VARCHAR(255) DEFAULT "", "body" TEXT DEFAULT "", "approved" BOOLEAN DEFAULT "f", "created_at" DATETIME DEFAULT NULL); INSERT INTO "toycms_comment" VALUES(1,54,'John Doe','','',' One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it''s a pretty story. Sharing everything with fun, that''s the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you''ve got a problem chum, think how it could be. I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(3,53,'Curly','','http://www.keplerproject.org',' There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(4,53,'Larry','','',' Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(5,53,'Larry','','http://www.keplerproject.org',' Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(6,53,'Curly','','',' Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(7,52,'Curly','','',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(8,51,'Jane Doe','','',' This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(9,51,'Larry','','',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(10,51,'John Doe','','',' Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(11,51,'Jane Doe','','',' Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(12,51,'Larry','','',' Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn''t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(13,41,'Moe','','',' 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(14,40,'Jane Doe','','',' 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(15,40,'Moe','mascarenhas@acm.org','http://www.keplerproject.org',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(16,40,'John Doe','','',' There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(17,39,'Moe','mascarenhas@acm.org','http://www.keplerproject.org',' Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(18,34,'Curly','mascarenhas@acm.org','http://www.keplerproject.org',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(19,34,'Jane Doe','','http://www.keplerproject.org',' Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(20,33,'Moe','','',' Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(21,20,'Curly','mascarenhas@acm.org','http://www.keplerproject.org',' This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(22,17,'Moe','','',' Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(23,16,'Curly','','',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(24,15,'Jane Doe','','',' Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(25,14,'Larry','','',' Hey there where ya goin'', not exactly knowin'', who says you have to call just one place home. He''s goin'' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin'', ladies keep improvin'', every day is better than the last. New dreams and better scenes, and best of all I don''t pay property tax. Rollin'' down to Dallas, who''s providin'' my palace, off to New Orleans or who knows where. Places new and ladies, too, I''m B.J. McKay and this is my best friend Bear. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(26,14,'Larry','','http://www.keplerproject.org',' Just the good ol'' boys, never meanin'' no harm. Beats all you''ve ever saw, been in trouble with the law since the day they was born. Straight''nin'' the curve, flat''nin'' the hills. Someday the mountain might get ''em, but the law never will. Makin'' their way, the only way they know how, that''s just a little bit more than the law will allow. Just good ol'' boys, wouldn''t change if they could, fightin'' the system like a true modern day Robin Hood. Top Cat! The most effectual Top Cat! Who''s intellectual close friends get to call him T.C., providing it''s with dignity. Top Cat! The indisputable leader of the gang. He''s the boss, he''s a pip, he''s the championship. He''s the most tip top, Top Cat. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(27,14,'Jane Doe','','',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(28,13,'John Doe','','',' 80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(29,13,'Curly','','',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(30,12,'Jane Doe','','http://www.keplerproject.org',' Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(31,12,'Jane Doe','','',' Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(32,11,'John Doe','','',' I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(33,11,'Moe','','',' Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all. Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(34,10,'Jane Doe','','',' Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. There''s a voice that keeps on calling me. Down the road, that''s where I''ll always be. Every stop I make, I make a new friend. Can''t stay for long, just turn around and I''m gone again. Maybe tomorrow, I''ll want to settle down, Until tomorrow, I''ll just keep moving on. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(35,8,'Larry','','',' Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! I never spend much time in school but I taught ladies plenty. It''s true I hire my body out for pay, hey hey. I''ve gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it''s only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. ''Cause I''m the unknown stuntman that makes Eastwood look so fine. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(36,8,'Moe','','',' This is my boss, Jonathan Hart, a self-made millionaire, he''s quite a guy. This is Mrs H., she''s gorgeous, she''s one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain''t easy, ''cause when they met it was MURDER! Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you''d like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear''s my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear''s my name. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(37,5,'Jane Doe','','',' Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats! ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(38,5,'Moe','','http://www.keplerproject.org',' Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He''s got style, a groovy style, and a car that just won''t stop. When the going gets tough, he''s really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he''s fan-riffic! ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(39,4,'Jane Doe','','http://www.keplerproject.org',' Mutley, you snickering, floppy eared hound. When courage is needed, you''re never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now. ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(40,54,NULL,NULL,NULL,'

    80 days around the world, we''ll find a pot of gold just sitting where the rainbow''s ending. Time - we''ll fight against the time, and we''ll fly on the white wings of the wind. 80 days around the world, no we won''t say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.

    ','t','2007-07-06 18:26:41'); INSERT INTO "toycms_comment" VALUES(42,54,'Fabio Mascarenhas','mascarenhas@gmail.com',NULL,'

    Blatz blum plaz.

    ','t','2007-07-06 19:26:35'); INSERT INTO "toycms_comment" VALUES(43,6,NULL,NULL,NULL,'

    Foo bar blaz.

    ','t','2007-07-06 19:35:55'); CREATE TABLE toycms_section ("id" INTEGER PRIMARY KEY NOT NULL, "title" VARCHAR(255) DEFAULT "", "description" TEXT DEFAULT "", "tag" VARCHAR(255) DEFAULT ""); INSERT INTO "toycms_section" VALUES(1,'Blog Posts','','blog-main'); INSERT INTO "toycms_section" VALUES(2,'Pages','','pages'); INSERT INTO "toycms_section" VALUES(3,'Blogroll','','blogroll'); CREATE TABLE toycms_user ("id" INTEGER PRIMARY KEY NOT NULL, "login" VARCHAR(255) DEFAULT "", "password" VARCHAR(30) DEFAULT "", "name" VARCHAR(255) DEFAULT ""); INSERT INTO "toycms_user" VALUES(1,'mascarenhas@acm.org','password','Fabio Mascarenhas'); COMMIT; lua-orbit-2.2.1+dfsg/samples/toycms/cached.diff000066400000000000000000000110721227340735500213650ustar00rootroot00000000000000--- toycms.lua 2008-01-09 17:33:16.000000000 -0200 +++ /var/www/toycms/toycms.lua 2008-01-10 19:12:34.000000000 -0200 @@ -1,3 +1,5 @@ +#!/usr/bin/env launcher + require"orbit" require"markdown" require"cosmo" @@ -180,17 +182,113 @@ require"toycms_plugins" +local function readfile(filename) + local file = io.open(filename, "rb") + if file then + local contents = file:read("*a") + file:close() + return contents + else return nil end +end + +local function page_file(path_info) + path_info = string.sub(path_info, 2, #path_info) + path_info = string.gsub(path_info, "/", "-") + if path_info == "" then path_info = "index" end + return 'page-cache/' .. path_info .. '.html' +end + +local function parse_headers(s) + local headers = {} + for header in string.gmatch(s, "[^\r\n]+") do + local name, value = string.match(header, "^([^:]+):%s+(.+)$") + if headers[name] then + if type(headers[name]) == "table" then + table.insert(headers[name], value) + else + headers[name] = { headers[name], value } + end + else + headers[name] = value + end + end + return headers +end + +local function parse_response(contents) + local b, e = string.find(contents, "\r\n\r\n") + local headers = string.sub(contents, 1, b + 1) + local body = string.sub(contents, e + 1, #contents) + return parse_headers(headers), body +end + +local function get_page(path_info) + local filename = page_file(path_info) + local contents = readfile(filename) + if contents then +-- return parse_response(contents) + return contents + else + return nil + end +end + +local function writefile(filename, contents) + local file = io.open(filename, "wb") + if file then + file:write(contents) + file:close() + end +end + +local function joinheaders(headers) + local hs = {} + for k, v in pairs(headers) do + if type(v) == "table" then + for _, tv in ipairs(v) do + table.insert(hs, string.format("%s: %s", k, v)) + end + else + table.insert(hs, string.format("%s: %s", k, v)) + end + end + return table.concat(hs, "\r\n") +end + +local function write_page(headers, body, path_info) + local filename = page_file(path_info) +-- local contents = joinheaders(headers) .. "\r\n\r\n" .. body +-- writefile(filename, contents) + writefile(filename, body) +end + +local function cached(f) + return f +--[[ return function (app, ...) +-- local cached_headers, cached_page = get_page(app.path_info) + local cached_page = get_page(app.path_info) + if cached_page then +-- app.headers, app.response = cached_headers, cached_page + app.response = cached_page + else + f(app, ...) + write_page(app.headers, app.response, app.path_info) + end + end]] +end + toycms:add_controllers{ home_page = { "/", "/index", - get = function (app) + get = cached(function (app) local template = app:load_template("home.html") if template then app:render("index", { template = template, env = app:new_template_env() }) + else app.not_found.get(app) end - end + end) }, home_xml = { "/xml", get = function (app) @@ -204,7 +302,7 @@ end }, section = { "/section/(%d+)", - get = function (app, section_id) + get = cached(function (app, section_id) local section = app.models.section:find(tonumber(section_id)) if not section then return app.not_found.get(app) end local template = app:load_template("section_" .. @@ -216,7 +314,7 @@ else app.not_found.get(app) end - end + end) }, section_xml = { "/section/(%d+)/xml", get = function (app, section_id) @@ -236,7 +334,7 @@ end }, post = { "/post/(%d+)", - get = function (app, post_id) + get = cached(function (app, post_id) local post = app.models.post:find(tonumber(post_id)) if not post then return app.not_found.get(app) end local section = app.models.section:find(post.section_id) @@ -251,7 +349,7 @@ else app.not_found.get(app) end - end + end) }, post_xml = { "/post/(%d+)/xml", get = function (app, post_id) @@ -273,7 +371,7 @@ end }, archive = { "/archive/(%d+)/(%d+)", - get = function (app, year, month) + get = cached(function (app, year, month) local template = app:load_template("archive.html") if template then app.input.month = tonumber(month) @@ -287,7 +385,7 @@ else app.not_found.get(app) end - end + end) }, add_comment = { "/post/(%d+)/addcomment", post = function (app, post_id) lua-orbit-2.2.1+dfsg/samples/toycms/dump.lua000066400000000000000000000023621227340735500207760ustar00rootroot00000000000000local luasql = require "luasql.sqlite3" local orm = require "orbit.model" local args = { ... } local env = luasql() local conn = env:connect(args[1] .. ".db") local mapper = orm.new("toycms_", conn, "sqlite3") local tables = { "post", "comment", "user", "section" } print("local db = '" .. args[1] .. "'") print [[ local luasql = require "luasql.mysql" local orm = require "orbit.model" local env = luasql() local conn = env:connect(db, "root", "password") local mapper = orm.new("toycms_", conn, "mysql") ]] local function serialize_prim(v) local type = type(v) if type == "string" then return string.format("%q", v) else return tostring(v) end end local function serialize(t) local fields = {} for k, v in pairs(t) do table.insert(fields, " [" .. string.format("%q", k) .. "] = " .. serialize_prim(v)) end return "{\n" .. table.concat(fields, ",\n") .. "}" end for _, tn in ipairs(tables) do print("\n-- Table " .. tn .. "\n") local t = mapper:new(tn) print("local t = mapper:new('" .. tn .. "')") local recs = t:find_all() for i, rec in ipairs(recs) do print("\n-- Record " .. i .. "\n") print("local rec = " .. serialize(rec)) print("rec = t:new(rec)") print("rec:save(true)") end end lua-orbit-2.2.1+dfsg/samples/toycms/index.lua000077500000000000000000000001151227340735500211350ustar00rootroot00000000000000#!/usr/bin/env wsapi.cgi local toycms = require "toycms" return toycms.run lua-orbit-2.2.1+dfsg/samples/toycms/lablua.db000066400000000000000000001000001227340735500210610ustar00rootroot00000000000000SQLite format 3@ 5         {c9! ) 'Former Memberspeople-former" + )Current Memberspeople-current" # 1Coordinatorpeople-coordinator #Draftspubs-drafts(= #Dissertations and Thesespubs-theses #Paperspubs-papers' Related Linkslinks #Peoplemenu-people"% /Publicationsmenu-publications 'Projectsmenu-projects  Homehome ==w)))tabletoycms_commenttoycms_commentCREATE TABLE toycms_comment ("id" INTEGER PRIMARY KEY NOT NULL, "post_id" INTEGER DEFAULT NULL, "author" VARCHAR(255) DEFAULT "", "email" VARCHAR(255) DEFAULT "", "url" VARCHAR(255) DEFAULT "", "body" TEXT DEFAULT "", "created_at" DATETIME DEFAULT NULL, "approved" BOOLEAN DEFAULT "f")F##Stabletoycms_posttoycms_postCREATE TABLE toycms_post ("id" INTEGER PRIMARY KEY NOT NULL, "title" VARCHAR(255) DEFAULT "", "body" TEXT DEFAULT "", "abstract" TEXT DEFAULT "", "image" VARCHAR(255) DEFAULT "", "n_comments" INTEGER DEFAULT 0, "section_id" INTEGER DEFAULT NULL, "user_id" INTEGER DEFAULT NULL, "in_home" BOOLEAN DEFAULT FALSE, "published" BOOLEAN DEFAULT FALSE, "published_at" DATETIME DEFAULT NULL, "external_url" VARCHAR(255) DEFAULT "", "comment_status" VARCHAR(30) DEFAULT "closed") N%NT##otabletoycms_usertoycms_userCREATE TABLE toycms_user ("id" INTEGER PRIMARY KEY NOT NULL, "login" VARCHAR(255) DEFAULT "", "password" VARCHAR(30) DEFAULT "", "name" VARCHAR(255) DEFAULT "")X))ktabletoycms_sectiontoycms_sectionCREATE TABLE toycms_section ("id" INTEGER PRIMARY KEY NOT NULL, "title" VARCHAR(255) DEFAULT "", "description" TEXT DEFAULT "", "tag" VARCHAR(255) DEFAULT "") 33/mascarenha /adminadminFabio Mascarenhas produced one PhD thesis and two MSc dissertations.

    Lua is a scripting language not totally unlike Tcl, Perl, or Python. Like Tcl, Lua is an "embedded language", in the sense that embedding the interpreter into your program is a trivial task, and it is very easy to interface Lua with other languages like C, C++, or even Fortran. Like Python, Lua has a clear and intuitive syntax. Like all those three, Lua is an interpreted language with dynamic typing, and with several reflexive facilities.

    In these pages you can find information about current and past projects, publications and members. Please follow the links above to go to the other sections of the web site.

    Contact

    Lablua is situated at PUC-Rio's campus, near the Cardeal Leme building. Prof. Ierusalimschy's contact information is in his web page. You can also contact Lablua by phone: 55-21-3527-1497 Ext. 4523.

    t2007-07-04 16:07:00 ~ 1 3Home Page

    About

    Lablua is a research lab at PUC-Rio, affiliated with its Computer Science Department. It is dedicated to research about programming languages, with emphasis on research involving the Lua language. Lablua was founded on May 2004 by Prof. Roberto Ierusalimschy. Since then its members have<  31Lua.orgt2007-07-04 16:07:00http://www.lua.org %?  35Luaforget2007-07-03 16:13:00http://luaforge.net/  3ULuaCLR

    LuaCLR is a newer implementation of Lua on the CLR that targets Lua 5.1 and compiles from source (without using the Lua parser and lexer).

    t2007-06-04 16:20:00http://www.lua.inf.puc-rio.br/luaclrK3 3 libscript

    libscript

    libscript is a plugin-based library designed to add language-independent extensibility to applications.

    It allows to decouple an YY? 3 LuaDec

    LuaDec, Lua bytecode decompiler

    Overview

    LuaDec is a decompiler for the Lua language. It takes compiled Lua bytecodes and attempts to produce equivalent Lua source code on standard output. It targets Lua 5.0.2.

    The decompiler performs two passes. The first pass is considered a "preliminary pass". Only two actions are performed: addresses of backward jumps are gathered for while constructs, and variables referenced by CLOSE instructions are taken note of in order to identify the point where explicit do blocks should be opened.

    The actual decompilation takes place in the second, "main pass". In this pass, the instructions are symbolically interpreted. As functions are traversed recursively, the symbolic content of registers are kept track of, as well as a few additional data structures: two regi ster stacks, one for "variable registers" (registers currently allocated for variables) one for "temporary registers" (registers holding temporary values); and a list of boolean conditions.

    Instructions like ADD and MOVE combine the string representation of symbols and move them around in registers. Emission of actual statements is delayed until the temporaries stack is empty, so that constructs like a,b=b,a are processed correctly.

    The list of boolean conditions accumulate pairs of relational operators (or TESTs and jumps). The translation of a list into a boolean expression is done in three stages. In the first stage, jump addresses are checked to identify "then" and "else" addresses and to break the list into smaller lists in the case of nested if statements. In the second stage, the relations between the jumps is analyzed serially to devise a parenthization scheme. In the third scheme, taking into account the parenthization and an 'inversion' flag (used to tell "jump-if-true" from "jump-if-false" expressions), the expression is printed, recursively.

    Two forms of "backpatching" are used in the main processing pass: boolean conditions for while constructs are inserted in the marked addresses (as noted in the first pass), and do blocks are added as necessary, according to the liveness information of local variables.

    LuaDec is written by Hisham Muhammad, and is licensed under the same terms as Lua. Windows binaries contributed by Fabio Mascarenhas.

    Status

    LuaDec, in its current form, is not a complete decompiler. It does succeed in decompiling most of the Lua constructs, so it could be used as a tool to aid in retrieving lost sources.

    The situations where LuaDec "get it wrong" are usually related to deciding whether a sequence of relational constructs including TEST operators are part of an assignment or an if construct. Also, the "single pass" nature of the symbolic interpreter fails at some corner cases where there simply is not enough information in the sequence of operator/jump pairs to identify what are the "then" and "else" addresses. This is an example of such a case:

    1       [2]     LOADNIL         0 2 0
    2       [3]     JMP             0 16    ; to 19
    3       [4]     EQ              0 1 250 ; - 2
    4       [4]     JMP             0 2     ; to 7
    5       [4]     TEST            2 2 1
    6       [4]     JMP             0 5     ; to 12
    7       [4]     EQ              0 1 251 ; - 3
    8       [4]     JMP             0 3     ; to 12
    9       [4]     LOADK           3 2     ; 1
    10      [4]     TEST            3 3 1
    11      [4]     JMP             0 0     ; to 12
    12      [6]     LOADK           0 2     ; 1
    13      [7]     JMP             0 7     ; to 21
    14      [8]     LOADK           0 0     ; 2
    15      [8]     JMP             0 3     ; to 19
    16      [10]    LOADK           0 1     ; 3
    17      [11]    JMP             0 3     ; to 21
    18      [12]    LOADK           0 4     ; 4
    19      [3]     TEST            1 1 1
    20      [3]     JMP             0 -18   ; to 3
    21      [14]    RETURN          0 1 0
    
    local a, x, y
    while x do
       if ((x==2) and y) or ((x==3) and 1) or 0
    
       then
          a = 1
       do break end
          a = 2
       else
          a = 3
       do break end
          a = 4
       end
       a = 5
    end
    

    Notice that there is no reference to the "else" address in the highlighted sequence. Only with a more sophisticated block analysis it would be possible to identify the varying purposes of the JMP instructions at addresses 13, 15 and 17.

    For illustrational purposes, here are the results of running LuaDec on the bytecodes generated by the Lua demos included in the test/ subdirectory of the official Lua distribution, as of version 0.4.

    bisect.lua - works
    cf.lua - works
    echo.lua - works
    env.lua - works
    factorial.lua - works
    fibfor.lua - works
    fib.lua - works
    globals.lua - works
    hello.lua - works
    life.lua - works
    luac.lua - works
    printf.lua - works
    readonly.lua - works
    sieve.lua - works
    sort.lua - works
    table.lua - works
    trace-calls.lua - fails assertion works (fixed in 0.4)
    trace-globals.lua - works
    undefined.lua - works
    xd.lua - works

    Running it

    To try out LuaDec:

    make
    bin/luac test/life.lua
    bin/luadec luac.out > newlife.lua
    bin/lua newlife.lua
    

    LuaDec includes a -d flag, which displays the progress of the symbolic interpretation: for each bytecode, the variable stacks and the code generated so far are shown.

    Operation modes

    In its default operation mode, LuaDec recursively processes the program functions, starting from the outmost chunk ("main"). When LuaDec detects a decompilation error (by doing sanity checks on its internal data structures), Luadec outputs the portion of the function decompiled so far, and resumes decompilation in the outer closure.

    There is an alternative operation mode, set with the -f flag, where all functions are decompiled separately. This does not generate a .lua file structured like the original program, but it is useful in the cases where a decompilation error makes a closure declaration "unreachable" in the default operation mode. This allows a larger portion of the sources to be restored in the event of errors.

    Download and Feedback

    To download LuaDec, and send any comments, questions or bug reports, please go to the LuaForge page.

    LuaDec decompiles Lua bytecodes, reconstructing the original source code (or an approximation of it.

    t2007-07-04 16:22:00 application from the virtual machines provided by the various scripting languages. The main library, libscript, is a thin layer that provides a language-independent scripting API, allowing the application to register its functions and invoke code to be performed. Libscript then invokes the appropriate plugin (libscript-python, libscript-ruby, libscript-lua, etc.) to run the code. This way, the application can support all those scripting languages without adding each of them as a dependency.

    libscript was developed by Hisham Muhammad as a case study for his MSc dissertation at PUC-RIO.

    For more information, please go the the Sourceforge page.

    libscript is a plugin-based library designed to add language-independent extensibility to applications.

    t2007-07-04 16:21:00closedcompiler bundled with .NET Framework 1.1 (without type optimizations).

    A paper about the Lua2IL compiler was published in a special edition of the Journal of Universal Computer Science. You can read the paper here.

    Lua2IL is designed and implemented by Fabio Mascarenhas.

    Download

    The compiler is a prototype. It compiles the full Lua 5.0 language, but doesn't include most of the Lua standard library. You can download Lua2IL here.

    Feedback

    Please send questions or comments to Fabio Mascarenhas.

    Lua2IL is a prototype of an implementation of the Lua language on the CLR. It converts Lua bytecodes to the CLR intermediate language, so Lua scripts can run on the CLR without the Lua interpreter.

    t2007-07-04 16:23:00 rQW 3 Lua2IL

    Lua2IL, a Lua to CIL compiler

    Overview

    Lua2IL compiles scripts written in the Lua language to Common Language Infrastructure (CLI) assemblies. The compiler generates pure managed Common Intermediate Language (CIL) code. Besides compiling scripts to CIL, Lua2IL also lets them interface with CLI objects written in other languages.

    For an interpreted language, Lua2IL generates efficient code, with the code being about three times faster than similar JScript code compiled by the Microsoft JScript.NET re> require("luanet") Form = luanet.System.Windows.Forms.Form Button = luanet.System.Windows.Forms.Button Point = luanet.System.Drawing.Point mainForm = Form() buttonOk = Button() buttonCancel = Button() buttonOk.Text = "Ok" buttonCancel.Text = "Cancel" buttonOk.Location = Point(10,10) buttonCancel.Location = Point(buttonOk.Left, buttonOk.Height + buttonOk.Top + 10) mainForm.Controls:Add(buttonOk) mainForm.Controls:Add(buttonCancel) mainForm.StartPosition = luanet.System.Windows.Forms.FormStartPosition.CenterScreen function handleMouseUp(sender,args) print(sender:ToString() .. " MouseUp!") end handlerUp = buttonOk.MouseUp:Add(handleMouseUp) handlerClick = buttonCancel.Click:Add(os.exit) mainForm:ShowDialog()

    You can find more about LuaInterface by reading this paper, published in the proceedings of the 8th Brazilian Symposium on Programming Languages, or download the library and try it out.

    Fabio Mascarenhas did the initial design and implementation of LuaInterface, and it is now being actively maintained by Kevin Hester.

    Download

    LuaInterface is free software (MIT license), and can be downloaded from its LuaForge page. There are versions for Lua 5.1 and 5.0, and for use in versions 1.1 and 2.0 of the CLR.

    Feedback

    Please send comments, suggestions or bug reports through the LuaForge page.

    LuaInterface is a bridge between Lua and the Common Language Runtime. It lets Lua scripts instantiate and use CLR objects, and makes it easier for CLR programs to embed the Lua Interpreter.

    t2007-07-04 16:24:00 %%G 3 LuaInterface

    LuaInterface: Scripting CLR objects with Lua

    Overview

    LuaInterface is a library for brdging the Lua language and Microsoft .NET platform's Common Language Runtime (CLR). LuaInterface is a full consumer of the Common Language Specification (CLS), so Lua scripts can use LuaInterface to instantiate CLR objects, access their properties, call their methods, and even handle their events with Lua functions. Any CLR program can also use LuaInterface to run Lua scripts and modify the scripts' environment. This is a short, working example of LuaInterface in action (it shows a window, with two buttons, on the screen):

    Running Lua scripts on the CLR through bytecode translation, by Fabio Mascarenhas and Roberto Ierusalimschy. Journal of Universal Computer Science 11 #7 (2005) 1275-1290.

    t2007-07-04 16:36:00'  3 Lua.NET

    Lua.NET: Integrating Lua with the CLI

    Lua is a scripting language not totally unlike Tcl, Perl, or Python. Like Tcl, Lua is an "embedded language", in the sense that embedding the interpreter into your program is a trivial task, and it is very easy to interface Lua with other languages like C, C++, or even Fortran. Like Python, Lua has a clear and intuitive syntax. Like all those three, Lua is an interpreted language with dynamic typing, and with several reflexive facilities.

    What sets Lua apart from those languages is its portability, simplicity, and small size. Lua is written in ANSI C, and runs without modifications in almost any platform (MS-DOS, all versions of Windows, all flavors of Unix, plus X-Box, PlayStation II, OS/2, BeOS, EPOC, etc.). The whole program lua.exe has less than 200 Kbytes. Its simplicity led other groups to adopt Lua as a scripting language for other scripting languages (see, for instance, Ruby-Lua).

    Currently, Lua has a strong presence whenever programmers need a light, efficient, and portable language. It is being used by some tens of thousands programmers around the world, both in research and in industrial projects. Lua has been successfully used in games (e.g. Grim Fandango, Escape from Monkey Island, MK2, Baldur's Gate), in robots (e.g. Crazy Ivan, that won the Danish RoboCup in 2000 and 2001), and several other applications (e.g. a hot-swappable Ethernet switch (CPC4400), a genetic sequence visualization system (GUPPY), "The most Linux on one floppy disk" (tomsrtbt)). An extended list of applications using Lua can be found here.

    The Lua.NET project integrates Lua with the Common Language Infrastructure, a framework for language interoperability. This integration allows Lua to act both as a "client" language and as a "server" language, although with a limited capacity for the latter. As a client, Lua scripts can access components available through the CLI. As a server, Lua scripts can implement new components accessible by other languages integrated with the CLI.

    Because Lua is an interpreted language with dynamic typing, its integration with the CLI demands a dynamic nature. Lua.NET employs two approaches for this integration. The first uses the same techniques used to implement LuaOrb, a scripting tool that can access and implement CORBA, COM and Java components. The approach is implemented by the LuaInterface library.

    The second approach compiles Lua to the CLI's Common Intermediate Language, instead of its own bytecode representation. This approach is implemented by the Lua2IL compiler.

    The authors of the Lua.NET project are Roberto Ierusalimschy, Renato Cequeira and Fabio Mascarenhas. The project is sponsored by Microsoft Research and CAPES.

    Publications

    Fabio Mascarenhas, Roberto Ierusalimschy. LuaInterface: Scripting the .NET CLR with Lua. Journal of Universal Computer Science, 10(7):892-908, July 2004.

    Fabio Mascarenhas, Roberto Ierusalimschy. Running Lua Scripts on the CLR Through Bytecode Translation. Due for publication in a special edition of the Journal of Universal Computer Science.

    Lua.NET was a project sponsored by Microsoft Research to integrate Lua with the Common Language Runtime. It generated both LuaInterface and Lua2IL.

    t2007-07-05 16:24:00 ~ 9 3 Revisitando co-rotinas

    Revisitando co-rotinas, by Ana Lcia de Moura. Ph.D. thesis, Department of Computer Science, PUC-Rio, Sep 2004.

    t2007-07-04 16:38:005 _] 3 LuaInterface: Scripting .NET CLR with Lua

    LuaInterface: Scripting .NET CLR with Lua, by Fabio Mascarenhas and Roberto Ierusalimschy. Journal of Universal Computer Science 10 #7 (2004) 892-909.

    t2007-07-02 16:37:00 /9 3 Coroutines in Lua

    Coroutines in Lua, by Ana Lcia de Moura, Noemi Rodriguez, and Roberto Ierusalimschy. Journal of Universal Computer Science 10 #7 (2004) 910-925.

    t2007-07-03 16:37:00 ($(F7' 3 Roberto Ierusalimschy

    Roberto Ierusalimschy, Associate Professor, Computer Science Department, PUC-Rio.

    t2007-07-04 16:46:00Q 3 A study on scripting language APIs

    A study on scripting language APIs, by Hisham Muhammad. M.Sc. dissertation (english translation), Department of Computer Science, PUC-Rio, Aug 2006.

    t2007-07-04 16:39:00,# 3 Integrao entre a linguagem Lua e o Common Language Runtime

    Integrao entre a linguagem Lua e o Common Language Runtime, by Fabio Mascarenhas. M.Sc. dissertation, Department of Computer Science, PUC-Rio, Mar 2004.t2007-07-02 16:39:00Y_% 3 Estudo sobre APIs de Linguagens de Script

    Estudo sobre APIs de Linguagens de Script, by Hisham Muhammad. M.Sc. dissertation, Department of Computer Science, PUC-Rio, Aug 2006.

    t2007-07-03 16:38:00 S[6 3 Foo BarrFoo Barr. t2007-07-04 17:02:00n 1 3 Ana Lcia de Moura

    Ana Lcia de Moura, PhD Computer Science, PUC-Rio.

    t2007-07-02 16:47:00+[ 3 Hisham Muhammad

    Hisham Muhammad, MSc Computer Science, PUC-Rio.

    t2007-07-03 16:47:001- 3 Alexandra Barros

    Alexandra Barros, MSc Student, Computer Science Department, PUC-Rio.

    t2007-07-04 16:47:00$+o 3 Srgio Medeiros

    Srgio Medeiros, PhD Student, Computer Science Department, PUC-Rio.

    t2007-07-03 16:46:00*/w 3 Fabio Mascarenhas

    Fabio Mascarenhas, PhD Student, Computer Science Department, PUC-Rio.

    t2007-07-04 16:46:00lua-orbit-2.2.1+dfsg/samples/toycms/markdown.lua000066400000000000000000001161261227340735500216570ustar00rootroot00000000000000#!/usr/bin/env lua --[[ # markdown.lua -- version 0.32 **Author:** Niklas Frykholm, **Date:** 31 May 2008 This is an implementation of the popular text markup language Markdown in pure Lua. Markdown can convert documents written in a simple and easy to read text format to well-formatted HTML. For a more thourough description of Markdown and the Markdown syntax, see . The original Markdown source is written in Perl and makes heavy use of advanced regular expression techniques (such as negative look-ahead, etc) which are not available in Lua's simple regex engine. Therefore this Lua port has been rewritten from the ground up. It is probably not completely bug free. If you notice any bugs, please report them to me. A unit test that exposes the error is helpful. ## Usage require "markdown" markdown(source) ``markdown.lua`` exposes a single global function named ``markdown(s)`` which applies the Markdown transformation to the specified string. ``markdown.lua`` can also be used directly from the command line: lua markdown.lua test.md Creates a file ``test.html`` with the converted content of ``test.md``. Run: lua markdown.lua -h For a description of the command-line options. ``markdown.lua`` uses the same license as Lua, the MIT license. ## License Copyright © 2008 Niklas Frykholm. 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. ## Version history - **0.32** -- 31 May 2008 - Fix for links containing brackets - **0.31** -- 1 Mar 2008 - Fix for link definitions followed by spaces - **0.30** -- 25 Feb 2008 - Consistent behavior with Markdown when the same link reference is reused - **0.29** -- 24 Feb 2008 - Fix for
     blocks with spaces in them
    -	**0.28** -- 18 Feb 2008
    	-	Fix for link encoding
    -	**0.27** -- 14 Feb 2008
    	-	Fix for link database links with ()
    -	**0.26** -- 06 Feb 2008
    	-	Fix for nested italic and bold markers
    -	**0.25** -- 24 Jan 2008
    	-	Fix for encoding of naked <
    -	**0.24** -- 21 Jan 2008
    	-	Fix for link behavior.
    -	**0.23** -- 10 Jan 2008
    	-	Fix for a regression bug in longer expressions in italic or bold.
    -	**0.22** -- 27 Dec 2007
    	-	Fix for crash when processing blocks with a percent sign in them.
    -	**0.21** -- 27 Dec 2007
    	- 	Fix for combined strong and emphasis tags
    -	**0.20** -- 13 Oct 2007
    	-	Fix for < as well in image titles, now matches Dingus behavior
    -	**0.19** -- 28 Sep 2007
    	-	Fix for quotation marks " and ampersands & in link and image titles.
    -	**0.18** -- 28 Jul 2007
    	-	Does not crash on unmatched tags (behaves like standard markdown)
    -	**0.17** -- 12 Apr 2007
    	-	Fix for links with %20 in them.
    -	**0.16** -- 12 Apr 2007
    	-	Do not require arg global to exist.
    -	**0.15** -- 28 Aug 2006
    	-	Better handling of links with underscores in them.
    -	**0.14** -- 22 Aug 2006
    	-	Bug for *`foo()`*
    -	**0.13** -- 12 Aug 2006
    	-	Added -l option for including stylesheet inline in document.
    	-	Fixed bug in -s flag.
    	-	Fixed emphasis bug.
    -	**0.12** -- 15 May 2006
    	-	Fixed several bugs to comply with MarkdownTest 1.0 
    -	**0.11** -- 12 May 2006
    	-	Fixed bug for escaping `*` and `_` inside code spans.
    	-	Added license terms.
    	-	Changed join() to table.concat().
    -	**0.10** -- 3 May 2006
    	-	Initial public release.
    
    // Niklas
    ]]
    
    
    -- Set up a table for holding local functions to avoid polluting the global namespace
    local M = {}
    local unpack = unpack or table.unpack
    local MT = {__index = _G}
    setmetatable(M, MT)
    
    ----------------------------------------------------------------------
    -- Utility functions
    ----------------------------------------------------------------------
    
    -- Locks table t from changes, writes an error if someone attempts to change the table.
    -- This is useful for detecting variables that have "accidently" been made global. Something
    -- I tend to do all too much.
    function M.lock(t)
    	local function lock_new_index(t, k, v)
    		error("module has been locked -- " .. k .. " must be declared local", 2)
    	end
    
    	local mt = {__newindex = lock_new_index}
    	if getmetatable(t) then
          mt.__index = getmetatable(t).__index
       end
    	setmetatable(t, mt)
    end
    
    -- Returns the result of mapping the values in table t through the function f
    local function map(t, f)
    	local out = {}
    	for k,v in pairs(t) do out[k] = f(v,k) end
    	return out
    end
    
    -- The identity function, useful as a placeholder.
    local function identity(text) return text end
    
    -- Functional style if statement. (NOTE: no short circuit evaluation)
    local function iff(t, a, b) if t then return a else return b end end
    
    -- Splits the text into an array of separate lines.
    local function split(text, sep)
    	sep = sep or "\n"
    	local lines = {}
    	local pos = 1
    	while true do
    		local b,e = text:find(sep, pos)
    		if not b then table.insert(lines, text:sub(pos)) break end
    		table.insert(lines, text:sub(pos, b-1))
    		pos = e + 1
    	end
    	return lines
    end
    
    -- Converts tabs to spaces
    local function detab(text)
    	local tab_width = 4
    	local function rep(match)
    		local spaces = -match:len()
    		while spaces<1 do spaces = spaces + tab_width end
    		return match .. string.rep(" ", spaces)
    	end
    	text = text:gsub("([^\n]-)\t", rep)
    	return text
    end
    
    -- Applies string.find for every pattern in the list and returns the first match
    local function find_first(s, patterns, index)
    	local res = {}
    	for _,p in ipairs(patterns) do
    		local match = {s:find(p, index)}
    		if #match>0 and (#res==0 or match[1] < res[1]) then res = match end
    	end
    	return unpack(res)
    end
    
    -- If a replacement array is specified, the range [start, stop] in the array is replaced
    -- with the replacement array and the resulting array is returned. Without a replacement
    -- array the section of the array between start and stop is returned.
    local function splice(array, start, stop, replacement)
    	if replacement then
    		local n = stop - start + 1
    		while n > 0 do
    			table.remove(array, start)
    			n = n - 1
    		end
    		for i,v in ipairs(replacement) do
    			table.insert(array, start, v)
    		end
    		return array
    	else
    		local res = {}
    		for i = start,stop do
    			table.insert(res, array[i])
    		end
    		return res
    	end
    end
    
    -- Outdents the text one step.
    local function outdent(text)
    	text = "\n" .. text
    	text = text:gsub("\n  ? ? ?", "\n")
    	text = text:sub(2)
    	return text
    end
    
    -- Indents the text one step.
    local function indent(text)
    	text = text:gsub("\n", "\n    ")
    	return text
    end
    
    -- Does a simple tokenization of html data. Returns the data as a list of tokens.
    -- Each token is a table with a type field (which is either "tag" or "text") and
    -- a text field (which contains the original token data).
    local function tokenize_html(html)
    	local tokens = {}
    	local pos = 1
    	while true do
    		local start = find_first(html, {"", start)
    		elseif html:match("^<%?", start) then
    			_,stop = html:find("?>", start)
    		else
    			_,stop = html:find("%b<>", start)
    		end
    		if not stop then
    			-- error("Could not match html tag " .. html:sub(start,start+30))
    		 	table.insert(tokens, {type="text", text=html:sub(start, start)})
    			pos = start + 1
    		else
    			table.insert(tokens, {type="tag", text=html:sub(start, stop)})
    			pos = stop + 1
    		end
    	end
    	return tokens
    end
    
    ----------------------------------------------------------------------
    -- Hash
    ----------------------------------------------------------------------
    
    -- This is used to "hash" data into alphanumeric strings that are unique
    -- in the document. (Note that this is not cryptographic hash, the hash
    -- function is not one-way.) The hash procedure is used to protect parts
    -- of the document from further processing.
    
    local HASH = {
    	-- Has the hash been inited.
    	inited = false,
    
    	-- The unique string prepended to all hash values. This is to ensure
    	-- that hash values do not accidently coincide with an actual existing
    	-- string in the document.
    	identifier = "",
    
    	-- Counter that counts up for each new hash instance.
    	counter = 0,
    
    	-- Hash table.
    	table = {}
    }
    
    -- Inits hashing. Creates a hash_identifier that doesn't occur anywhere
    -- in the text.
    local function init_hash(text)
    	HASH.inited = true
    	HASH.identifier = ""
    	HASH.counter = 0
    	HASH.table = {}
    
    	local s = "HASH"
    	local counter = 0
    	local id
    	while true do
    		id  = s .. counter
    		if not text:find(id, 1, true) then break end
    		counter = counter + 1
    	end
    	HASH.identifier = id
    end
    
    -- Returns the hashed value for s.
    local function hash(s)
    	assert(HASH.inited)
    	if not HASH.table[s] then
    		HASH.counter = HASH.counter + 1
    		local id = HASH.identifier .. HASH.counter .. "X"
    		HASH.table[s] = id
    	end
    	return HASH.table[s]
    end
    
    ----------------------------------------------------------------------
    -- Protection
    ----------------------------------------------------------------------
    
    -- The protection module is used to "protect" parts of a document
    -- so that they are not modified by subsequent processing steps.
    -- Protected parts are saved in a table for later unprotection
    
    -- Protection data
    local PD = {
    	-- Saved blocks that have been converted
    	blocks = {},
    
    	-- Block level tags that will be protected
    	tags = {"p", "div", "h1", "h2", "h3", "h4", "h5", "h6", "blockquote",
    	"pre", "table", "dl", "ol", "ul", "script", "noscript", "form", "fieldset",
    	"iframe", "math", "ins", "del"}
    }
    
    -- Pattern for matching a block tag that begins and ends in the leftmost
    -- column and may contain indented subtags, i.e.
    -- 
    -- A nested block. --
    -- Nested data. --
    --
    local function block_pattern(tag) return "\n<" .. tag .. ".-\n[ \t]*\n" end -- Pattern for matching a block tag that begins and ends with a newline local function line_pattern(tag) return "\n<" .. tag .. ".-[ \t]*\n" end -- Protects the range of characters from start to stop in the text and -- returns the protected string. local function protect_range(text, start, stop) local s = text:sub(start, stop) local h = hash(s) PD.blocks[h] = s text = text:sub(1,start) .. h .. text:sub(stop) return text end -- Protect every part of the text that matches any of the patterns. The first -- matching pattern is protected first, etc. local function protect_matches(text, patterns) while true do local start, stop = find_first(text, patterns) if not start then break end text = protect_range(text, start, stop) end return text end -- Protects blocklevel tags in the specified text local function protect(text) -- First protect potentially nested block tags text = protect_matches(text, map(PD.tags, block_pattern)) -- Then protect block tags at the line level. text = protect_matches(text, map(PD.tags, line_pattern)) -- Protect
    and comment tags text = protect_matches(text, {"\n]->[ \t]*\n"}) text = protect_matches(text, {"\n[ \t]*\n"}) return text end -- Returns true if the string s is a hash resulting from protection local function is_protected(s) return PD.blocks[s] end -- Unprotects the specified text by expanding all the nonces local function unprotect(text) for k,v in pairs(PD.blocks) do v = v:gsub("%%", "%%%%") text = text:gsub(k, v) end return text end ---------------------------------------------------------------------- -- Block transform ---------------------------------------------------------------------- -- The block transform functions transform the text on the block level. -- They work with the text as an array of lines rather than as individual -- characters. -- Returns true if the line is a ruler of (char) characters. -- The line must contain at least three char characters and contain only spaces and -- char characters. local function is_ruler_of(line, char) if not line:match("^[ %" .. char .. "]*$") then return false end if not line:match("%" .. char .. ".*%" .. char .. ".*%" .. char) then return false end return true end -- Identifies the block level formatting present in the line local function classify(line) local info = {line = line, text = line} if line:match("^ ") then info.type = "indented" info.outdented = line:sub(5) return info end for _,c in ipairs({'*', '-', '_', '='}) do if is_ruler_of(line, c) then info.type = "ruler" info.ruler_char = c return info end end if line == "" then info.type = "blank" return info end if line:match("^(#+)[ \t]*(.-)[ \t]*#*[ \t]*$") then local m1, m2 = line:match("^(#+)[ \t]*(.-)[ \t]*#*[ \t]*$") info.type = "header" info.level = m1:len() info.text = m2 return info end if line:match("^ ? ? ?(%d+)%.[ \t]+(.+)") then local number, text = line:match("^ ? ? ?(%d+)%.[ \t]+(.+)") info.type = "list_item" info.list_type = "numeric" info.number = 0 + number info.text = text return info end if line:match("^ ? ? ?([%*%+%-])[ \t]+(.+)") then local bullet, text = line:match("^ ? ? ?([%*%+%-])[ \t]+(.+)") info.type = "list_item" info.list_type = "bullet" info.bullet = bullet info.text= text return info end if line:match("^>[ \t]?(.*)") then info.type = "blockquote" info.text = line:match("^>[ \t]?(.*)") return info end if is_protected(line) then info.type = "raw" info.html = unprotect(line) return info end info.type = "normal" return info end -- Find headers constisting of a normal line followed by a ruler and converts them to -- header entries. local function headers(array) local i = 1 while i <= #array - 1 do if array[i].type == "normal" and array[i+1].type == "ruler" and (array[i+1].ruler_char == "-" or array[i+1].ruler_char == "=") then local info = {line = array[i].line} info.text = info.line info.type = "header" info.level = iff(array[i+1].ruler_char == "=", 1, 2) table.remove(array, i+1) array[i] = info end i = i + 1 end return array end local block_transform, blocks_to_html, encode_code, span_transform, encode_backslash_escapes -- Find list blocks and convert them to protected data blocks local function lists(array, sublist) local function process_list(arr) local function any_blanks(arr) for i = 1, #arr do if arr[i].type == "blank" then return true end end return false end local function split_list_items(arr) local acc = {arr[1]} local res = {} for i=2,#arr do if arr[i].type == "list_item" then table.insert(res, acc) acc = {arr[i]} else table.insert(acc, arr[i]) end end table.insert(res, acc) return res end local function process_list_item(lines, block) while lines[#lines].type == "blank" do table.remove(lines) end local itemtext = lines[1].text for i=2,#lines do itemtext = itemtext .. "\n" .. outdent(lines[i].line) end if block then itemtext = block_transform(itemtext, true) if not itemtext:find("
    ") then itemtext = indent(itemtext) end
    				return "    
  • " .. itemtext .. "
  • " else local lines = split(itemtext) lines = map(lines, classify) lines = lists(lines, true) lines = blocks_to_html(lines, true) itemtext = table.concat(lines, "\n") if not itemtext:find("
    ") then itemtext = indent(itemtext) end
    				return "    
  • " .. itemtext .. "
  • " end end local block_list = any_blanks(arr) local items = split_list_items(arr) local out = "" for _, item in ipairs(items) do out = out .. process_list_item(item, block_list) .. "\n" end if arr[1].list_type == "numeric" then return "
      \n" .. out .. "
    " else return "
      \n" .. out .. "
    " end end -- Finds the range of lines composing the first list in the array. A list -- starts with (^ list_item) or (blank list_item) and ends with -- (blank* $) or (blank normal). -- -- A sublist can start with just (list_item) does not need a blank... local function find_list(array, sublist) local function find_list_start(array, sublist) if array[1].type == "list_item" then return 1 end if sublist then for i = 1,#array do if array[i].type == "list_item" then return i end end else for i = 1, #array-1 do if array[i].type == "blank" and array[i+1].type == "list_item" then return i+1 end end end return nil end local function find_list_end(array, start) local pos = #array for i = start, #array-1 do if array[i].type == "blank" and array[i+1].type ~= "list_item" and array[i+1].type ~= "indented" and array[i+1].type ~= "blank" then pos = i-1 break end end while pos > start and array[pos].type == "blank" do pos = pos - 1 end return pos end local start = find_list_start(array, sublist) if not start then return nil end return start, find_list_end(array, start) end while true do local start, stop = find_list(array, sublist) if not start then break end local text = process_list(splice(array, start, stop)) local info = { line = text, type = "raw", html = text } array = splice(array, start, stop, {info}) end -- Convert any remaining list items to normal for _,line in ipairs(array) do if line.type == "list_item" then line.type = "normal" end end return array end -- Find and convert blockquote markers. local function blockquotes(lines) local function find_blockquote(lines) local start for i,line in ipairs(lines) do if line.type == "blockquote" then start = i break end end if not start then return nil end local stop = #lines for i = start+1, #lines do if lines[i].type == "blank" or lines[i].type == "blockquote" then elseif lines[i].type == "normal" then if lines[i-1].type == "blank" then stop = i-1 break end else stop = i-1 break end end while lines[stop].type == "blank" do stop = stop - 1 end return start, stop end local function process_blockquote(lines) local raw = lines[1].text for i = 2,#lines do raw = raw .. "\n" .. lines[i].text end local bt = block_transform(raw) if not bt:find("
    ") then bt = indent(bt) end
    		return "
    \n " .. bt .. "\n
    " end while true do local start, stop = find_blockquote(lines) if not start then break end local text = process_blockquote(splice(lines, start, stop)) local info = { line = text, type = "raw", html = text } lines = splice(lines, start, stop, {info}) end return lines end -- Find and convert codeblocks. local function codeblocks(lines) local function find_codeblock(lines) local start for i,line in ipairs(lines) do if line.type == "indented" then start = i break end end if not start then return nil end local stop = #lines for i = start+1, #lines do if lines[i].type ~= "indented" and lines[i].type ~= "blank" then stop = i-1 break end end while lines[stop].type == "blank" do stop = stop - 1 end return start, stop end local function process_codeblock(lines) local raw = detab(encode_code(outdent(lines[1].line))) for i = 2,#lines do raw = raw .. "\n" .. detab(encode_code(outdent(lines[i].line))) end return "
    " .. raw .. "\n
    " end while true do local start, stop = find_codeblock(lines) if not start then break end local text = process_codeblock(splice(lines, start, stop)) local info = { line = text, type = "raw", html = text } lines = splice(lines, start, stop, {info}) end return lines end -- Convert lines to html code function blocks_to_html(lines, no_paragraphs) local out = {} local i = 1 while i <= #lines do local line = lines[i] if line.type == "ruler" then table.insert(out, "
    ") elseif line.type == "raw" then table.insert(out, line.html) elseif line.type == "normal" then local s = line.line while i+1 <= #lines and lines[i+1].type == "normal" do i = i + 1 s = s .. "\n" .. lines[i].line end if no_paragraphs then table.insert(out, span_transform(s)) else table.insert(out, "

    " .. span_transform(s) .. "

    ") end elseif line.type == "header" then local s = "" .. span_transform(line.text) .. "" table.insert(out, s) else table.insert(out, line.line) end i = i + 1 end return out end -- Perform all the block level transforms function block_transform(text, sublist) local lines = split(text) lines = map(lines, classify) lines = headers(lines) lines = lists(lines, sublist) lines = codeblocks(lines) lines = blockquotes(lines) lines = blocks_to_html(lines) local text = table.concat(lines, "\n") return text end -- Debug function for printing a line array to see the result -- of partial transforms. local function print_lines(lines) for i, line in ipairs(lines) do print(i, line.type, line.text or line.line) end end ---------------------------------------------------------------------- -- Span transform ---------------------------------------------------------------------- -- Functions for transforming the text at the span level. -- These characters may need to be escaped because they have a special -- meaning in markdown. local escape_chars = "'\\`*_{}[]()>#+-.!'" local escape_table = {} local function init_escape_table() escape_table = {} for i = 1,#escape_chars do local c = escape_chars:sub(i,i) escape_table[c] = hash(c) end end -- Adds a new escape to the escape table. local function add_escape(text) if not escape_table[text] then escape_table[text] = hash(text) end return escape_table[text] end -- Escape characters that should not be disturbed by markdown. local function escape_special_chars(text) local tokens = tokenize_html(text) local out = "" for _, token in ipairs(tokens) do local t = token.text if token.type == "tag" then -- In tags, encode * and _ so they don't conflict with their use in markdown. t = t:gsub("%*", escape_table["*"]) t = t:gsub("%_", escape_table["_"]) else t = encode_backslash_escapes(t) end out = out .. t end return out end -- Encode backspace-escaped characters in the markdown source. function encode_backslash_escapes(t) for i=1,escape_chars:len() do local c = escape_chars:sub(i,i) t = t:gsub("\\%" .. c, escape_table[c]) end return t end -- Unescape characters that have been encoded. local function unescape_special_chars(t) local tin = t for k,v in pairs(escape_table) do k = k:gsub("%%", "%%%%") t = t:gsub(v,k) end if t ~= tin then t = unescape_special_chars(t) end return t end -- Encode/escape certain characters inside Markdown code runs. -- The point is that in code, these characters are literals, -- and lose their special Markdown meanings. function encode_code(s) s = s:gsub("%&", "&") s = s:gsub("<", "<") s = s:gsub(">", ">") for k,v in pairs(escape_table) do s = s:gsub("%"..k, v) end return s end -- Handle backtick blocks. local function code_spans(s) s = s:gsub("\\\\", escape_table["\\"]) s = s:gsub("\\`", escape_table["`"]) local pos = 1 while true do local start, stop = s:find("`+", pos) if not start then return s end local count = stop - start + 1 -- Find a matching numbert of backticks local estart, estop = s:find(string.rep("`", count), stop+1) local brstart = s:find("\n", stop+1) if estart and (not brstart or estart < brstart) then local code = s:sub(stop+1, estart-1) code = code:gsub("^[ \t]+", "") code = code:gsub("[ \t]+$", "") code = code:gsub(escape_table["\\"], escape_table["\\"] .. escape_table["\\"]) code = code:gsub(escape_table["`"], escape_table["\\"] .. escape_table["`"]) code = "" .. encode_code(code) .. "" code = add_escape(code) s = s:sub(1, start-1) .. code .. s:sub(estop+1) pos = start + code:len() else pos = stop + 1 end end return s end -- Encode alt text... enodes &, and ". local function encode_alt(s) if not s then return s end s = s:gsub('&', '&') s = s:gsub('"', '"') s = s:gsub('<', '<') return s end local link_database -- Handle image references local function images(text) local function reference_link(alt, id) alt = encode_alt(alt:match("%b[]"):sub(2,-2)) id = id:match("%[(.*)%]"):lower() if id == "" then id = text:lower() end link_database[id] = link_database[id] or {} if not link_database[id].url then return nil end local url = link_database[id].url or id url = encode_alt(url) local title = encode_alt(link_database[id].title) if title then title = " title=\"" .. title .. "\"" else title = "" end return add_escape ('' .. alt .. '") end local function inline_link(alt, link) alt = encode_alt(alt:match("%b[]"):sub(2,-2)) local url, title = link:match("%(?[ \t]*['\"](.+)['\"]") url = url or link:match("%(?%)") url = encode_alt(url) title = encode_alt(title) if title then return add_escape('' .. alt .. '') else return add_escape('' .. alt .. '') end end text = text:gsub("!(%b[])[ \t]*\n?[ \t]*(%b[])", reference_link) text = text:gsub("!(%b[])(%b())", inline_link) return text end -- Handle anchor references local function anchors(text) local function reference_link(text, id) text = text:match("%b[]"):sub(2,-2) id = id:match("%b[]"):sub(2,-2):lower() if id == "" then id = text:lower() end link_database[id] = link_database[id] or {} if not link_database[id].url then return nil end local url = link_database[id].url or id url = encode_alt(url) local title = encode_alt(link_database[id].title) if title then title = " title=\"" .. title .. "\"" else title = "" end return add_escape("") .. text .. add_escape("") end local function inline_link(text, link) text = text:match("%b[]"):sub(2,-2) local url, title = link:match("%(?[ \t]*['\"](.+)['\"]") title = encode_alt(title) url = url or link:match("%(?%)") or "" url = encode_alt(url) if title then return add_escape("") .. text .. "" else return add_escape("") .. text .. add_escape("") end end text = text:gsub("(%b[])[ \t]*\n?[ \t]*(%b[])", reference_link) text = text:gsub("(%b[])(%b())", inline_link) return text end -- Handle auto links, i.e. . local function auto_links(text) local function link(s) return add_escape("") .. s .. "" end -- Encode chars as a mix of dec and hex entitites to (perhaps) fool -- spambots. local function encode_email_address(s) -- Use a deterministic encoding to make unit testing possible. -- Code 45% hex, 45% dec, 10% plain. local hex = {code = function(c) return "&#x" .. string.format("%x", c:byte()) .. ";" end, count = 1, rate = 0.45} local dec = {code = function(c) return "&#" .. c:byte() .. ";" end, count = 0, rate = 0.45} local plain = {code = function(c) return c end, count = 0, rate = 0.1} local codes = {hex, dec, plain} local function swap(t,k1,k2) local temp = t[k2] t[k2] = t[k1] t[k1] = temp end local out = "" for i = 1,s:len() do for _,code in ipairs(codes) do code.count = code.count + code.rate end if codes[1].count < codes[2].count then swap(codes,1,2) end if codes[2].count < codes[3].count then swap(codes,2,3) end if codes[1].count < codes[2].count then swap(codes,1,2) end local code = codes[1] local c = s:sub(i,i) -- Force encoding of "@" to make email address more invisible. if c == "@" and code == plain then code = codes[2] end out = out .. code.code(c) code.count = code.count - 1 end return out end local function mail(s) s = unescape_special_chars(s) local address = encode_email_address("mailto:" .. s) local text = encode_email_address(s) return add_escape("") .. text .. "" end -- links text = text:gsub("<(https?:[^'\">%s]+)>", link) text = text:gsub("<(ftp:[^'\">%s]+)>", link) -- mail text = text:gsub("%s]+)>", mail) text = text:gsub("<([-.%w]+%@[-.%w]+)>", mail) return text end -- Encode free standing amps (&) and angles (<)... note that this does not -- encode free >. local function amps_and_angles(s) -- encode amps not part of &..; expression local pos = 1 while true do local amp = s:find("&", pos) if not amp then break end local semi = s:find(";", amp+1) local stop = s:find("[ \t\n&]", amp+1) if not semi or (stop and stop < semi) or (semi - amp) > 15 then s = s:sub(1,amp-1) .. "&" .. s:sub(amp+1) pos = amp+1 else pos = amp+1 end end -- encode naked <'s s = s:gsub("<([^a-zA-Z/?$!])", "<%1") s = s:gsub("<$", "<") -- what about >, nothing done in the original markdown source to handle them return s end -- Handles emphasis markers (* and _) in the text. local function emphasis(text) for _, s in ipairs {"%*%*", "%_%_"} do text = text:gsub(s .. "([^%s][%*%_]?)" .. s, "%1") text = text:gsub(s .. "([^%s][^<>]-[^%s][%*%_]?)" .. s, "%1") end for _, s in ipairs {"%*", "%_"} do text = text:gsub(s .. "([^%s_])" .. s, "%1") text = text:gsub(s .. "([^%s_])" .. s, "%1") text = text:gsub(s .. "([^%s_][^<>_]-[^%s_])" .. s, "%1") text = text:gsub(s .. "([^<>_]-[^<>_]-[^<>_]-)" .. s, "%1") end return text end -- Handles line break markers in the text. local function line_breaks(text) return text:gsub(" +\n", "
    \n") end -- Perform all span level transforms. function span_transform(text) text = code_spans(text) text = escape_special_chars(text) text = images(text) text = anchors(text) text = auto_links(text) text = amps_and_angles(text) text = emphasis(text) text = line_breaks(text) return text end ---------------------------------------------------------------------- -- Markdown ---------------------------------------------------------------------- -- Cleanup the text by normalizing some possible variations to make further -- processing easier. local function cleanup(text) -- Standardize line endings text = text:gsub("\r\n", "\n") -- DOS to UNIX text = text:gsub("\r", "\n") -- Mac to UNIX -- Convert all tabs to spaces text = detab(text) -- Strip lines with only spaces and tabs while true do local subs text, subs = text:gsub("\n[ \t]+\n", "\n\n") if subs == 0 then break end end return "\n" .. text .. "\n" end -- Strips link definitions from the text and stores the data in a lookup table. local function strip_link_definitions(text) local linkdb = {} local function link_def(id, url, title) id = id:match("%[(.+)%]"):lower() linkdb[id] = linkdb[id] or {} linkdb[id].url = url or linkdb[id].url linkdb[id].title = title or linkdb[id].title return "" end local def_no_title = "\n ? ? ?(%b[]):[ \t]*\n?[ \t]*]+)>?[ \t]*" local def_title1 = def_no_title .. "[ \t]+\n?[ \t]*[\"'(]([^\n]+)[\"')][ \t]*" local def_title2 = def_no_title .. "[ \t]*\n[ \t]*[\"'(]([^\n]+)[\"')][ \t]*" local def_title3 = def_no_title .. "[ \t]*\n?[ \t]+[\"'(]([^\n]+)[\"')][ \t]*" text = text:gsub(def_title1, link_def) text = text:gsub(def_title2, link_def) text = text:gsub(def_title3, link_def) text = text:gsub(def_no_title, link_def) return text, linkdb end link_database = {} -- Main markdown processing function local function markdown(text) init_hash(text) init_escape_table() text = cleanup(text) text = protect(text) text, link_database = strip_link_definitions(text) text = block_transform(text) text = unescape_special_chars(text) return text end ---------------------------------------------------------------------- -- End of module ---------------------------------------------------------------------- M.lock(M) -- Expose markdown function to the world _G.markdown = M.markdown -- Class for parsing command-line options local OptionParser = {} OptionParser.__index = OptionParser -- Creates a new option parser function OptionParser:new() local o = {short = {}, long = {}} setmetatable(o, self) return o end -- Calls f() whenever a flag with specified short and long name is encountered function OptionParser:flag(short, long, f) local info = {type = "flag", f = f} if short then self.short[short] = info end if long then self.long[long] = info end end -- Calls f(param) whenever a parameter flag with specified short and long name is encountered function OptionParser:param(short, long, f) local info = {type = "param", f = f} if short then self.short[short] = info end if long then self.long[long] = info end end -- Calls f(v) for each non-flag argument function OptionParser:arg(f) self.arg = f end -- Runs the option parser for the specified set of arguments. Returns true if all arguments -- where successfully parsed and false otherwise. function OptionParser:run(args) local pos = 1 local param while pos <= #args do local arg = args[pos] if arg == "--" then for i=pos+1,#args do if self.arg then self.arg(args[i]) end return true end end if arg:match("^%-%-") then local info = self.long[arg:sub(3)] if not info then print("Unknown flag: " .. arg) return false end if info.type == "flag" then info.f() pos = pos + 1 else param = args[pos+1] if not param then print("No parameter for flag: " .. arg) return false end info.f(param) pos = pos+2 end elseif arg:match("^%-") then for i=2,arg:len() do local c = arg:sub(i,i) local info = self.short[c] if not info then print("Unknown flag: -" .. c) return false end if info.type == "flag" then info.f() else if i == arg:len() then param = args[pos+1] if not param then print("No parameter for flag: -" .. c) return false end info.f(param) pos = pos + 1 else param = arg:sub(i+1) info.f(param) end break end end pos = pos + 1 else if self.arg then self.arg(arg) end pos = pos + 1 end end return true end -- Handles the case when markdown is run from the command line local function run_command_line(arg) -- Generate output for input s given options local function run(s, options) s = markdown(s) if not options.wrap_header then return s end local header = "" if options.header then local f = io.open(options.header) or error("Could not open file: " .. options.header) header = f:read("*a") f:close() else header = [[ TITLE ]] local title = options.title or s:match("

    (.-)

    ") or s:match("

    (.-)

    ") or s:match("

    (.-)

    ") or "Untitled" header = header:gsub("TITLE", title) if options.inline_style then local style = "" local f = io.open(options.stylesheet) if f then style = f:read("*a") f:close() else error("Could not include style sheet " .. options.stylesheet .. ": File not found") end header = header:gsub('', "") else header = header:gsub("STYLESHEET", options.stylesheet) end header = header:gsub("CHARSET", options.charset) end local footer = "" if options.footer then local f = io.open(options.footer) or error("Could not open file: " .. options.footer) footer = f:read("*a") f:close() end return header .. s .. footer end -- Generate output path name from input path name given options. local function outpath(path, options) if options.append then return path .. ".html" end local m = path:match("^(.+%.html)[^/\\]+$") if m then return m end m = path:match("^(.+%.)[^/\\]*$") if m and path ~= m .. "html" then return m .. "html" end return path .. ".html" end -- Default commandline options local options = { wrap_header = true, header = nil, footer = nil, charset = "utf-8", title = nil, stylesheet = "default.css", inline_style = false } local help = [[ Usage: markdown.lua [OPTION] [FILE] Runs the markdown text markup to HTML converter on each file specified on the command line. If no files are specified, runs on standard input. No header: -n, --no-wrap Don't wrap the output in ... tags. Custom header: -e, --header FILE Use content of FILE for header. -f, --footer FILE Use content of FILE for footer. Generated header: -c, --charset SET Specifies charset (default utf-8). -i, --title TITLE Specifies title (default from first

    tag). -s, --style STYLE Specifies style sheet file (default default.css). -l, --inline-style Include the style sheet file inline in the header. Generated files: -a, --append Append .html extension (instead of replacing). Other options: -h, --help Print this help text. -t, --test Run the unit tests. ]] local run_stdin = true local op = OptionParser:new() op:flag("n", "no-wrap", function () options.wrap_header = false end) op:param("e", "header", function (x) options.header = x end) op:param("f", "footer", function (x) options.footer = x end) op:param("c", "charset", function (x) options.charset = x end) op:param("i", "title", function(x) options.title = x end) op:param("s", "style", function(x) options.stylesheet = x end) op:flag("l", "inline-style", function(x) options.inline_style = true end) op:flag("a", "append", function() options.append = true end) op:flag("t", "test", function() local n = arg[0]:gsub("markdown.lua", "markdown-tests.lua") local f = io.open(n) if f then f:close() dofile(n) else error("Cannot find markdown-tests.lua") end run_stdin = false end) op:flag("h", "help", function() print(help) run_stdin = false end) op:arg(function(path) local file = io.open(path) or error("Could not open file: " .. path) local s = file:read("*a") file:close() s = run(s, options) file = io.open(outpath(path, options), "w") or error("Could not open output file: " .. outpath(path, options)) file:write(s) file:close() run_stdin = false end ) if not op:run(arg) then print(help) run_stdin = false end if run_stdin then local s = io.read("*a") s = run(s, options) io.write(s) end end -- If we are being run from the command-line, act accordingly if arg and arg[0]:find("markdown%.lua$") then run_command_line(arg) else return markdown end lua-orbit-2.2.1+dfsg/samples/toycms/populate_mysql_blog.lua000066400000000000000000003677461227340735500241360ustar00rootroot00000000000000local db = 'blog' local luasql = require "luasql.mysql" local orm = require "orbit.model" local env = luasql() local conn = env:connect(db, "root", "password") local mapper = orm.new("toycms_", conn, "mysql") -- Table post local t = mapper:new('post') -- Record 1 local rec = { ["id"] = 1, ["user_id"] = 1, ["published"] = true, ["body"] = "## General FAQ\ \ ### What is Kepler?\ \ Kepler is a a set of components for Lua that make up a powerful Web development platform. It is also the name of the project that is developing the Kepler platform.\ \ ### Why \"Kepler\"?\ \ Johannes Kepler was the astronomer that first explained that the tides are caused by the Moon. \"Lua\" means Moon in Portuguese, so the name \"Kepler\" tries to hint that some new tides may soon be caused by Lua... :o)\ \ ### What is Lua?\ \ Lua is a programming language that offers a very impressive set of features while keeping everything fast, small and portable. The Kepler Platform uses these features to offer a faster, smaller and more portable way to develop Web applications. See [[Lua]] for more information.\ \ ### What is a Web application?\ \ Web applications (also known as Web apps) are programs that are used through a Web browser. Every time you search for something with Google, read mail with Hotmail or browse Amazon you are using a Web application. Some other examples would be discussion forums, a blog or a weather site.\ \ ### What is a Web development platform?\ \ Web applications can be developed in different ways, from a hands-on approach to a very structured one. A Web development platform offers the developer a number of features that make the development of Web applications a lot easier. Instead of developing the application from scratch, the developer can benefit from the building blocks of the Web platform.\ \ ### Why build/use another Web development platform?\ \ There are a number of great Web development platforms out there but none balances power, size and flexibility quite like Kepler does.\ \ ### Is Kepler better than PHP/Java/.Net/...?\ \ That depends on what is your goal. Those platforms are surely good solutions for Web Development but sometimes they turn out to be too big, too rigid or just too unportable for the job. That's precisely where Kepler shines.\ \ ### What does Kepler offer for the developer?\ \ Kepler offers a Core plus a small but powerful combination of components. You have components for SQL Database access, XML parsing, Logging, ZIP manipulation and some others.\ \ ### What is the Kepler Core?\ \ The Kepler Core is the minimum set of components of Kepler:\ \ - [[CGILua]] for page generation\ - [[LuaSocket]] for TCP/UDP sockets \ \ ### What is the Kepler Platform?\ \ The Kepler Platform includes the Kepler Core plus a defined set of components:\ \ - [[LuaExpat]] for XML parsing\ - [[LuaFileSystem]]\ - [[LuaLogging]]\ - [[LuaSQL]] for database access\ - [[LuaZIP]] for ZIP manipulation \ \ ### Why separate the Kepler Core from the Kepler Platform?\ \ If you don't need all the Kepler Platform components or prefer to add your own components, you can simply get only the Kepler Core as a starting point. But if you choose to develop for the Kepler Platform you can benefit from some important points:\ \ - you will be able to easily upgrade your development platform as Kepler continues to evolve.\ - you will be using the same set of components as other Kepler Platform developers, making it easier to exchange ideas and experience.\ - you can be assured of the portability of your Web application for other environments, as long as those environments also run the Kepler Platform. \ \ ### Do I need to use the Kepler Platform to use the Kepler Project components?\ \ Not at all! The components developed by the Kepler Project can be used in any Lua based system. You can compile them from the source files or use the binary versions, both available free of charge on LuaForge.\ \ ### What about the licensing and pricing models?\ \ Kepler and Lua are free software: they can be used for both academic and commercial purposes at absolutely no cost. There are no royalties or GNU-like \"copyleft\" restrictions. Kepler and Lua qualifies as Open Source software. Their licenses are compatible with GPL. Kepler is not in the public domain and the Kepler Project keeps its copyright. (See also: [[License]].)\ \ ### What is CGILua?\ \ CGILua is the main component of the Kepler Core. It is a tool for creating dynamic Web pages and manipulating input data from Web forms. Among other functions, CGILua is the component responsible for the user interface programming side of your Web application, while the remaining ones handle the logic and data of your Web application.\ \ One of the big advantages of CGILua is its abstraction of the underlying Web server. You can develop a CGILua application for one Web server and run it on any other Web server that supports CGILua. See [[CGILua]] for more details.\ \ ### Do I have to use Kepler to use CGILua?\ \ No, although it is probably a lot easier to get Kepler and simply start using CGILua than to get CGILua's source and build a launcher for it from scratch. You may also benefit from the fact that Kepler includes lot of ready to use CGILua launchers so you have more choices of Web servers.\ \ ### What are CGILua launchers?\ \ A CGILua launcher is the mechanism that allows a Web server to execute and communicate with CGILua and its Web applications.\ \ ### Which CGILua launchers are available?\ \ Kepler currently offers the following set of CGILua launchers:\ \ - CGI\ - FastCGI\ - mod_lua (for Apache)\ - ISAPI (for Microsoft IIS)\ - [[Xavante]] (a Lua Web server that supports CGILua natively) \ \ You can choose your launcher based on its size, ease of use, portability or performance. You can start using a simpler launcher and then migrate to a more advanced one without any changes to your application.\ \ With this flexibility you can for example start your development locally on your Windows system running CGI and then move to a Linux server running mod_lua or even to a mobile device running Xavante.\ \ ### What if my Web server is not supported?\ \ If your target Web server does not offer any of the existent connection methods or if you would prefer to use a different connection method, you have the option of creating a CGILua launcher for the target Web server.\ \ ### How can I create a new CGILua launcher?\ \ A CGILua launcher implements SAPI, the Server API. SAPI consists in a set of functions that once implemented for a specific Web server architecture allows the execution of CGILua and its Web applications on it.\ \ ### How ready to use is Kepler?\ \ Kepler development is an ongoing process, and you can check the latest release at the Download page. Instructions for installation on Unix and Windows can be found at the Documentation page.\ \ You can also check the [[Status]] page for the incoming releases.\ \ ### Who is already using Kepler?\ \ Kepler is already being used by PUC-Rio and Hands on professional applications.\ \ ### Is there a mailing list for Kepler?\ \ Yes! Kepler questions can be posted on the Kepler Project [[Mailing List]].\ \ ### How can I help?\ \ There are a lot of ways to help the project and the team.\ \ One way is to use Kepler and provide some feedback. If you want to follow more closely, you can join the Kepler Project list or the Kepler forums on LuaForge.\ \ You can also help developing and debugging the existing modules, as much as helping document the platform and its modules. Please go to the [[Developers]] section for more information for that.\ \ Another way to help would by buying something from Amazon through the PiL links on LuaForge and the Kepler sites. Doing that you'll be helping gather resources for the Kepler team.\ \ For every product (not just PiL) bought after entering Amazon through the links we get from 2% to 5% of the product price as Amazon credits. Those credits are used to buy books for the team, so we can stay sharp and deliver the goods. :o)\ \ For those interested in helping us this way, just remember that Amazon only considers products added to the cart after you enter Amazon through the Kepler links. Anything in the cart that was added during a different visit to the store will not count for us (though it may count for another Amazon partner). \ \ ", ["published_at"] = 1183750080, ["image"] = "", ["external_url"] = "", ["comment_status"] = "closed", ["section_id"] = 2, ["n_comments"] = 1, ["abstract"] = "", ["title"] = "FAQ"} rec = t:new(rec) rec:save(true) -- Record 2 local rec = { ["id"] = 2, ["user_id"] = 1, ["published"] = true, ["body"] = "## What is Kepler?\ \ **The Kepler project aims to collaboratively create an extremely portable Web development platform based on the Lua programming language, offering both flexibility and conceptual simplicity.**\ \ Kepler is an open source platform for developing Web applications in [[Lua]]. Lua is a programming language that offers a very impressive set of features while keeping everything fast, small and portable. Kepler is implemented as a set of Lua components and offers the same advantages as Lua: it is simple, extremely portable, light, extensible and offers a very flexible licence. It allows the use of XHTML, SQL, XML, Zip and other standards. There are a number of great Web development platforms out there but none balances power, size and flexibility quite like Kepler does.\ \ The Lua community is constantly contributing with more modules that can be used with Kepler, most of those modules are catalogued on LuaForge and new ones keep coming.\ \ ", ["published_at"] = 1183750200, ["image"] = "", ["external_url"] = "", ["comment_status"] = "closed", ["section_id"] = 2, ["n_comments"] = 1, ["abstract"] = "", ["title"] = "About"} rec = t:new(rec) rec:save(true) -- Record 3 local rec = { ["id"] = 3, ["user_id"] = 1, ["published"] = true, ["body"] = "", ["published_at"] = 1183752420, ["image"] = "", ["external_url"] = "http://slashdot.org", ["comment_status"] = "closed", ["section_id"] = 3, ["n_comments"] = 1, ["abstract"] = "", ["title"] = "Slashdot"} rec = t:new(rec) rec:save(true) -- Record 4 local rec = { ["id"] = 4, ["user_id"] = 1, ["published"] = true, ["body"] = "", ["published_at"] = 1183752420, ["image"] = "", ["external_url"] = "http://news.google.com", ["comment_status"] = "closed", ["section_id"] = 3, ["n_comments"] = 1, ["abstract"] = "", ["title"] = "Google News"} rec = t:new(rec) rec:save(true) -- Record 5 local rec = { ["id"] = 5, ["user_id"] = 1, ["published"] = true, ["body"] = "", ["published_at"] = 1183752480, ["image"] = "", ["external_url"] = "http://www.wikipedia.org", ["comment_status"] = "closed", ["section_id"] = 3, ["n_comments"] = 1, ["abstract"] = "", ["title"] = "Wikipedia"} rec = t:new(rec) rec:save(true) -- Record 6 local rec = { ["id"] = 6, ["user_id"] = 1, ["published"] = true, ["body"] = "Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ ", ["published_at"] = 1096406940, ["image"] = "", ["external_url"] = "", ["comment_status"] = "moderated", ["section_id"] = 1, ["n_comments"] = 0, ["abstract"] = "", ["title"] = "Order Now And You Also Get A Attack Nose"} rec = t:new(rec) rec:save(true) -- Record 7 local rec = { ["id"] = 7, ["body"] = "\ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ ", ["published_at"] = 1096941480, ["title"] = "The Care And Feeding Of Your Sleeping Bicycle", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 8 local rec = { ["id"] = 8, ["body"] = "\ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ ", ["published_at"] = 1097257260, ["title"] = "Now Anybody Can Make President", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 2} rec = t:new(rec) rec:save(true) -- Record 9 local rec = { ["id"] = 9, ["body"] = "\ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ ", ["published_at"] = 1097787720, ["title"] = "'Star Wars' As Written By A Princess", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 10 local rec = { ["id"] = 10, ["body"] = "\ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ ", ["published_at"] = 1098112500, ["title"] = "What I Learned From An Elephant", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 1} rec = t:new(rec) rec:save(true) -- Record 11 local rec = { ["id"] = 11, ["body"] = "\ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ ", ["published_at"] = 1099335240, ["title"] = "Today, The World - Tomorrow, The Mixed-Up Dice", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 2} rec = t:new(rec) rec:save(true) -- Record 12 local rec = { ["id"] = 12, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ ", ["published_at"] = 1100140320, ["title"] = "The Funniest Joke About A Grandmother's Tree", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 2} rec = t:new(rec) rec:save(true) -- Record 13 local rec = { ["id"] = 13, ["body"] = "\ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ ", ["published_at"] = 1101168000, ["title"] = "Dr. Jekyll And Mr. Bear", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 2} rec = t:new(rec) rec:save(true) -- Record 14 local rec = { ["id"] = 14, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ ", ["published_at"] = 1102720200, ["title"] = "Christmas Shopping For A Racing Ark", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 3} rec = t:new(rec) rec:save(true) -- Record 15 local rec = { ["id"] = 15, ["body"] = "\ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ ", ["published_at"] = 1102968180, ["title"] = "Once Upon A Guardian Dinosaur", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 1} rec = t:new(rec) rec:save(true) -- Record 16 local rec = { ["id"] = 16, ["body"] = "\ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ ", ["published_at"] = 1103047500, ["title"] = "The Mystery Of Lego Pirate", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 1} rec = t:new(rec) rec:save(true) -- Record 17 local rec = { ["id"] = 17, ["body"] = "\ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ ", ["published_at"] = 1104870420, ["title"] = "Thomas Edison Invents The Guardian Rollercoaster", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 1} rec = t:new(rec) rec:save(true) -- Record 18 local rec = { ["id"] = 18, ["body"] = "\ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ ", ["published_at"] = 1104872820, ["title"] = "Today, The World - Tomorrow, The Complicated Moonlight", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 19 local rec = { ["id"] = 19, ["body"] = "\ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ ", ["published_at"] = 1107454020, ["title"] = "'Star Wars' As Written By A Scary Bat", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 20 local rec = { ["id"] = 20, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ ", ["published_at"] = 1107655200, ["title"] = "Anatomy Of A Funny Day", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 1} rec = t:new(rec) rec:save(true) -- Record 21 local rec = { ["id"] = 21, ["body"] = "\ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ ", ["published_at"] = 1109017860, ["title"] = "On The Trail Of The Electric Desk", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 22 local rec = { ["id"] = 22, ["body"] = "\ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ ", ["published_at"] = 1112321220, ["title"] = "My Coach Is A New, Improved Bear", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 23 local rec = { ["id"] = 23, ["body"] = "\ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ ", ["published_at"] = 1115832420, ["title"] = "My Son, The Lost Banana", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 24 local rec = { ["id"] = 24, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ ", ["published_at"] = 1116263400, ["title"] = "The Olympic Competition Won By An Automatic Monkey", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 25 local rec = { ["id"] = 25, ["body"] = "\ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ ", ["published_at"] = 1116268920, ["title"] = "The Olympic Competition Won By An Purple Bicycle", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 26 local rec = { ["id"] = 26, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ ", ["published_at"] = 1116340140, ["title"] = "Marco Polo Discovers The Complicated Spoon", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 27 local rec = { ["id"] = 27, ["body"] = "\ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ ", ["published_at"] = 1116439080, ["title"] = "The Mystery Of Horse", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 28 local rec = { ["id"] = 28, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ ", ["published_at"] = 1116733560, ["title"] = "Now Anybody Can Make Miniature Nose", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 29 local rec = { ["id"] = 29, ["body"] = "\ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ ", ["published_at"] = 1116793620, ["title"] = "My Daughter, The Spoon", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 30 local rec = { ["id"] = 30, ["body"] = "\ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ ", ["published_at"] = 1116848940, ["title"] = "Dental Surgery On A Desert Elephant", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 31 local rec = { ["id"] = 31, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ ", ["published_at"] = 1117480740, ["title"] = "On The Trail Of The Automatic Giant", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 32 local rec = { ["id"] = 32, ["body"] = "\ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ ", ["published_at"] = 1117649280, ["title"] = "What I Learned From An Football", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 33 local rec = { ["id"] = 33, ["body"] = "\ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ ", ["published_at"] = 1117716960, ["title"] = "Now Anybody Can Make Attack Wolf", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 1} rec = t:new(rec) rec:save(true) -- Record 34 local rec = { ["id"] = 34, ["body"] = "\ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ ", ["published_at"] = 1118028360, ["title"] = "Avast, Me Invisible Twin Fish", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 2} rec = t:new(rec) rec:save(true) -- Record 35 local rec = { ["id"] = 35, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ ", ["published_at"] = 1118244480, ["title"] = "Around The World With A Blustery Banana", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 36 local rec = { ["id"] = 36, ["body"] = "\ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ ", ["published_at"] = 1119411720, ["title"] = "Mr. McMullet, The Flying Tree", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 37 local rec = { ["id"] = 37, ["body"] = "\ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ ", ["published_at"] = 1119571800, ["title"] = "Visit Fun World And See The Rare Recycled Clown", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 38 local rec = { ["id"] = 38, ["body"] = "\ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ ", ["published_at"] = 1119893580, ["title"] = "Wyoming Jones And The Secret Twin Canadian Bat", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 39 local rec = { ["id"] = 39, ["body"] = "\ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ ", ["published_at"] = 1121213220, ["title"] = "Wyoming Jones And The Clown", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 1} rec = t:new(rec) rec:save(true) -- Record 40 local rec = { ["id"] = 40, ["body"] = "\ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ ", ["published_at"] = 1125083340, ["title"] = "Marco Polo Discovers The Accountant", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 3} rec = t:new(rec) rec:save(true) -- Record 41 local rec = { ["id"] = 41, ["body"] = "\ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ ", ["published_at"] = 1128714240, ["title"] = "Playing Poker With A Tree", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 1} rec = t:new(rec) rec:save(true) -- Record 42 local rec = { ["id"] = 42, ["body"] = "\ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ ", ["published_at"] = 1144002600, ["title"] = "Barney And The Rollercoaster", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 43 local rec = { ["id"] = 43, ["body"] = "\ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ ", ["published_at"] = 1144087620, ["title"] = "Today, The World - Tomorrow, The Purple Money", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 44 local rec = { ["id"] = 44, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ ", ["published_at"] = 1144204980, ["title"] = "I'm My Own Desert Friend", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 45 local rec = { ["id"] = 45, ["body"] = "\ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ ", ["published_at"] = 1144371120, ["title"] = "I Have To Write About My Blustery Funny Nose", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 46 local rec = { ["id"] = 46, ["body"] = "\ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ ", ["published_at"] = 1144445280, ["title"] = "Once Upon A Complicated Duck", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 47 local rec = { ["id"] = 47, ["body"] = "\ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ ", ["published_at"] = 1144591560, ["title"] = "On The Trail Of The Lost Chicken", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 48 local rec = { ["id"] = 48, ["body"] = "\ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ ", ["published_at"] = 1145244840, ["title"] = "Way Out West With The Green Giant", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 49 local rec = { ["id"] = 49, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ ", ["published_at"] = 1145394900, ["title"] = "No Man Is A Monkey", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 50 local rec = { ["id"] = 50, ["body"] = "\ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ ", ["published_at"] = 1145988720, ["title"] = "Where To Meet An Impossible Friend", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 51 local rec = { ["id"] = 51, ["body"] = "\ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ ", ["published_at"] = 1146700800, ["title"] = "Barney And The Hungry Desk", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 5} rec = t:new(rec) rec:save(true) -- Record 52 local rec = { ["id"] = 52, ["body"] = "\ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ ", ["published_at"] = 1147146240, ["title"] = "Way Out West With The Furry Super Wolf", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 1} rec = t:new(rec) rec:save(true) -- Record 53 local rec = { ["id"] = 53, ["body"] = "\ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ ", ["published_at"] = 1147232220, ["title"] = "The Mystery Of Lego Chicken", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 5} rec = t:new(rec) rec:save(true) -- Record 54 local rec = { ["id"] = 54, ["body"] = "\ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ ", ["published_at"] = 1149614880, ["title"] = "I Rode Friendly Grandmother's Mixed-Up Chocolate", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 4} rec = t:new(rec) rec:save(true) -- Record 55 local rec = { ["id"] = 55, ["body"] = "\ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ ", ["published_at"] = 1149863280, ["title"] = "Christmas Shopping For A New, Improved Ark", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 56 local rec = { ["id"] = 56, ["body"] = "\ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ ", ["published_at"] = 1150032780, ["title"] = "The Funniest Joke About A Scary Ark", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Record 57 local rec = { ["id"] = 57, ["body"] = "\ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ ", ["published_at"] = 1153248060, ["title"] = "Where To Meet An Chicken", ["comment_status"] = "unmoderated", ["section_id"] = 1, ["published"] = true, ["user_id"] = 1, ["n_comments"] = 0} rec = t:new(rec) rec:save(true) -- Table comment local t = mapper:new('comment') -- Record 1 local rec = { ["post_id"] = 54, ["approved"] = true, ["body"] = "\ One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, it's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be.\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ ", ["url"] = "", ["id"] = 1, ["author"] = "John Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 2 local rec = { ["post_id"] = 53, ["approved"] = true, ["body"] = "\ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 3, ["author"] = "Curly", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 3 local rec = { ["post_id"] = 53, ["approved"] = true, ["body"] = "\ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ ", ["url"] = "", ["id"] = 4, ["author"] = "Larry", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 4 local rec = { ["post_id"] = 53, ["approved"] = true, ["body"] = "\ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 5, ["author"] = "Larry", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 5 local rec = { ["post_id"] = 53, ["approved"] = true, ["body"] = "\ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ ", ["url"] = "", ["id"] = 6, ["author"] = "Curly", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 6 local rec = { ["post_id"] = 52, ["approved"] = true, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ ", ["url"] = "", ["id"] = 7, ["author"] = "Curly", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 7 local rec = { ["post_id"] = 51, ["approved"] = true, ["body"] = "\ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ ", ["url"] = "", ["id"] = 8, ["author"] = "Jane Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 8 local rec = { ["post_id"] = 51, ["approved"] = true, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ ", ["url"] = "", ["id"] = 9, ["author"] = "Larry", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 9 local rec = { ["post_id"] = 51, ["approved"] = true, ["body"] = "\ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ ", ["url"] = "", ["id"] = 10, ["author"] = "John Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 10 local rec = { ["post_id"] = 51, ["approved"] = true, ["body"] = "\ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ ", ["url"] = "", ["id"] = 11, ["author"] = "Jane Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 11 local rec = { ["post_id"] = 51, ["approved"] = true, ["body"] = "\ Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune. If you have a problem and no one else can help, and if you can find them, maybe you can hire the A-team.\ \ ", ["url"] = "", ["id"] = 12, ["author"] = "Larry", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 12 local rec = { ["post_id"] = 41, ["approved"] = true, ["body"] = "\ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ ", ["url"] = "", ["id"] = 13, ["author"] = "Moe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 13 local rec = { ["post_id"] = 40, ["approved"] = true, ["body"] = "\ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ ", ["url"] = "", ["id"] = 14, ["author"] = "Jane Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 14 local rec = { ["post_id"] = 40, ["approved"] = true, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 15, ["author"] = "Moe", ["created_at"] = 1183757201, ["email"] = "mascarenhas@acm.org"} rec = t:new(rec) rec:save(true) -- Record 15 local rec = { ["post_id"] = 40, ["approved"] = true, ["body"] = "\ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ ", ["url"] = "", ["id"] = 16, ["author"] = "John Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 16 local rec = { ["post_id"] = 39, ["approved"] = true, ["body"] = "\ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 17, ["author"] = "Moe", ["created_at"] = 1183757201, ["email"] = "mascarenhas@acm.org"} rec = t:new(rec) rec:save(true) -- Record 17 local rec = { ["post_id"] = 34, ["approved"] = true, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 18, ["author"] = "Curly", ["created_at"] = 1183757201, ["email"] = "mascarenhas@acm.org"} rec = t:new(rec) rec:save(true) -- Record 18 local rec = { ["post_id"] = 34, ["approved"] = true, ["body"] = "\ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 19, ["author"] = "Jane Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 19 local rec = { ["post_id"] = 33, ["approved"] = true, ["body"] = "\ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ ", ["url"] = "", ["id"] = 20, ["author"] = "Moe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 20 local rec = { ["post_id"] = 20, ["approved"] = true, ["body"] = "\ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 21, ["author"] = "Curly", ["created_at"] = 1183757201, ["email"] = "mascarenhas@acm.org"} rec = t:new(rec) rec:save(true) -- Record 21 local rec = { ["post_id"] = 17, ["approved"] = true, ["body"] = "\ Knight Rider, a shadowy flight into the dangerous world of a man who does not exist. Michael Knight, a young loner on a crusade to champion the cause of the innocent, the helpless in a world of criminals who operate above the law.\ \ ", ["url"] = "", ["id"] = 22, ["author"] = "Moe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 22 local rec = { ["post_id"] = 16, ["approved"] = true, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ ", ["url"] = "", ["id"] = 23, ["author"] = "Curly", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 23 local rec = { ["post_id"] = 15, ["approved"] = true, ["body"] = "\ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ ", ["url"] = "", ["id"] = 24, ["author"] = "Jane Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 24 local rec = { ["post_id"] = 14, ["approved"] = true, ["body"] = "\ Hey there where ya goin', not exactly knowin', who says you have to call just one place home. He's goin' everywhere, B.J. McKay and his best friend Bear. He just keeps on movin', ladies keep improvin', every day is better than the last. New dreams and better scenes, and best of all I don't pay property tax. Rollin' down to Dallas, who's providin' my palace, off to New Orleans or who knows where. Places new and ladies, too, I'm B.J. McKay and this is my best friend Bear.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ ", ["url"] = "", ["id"] = 25, ["author"] = "Larry", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 25 local rec = { ["post_id"] = 14, ["approved"] = true, ["body"] = "\ Just the good ol' boys, never meanin' no harm. Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.\ \ Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity. Top Cat! The indisputable leader of the gang. He's the boss, he's a pip, he's the championship. He's the most tip top, Top Cat.\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 26, ["author"] = "Larry", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 26 local rec = { ["post_id"] = 14, ["approved"] = true, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ ", ["url"] = "", ["id"] = 27, ["author"] = "Jane Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 27 local rec = { ["post_id"] = 13, ["approved"] = true, ["body"] = "\ 80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.\ \ ", ["url"] = "", ["id"] = 28, ["author"] = "John Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 28 local rec = { ["post_id"] = 13, ["approved"] = true, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ ", ["url"] = "", ["id"] = 29, ["author"] = "Curly", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 29 local rec = { ["post_id"] = 12, ["approved"] = true, ["body"] = "\ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 30, ["author"] = "Jane Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 30 local rec = { ["post_id"] = 12, ["approved"] = true, ["body"] = "\ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ ", ["url"] = "", ["id"] = 31, ["author"] = "Jane Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 31 local rec = { ["post_id"] = 11, ["approved"] = true, ["body"] = "\ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ ", ["url"] = "", ["id"] = 32, ["author"] = "John Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 32 local rec = { ["post_id"] = 11, ["approved"] = true, ["body"] = "\ Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all.\ \ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ ", ["url"] = "", ["id"] = 33, ["author"] = "Moe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 33 local rec = { ["post_id"] = 10, ["approved"] = true, ["body"] = "\ Children of the sun, see your time has just begun, searching for your ways, through adventures every day. Every day and night, with the condor in flight, with all your friends in tow, you search for the Cities of Gold. Ah-ah-ah-ah-ah... wishing for The Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold. Do-do-do-do ah-ah-ah, do-do-do-do, Cities of Gold. Do-do-do-do, Cities of Gold. Ah-ah-ah-ah-ah... some day we will find The Cities of Gold.\ \ There's a voice that keeps on calling me. Down the road, that's where I'll always be. Every stop I make, I make a new friend. Can't stay for long, just turn around and I'm gone again. Maybe tomorrow, I'll want to settle down, Until tomorrow, I'll just keep moving on.\ \ ", ["url"] = "", ["id"] = 34, ["author"] = "Jane Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 34 local rec = { ["post_id"] = 8, ["approved"] = true, ["body"] = "\ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ I never spend much time in school but I taught ladies plenty. It's true I hire my body out for pay, hey hey. I've gotten burned over Cheryl Tiegs, blown up for Raquel Welch. But when I end up in the hay it's only hay, hey hey. I might jump an open drawbridge, or Tarzan from a vine. 'Cause I'm the unknown stuntman that makes Eastwood look so fine.\ \ ", ["url"] = "", ["id"] = 35, ["author"] = "Larry", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 35 local rec = { ["post_id"] = 8, ["approved"] = true, ["body"] = "\ This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself. By the way, my name is Max. I take care of both of them, which ain't easy, 'cause when they met it was MURDER!\ \ Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. Birds taught me to sing, when they took me to their king, first I had to fly, in the sky so high so high, so high so high so high, so - if you want to sing this way, think of what you'd like to say, add a tune and you will see, just how easy it can be. Treacle pudding, fish and chips, fizzy drinks and liquorice, flowers, rivers, sand and sea, snowflakes and the stars are free. La la la la la, la la la la la la la, la la la la la la la, la la la la la la la la la la la la la, so - Barnaby The Bear's my name, never call me Jack or James, I will sing my way to fame, Barnaby the Bear's my name. \ \ ", ["url"] = "", ["id"] = 36, ["author"] = "Moe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 36 local rec = { ["post_id"] = 5, ["approved"] = true, ["body"] = "\ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ Thunder, thunder, thundercats, Ho! Thundercats are on the move, Thundercats are loose. Feel the magic, hear the roar, Thundercats are loose. Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thunder, thunder, thunder, Thundercats! Thundercats!\ \ ", ["url"] = "", ["id"] = 37, ["author"] = "Jane Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 37 local rec = { ["post_id"] = 5, ["approved"] = true, ["body"] = "\ Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. He's got style, a groovy style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number one super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic!\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 38, ["author"] = "Moe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 38 local rec = { ["post_id"] = 4, ["approved"] = true, ["body"] = "\ Mutley, you snickering, floppy eared hound. When courage is needed, you're never around. Those medals you wear on your moth-eaten chest should be there for bungling at which you are best. So, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon, stop that pigeon. Howwww! Nab him, jab him, tab him, grab him, stop that pigeon now.\ \ ", ["url"] = "http://www.keplerproject.org", ["id"] = 39, ["author"] = "Jane Doe", ["created_at"] = 1183757201, ["email"] = ""} rec = t:new(rec) rec:save(true) -- Record 39 local rec = { ["post_id"] = 54, ["id"] = 40, ["approved"] = true, ["created_at"] = 1183757201, ["body"] = "\

    80 days around the world, we'll find a pot of gold just sitting where the rainbow's ending. Time - we'll fight against the time, and we'll fly on the white wings of the wind. 80 days around the world, no we won't say a word before the ship is really back. Round, round, all around the world. Round, all around the world. Round, all around the world. Round, all around the world.

    \ "} rec = t:new(rec) rec:save(true) -- Record 40 local rec = { ["post_id"] = 54, ["approved"] = true, ["body"] = "\

    Blatz blum plaz.

    \ ", ["id"] = 42, ["author"] = "Fabio Mascarenhas", ["created_at"] = 1183760795, ["email"] = "mascarenhas@gmail.com"} rec = t:new(rec) rec:save(true) -- Record 41 local rec = { ["post_id"] = 6, ["id"] = 43, ["approved"] = true, ["created_at"] = 1183761355, ["body"] = "\

    Foo bar blaz.

    \ "} rec = t:new(rec) rec:save(true) -- Table user local t = mapper:new('user') -- Record 1 local rec = { ["id"] = 1, ["name"] = "Fabio Mascarenhas", ["login"] = "admin", ["password"] = "admin"} rec = t:new(rec) rec:save(true) -- Table section local t = mapper:new('section') -- Record 1 local rec = { ["id"] = 1, ["description"] = "", ["title"] = "Blog Posts", ["tag"] = "blog-main"} rec = t:new(rec) rec:save(true) -- Record 2 local rec = { ["id"] = 2, ["description"] = "", ["title"] = "Pages", ["tag"] = "pages"} rec = t:new(rec) rec:save(true) -- Record 3 local rec = { ["id"] = 3, ["description"] = "", ["title"] = "Blogroll", ["tag"] = "blogroll"} rec = t:new(rec) rec:save(true) lua-orbit-2.2.1+dfsg/samples/toycms/populate_mysql_lablua.lua000066400000000000000000000756061227340735500244420ustar00rootroot00000000000000local db = 'lablua' local luasql = require "luasql.mysql" local orm = require "orbit.model" local env = luasql() local conn = env:connect(db, "root", "password") local mapper = orm.new("toycms_", conn, "mysql") -- Table post local t = mapper:new('post') -- Record 1 local rec = { ["id"] = 1, ["external_url"] = "", ["body"] = "

    About

    \ \

    Lablua is a research lab at PUC-Rio, affiliated with its\ Computer Science Department. It is dedicated to research\ about programming languages, with emphasis on research involving the Lua\ language. Lablua was founded on May 2004 by Prof. Roberto Ierusalimschy.\ Since then its members have produced one PhD thesis and two MSc dissertations.

    \ \

    Lua is a scripting language not totally unlike Tcl, Perl, or Python. Like Tcl, Lua is an \"embedded language\", in the sense that embedding the interpreter into your program is a trivial task, and it is very easy to interface Lua with other languages like C, C++, or even Fortran. Like Python, Lua has a clear and intuitive syntax. Like all those three, Lua is an interpreted language with dynamic typing, and with several reflexive facilities.

    \ \

    In these pages you can find information about current and past projects, publications and members. Please\ follow the links above to go to the other sections of the web site.

    \ \

    Contact

    \ \

    Lablua is situated at PUC-Rio's campus, near the Cardeal Leme building. Prof. Ierusalimschy's contact\ information is in his web page. You can also contact\ Lablua by phone: 55-21-3527-1497 Ext. 4523.

    ", ["published_at"] = 1183576020, ["image"] = "", ["title"] = "Home Page", ["comment_status"] = "closed", ["section_id"] = 1, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 2 local rec = { ["id"] = 2, ["external_url"] = "http://www.lua.org", ["body"] = "", ["published_at"] = 1183576020, ["image"] = "", ["title"] = "Lua.org", ["comment_status"] = "closed", ["section_id"] = 5, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 3 local rec = { ["id"] = 3, ["external_url"] = "http://luaforge.net/", ["body"] = "", ["published_at"] = 1183489980, ["image"] = "", ["title"] = "Luaforge", ["comment_status"] = "closed", ["section_id"] = 5, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 4 local rec = { ["id"] = 4, ["external_url"] = "http://www.lua.inf.puc-rio.br/luaclr", ["body"] = "", ["published_at"] = 1180984800, ["image"] = "", ["title"] = "LuaCLR", ["comment_status"] = "closed", ["section_id"] = 2, ["published"] = true, ["abstract"] = "

    LuaCLR is a newer implementation of\ Lua on the CLR that targets Lua 5.1 and compiles from \ source (without using the Lua parser and lexer).

    ", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 5 local rec = { ["id"] = 5, ["external_url"] = "", ["body"] = "

    libscript

    \ \

    \ libscript is a plugin-based library designed to add\ language-independent extensibility to applications.\

    \ \

    \ It allows to decouple an application from the virtual machines provided by the\ various scripting languages. The main library, libscript, is a thin layer that provides a\ language-independent scripting API, allowing the application to register its\ functions and invoke code to be performed. Libscript then invokes the\ appropriate plugin (libscript-python, libscript-ruby, libscript-lua, etc.)\ to run the code. This way, the application can support all those scripting\ languages without adding each of them as a dependency.\

    \ \

    \ libscript was developed by Hisham Muhammad as a case study for\ his MSc dissertation at PUC-RIO.\

    \ \

    For more information, please go the the Sourceforge page.

    \ \ ", ["published_at"] = 1183576860, ["image"] = "", ["title"] = "libscript", ["comment_status"] = "closed", ["section_id"] = 2, ["published"] = true, ["abstract"] = "

    libscript is a plugin-based library designed to add language-independent\ extensibility to applications.

    ", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 6 local rec = { ["id"] = 6, ["external_url"] = "", ["body"] = "

    LuaDec, Lua bytecode decompiler

    \ \

    Overview

    \ \

    LuaDec is a decompiler for the Lua language. It takes compiled Lua bytecodes and attempts to produce equivalent\ Lua source code on standard output. It targets Lua 5.0.2.

    \ \ \

    \ The decompiler performs two passes. The first pass is considered a \"preliminary\ pass\". Only two actions are performed: addresses of backward jumps are gathered\ for while constructs, and variables referenced by CLOSE\ \ instructions are taken note of in order to identify the point where explicit\ do blocks should be opened.\

    \

    \ The actual decompilation takes place in the second, \"main pass\". In this pass,\ the instructions are symbolically interpreted. As functions are traversed\ recursively, the symbolic content of registers are kept track of, as well as\ a few additional data structures: two register stacks, one for \"variable\ registers\" (registers currently allocated for variables) one for \"temporary\ registers\" (registers holding temporary values); and a list of boolean conditions. \

    \

    \ Instructions like ADD and MOVE combine the string\ representation of symbols and move them around in registers. Emission of actual\ statements is delayed until the temporaries stack is empty, so that constructs\ like a,b=b,a are processed correctly. \ \

    \

    \ The list of boolean conditions accumulate pairs of relational operators (or\ TESTs and jumps). The translation of a list into a boolean expression\ is done in three stages. In the first stage, jump addresses are checked to identify\ \"then\" and \"else\" addresses and to break the list into smaller lists in the case of\ nested if statements. In the second stage, the relations between the\ jumps is analyzed serially to devise a parenthization scheme. In the third scheme,\ taking into account the parenthization and an 'inversion' flag (used to tell\ \"jump-if-true\" from \"jump-if-false\" expressions), the expression is printed,\ recursively.\

    \

    \ Two forms of \"backpatching\" are used in the main processing pass: boolean conditions\ for while constructs are inserted in the marked addresses (as noted in\ the first pass), and do blocks are added as necessary, according to the\ liveness information of local variables.\ \

    \

    LuaDec is written by Hisham Muhammad, and is licensed\ under the same terms as Lua. Windows binaries contributed by Fabio Mascarenhas.

    \ \

    Status

    \ \

    \ LuaDec, in its current form, is not a complete decompiler. It does\ succeed in decompiling most of the Lua constructs, so it could be used as\ a tool to aid in retrieving lost sources.\

    \ \

    \ The situations where LuaDec \"get it wrong\" are usually related to deciding\ whether a sequence of relational constructs including TEST operators\ are part of an assignment or an if construct. Also, the \"single pass\"\ nature of the symbolic interpreter fails at some corner cases where there simply\ is not enough information in the sequence of operator/jump pairs to identify what\ are the \"then\" and \"else\" addresses. This is an example of such a case:\

    \ \
    \
    1       [2]     LOADNIL         0 2 0\
    2       [3]     JMP             0 16    ; to 19\
    3       [4]     EQ              0 1 250 ; - 2\
    4       [4]     JMP             0 2     ; to 7\
    5       [4]     TEST            2 2 1\
    6       [4]     JMP             0 5     ; to 12\
    7       [4]     EQ              0 1 251 ; - 3\
    8       [4]     JMP             0 3     ; to 12\
    9       [4]     LOADK           3 2     ; 1\
    10      [4]     TEST            3 3 1\
    11      [4]     JMP             0 0     ; to 12\
    12      [6]     LOADK           0 2     ; 1\
    13      [7]     JMP             0 7     ; to 21\
    14      [8]     LOADK           0 0     ; 2\
    15      [8]     JMP             0 3     ; to 19\
    16      [10]    LOADK           0 1     ; 3\
    17      [11]    JMP             0 3     ; to 21\
    18      [12]    LOADK           0 4     ; 4\
    19      [3]     TEST            1 1 1\
    20      [3]     JMP             0 -18   ; to 3\
    21      [14]    RETURN          0 1 0\
    
    \ \
    \
    local a, x, y\
    while x do\
       if ((x==2) and y) or ((x==3) and 1) or 0\
    \
       then\
          a = 1\
       do break end\
          a = 2\
       else\
          a = 3\
       do break end\
          a = 4\
       end\
       a = 5\
    end\
    
    \ \

    \ Notice that there is no reference to the \"else\" address in the highlighted sequence.\ Only with a more sophisticated block analysis it would be possible to identify the\ varying purposes of the JMP instructions at addresses 13, 15 and 17.\

    \ \

    \ For illustrational purposes, here are the results of running LuaDec on the\ bytecodes generated by the Lua demos included in the test/ subdirectory\ of the official Lua distribution, as of version 0.4.\

    \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
    bisect.lua - works
    cf.lua - works
    echo.lua - works
    env.lua - works
    factorial.lua - works
    fibfor.lua - works
    fib.lua - works
    globals.lua - works
    hello.lua - works
    life.lua - works
    luac.lua - works
    printf.lua - works
    readonly.lua - works
    sieve.lua - works
    sort.lua - works
    table.lua - works
    trace-calls.lua - fails assertion works (fixed in 0.4)
    trace-globals.lua - works
    undefined.lua - works
    xd.lua - works
    \ \

    \ \

    Running it

    \ \

    \ To try out LuaDec:\

    \ \
    \
    make\
    bin/luac test/life.lua\
    bin/luadec luac.out > newlife.lua\
    bin/lua newlife.lua\
    
    \ \

    \ LuaDec includes a -d flag, which displays the progress\ of the symbolic interpretation: for each bytecode, the variable stacks\ and the code generated so far are shown.\

    \ \

    Operation modes

    \ \

    \ In its default operation mode, LuaDec recursively processes the program functions,\ starting from the outmost chunk (\"main\"). When LuaDec detects a decompilation error\ (by doing sanity checks on its internal data structures), Luadec outputs the portion\ of the function decompiled so far, and resumes decompilation in the outer closure.\

    \ \

    \ There is an alternative operation mode, set with the -f flag,\ where all functions are decompiled separately. This does not generate a .lua file\ structured like the original program, but it is useful in the cases where a\ decompilation error makes a closure declaration \"unreachable\" in the default\ operation mode. This allows a larger portion of the sources to be restored in\ the event of errors.\

    \ \

    Download and Feedback

    \ \

    To download LuaDec, and send any comments, questions or bug reports, please go to the LuaForge page.

    \ \ ", ["published_at"] = 1183576920, ["image"] = "", ["title"] = "LuaDec", ["comment_status"] = "closed", ["section_id"] = 2, ["published"] = true, ["abstract"] = "

    LuaDec decompiles Lua bytecodes, reconstructing the original source code (or an approximation\ of it.

    ", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 7 local rec = { ["id"] = 7, ["external_url"] = "", ["body"] = "

    Lua2IL, a Lua to CIL compiler

    \ \

    Overview

    \ \

    Lua2IL compiles scripts written in the Lua language to\ Common Language Infrastructure (CLI) assemblies. The compiler generates pure managed Common\ Intermediate Language (CIL) code. Besides compiling scripts to CIL, Lua2IL also lets them\ interface with CLI objects written in other languages.

    \ \

    For an interpreted language, Lua2IL generates efficient code, with the code being\ about three times faster than similar JScript code compiled by the Microsoft JScript.NET\ compiler bundled with .NET Framework 1.1 (without type optimizations).

    \ \

    A paper about the Lua2IL compiler was published in a special edition of the\ Journal of Universal Computer Science. You can read the paper\ here.

    \ \

    Lua2IL is designed and implemented by Fabio Mascarenhas.

    \ \

    Download

    \ \

    The compiler is a prototype. It compiles the full Lua 5.0 language, but doesn't include\ most of the Lua standard library. You can download Lua2IL here.

    \ \

    Feedback

    \ \

    Please send questions or comments to Fabio Mascarenhas.

    \ \ ", ["published_at"] = 1183576980, ["image"] = "", ["title"] = "Lua2IL", ["comment_status"] = "closed", ["section_id"] = 2, ["published"] = true, ["abstract"] = "

    Lua2IL is a prototype of an implementation of the Lua language on the CLR. It converts\ Lua bytecodes to the CLR intermediate language, so Lua scripts can run on the CLR without\ the Lua interpreter.

    ", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 8 local rec = { ["id"] = 8, ["external_url"] = "", ["body"] = "

    LuaInterface: Scripting CLR objects with Lua

    \ \

    Overview

    \ \

    LuaInterface is a library for brdging the\ Lua language and Microsoft .NET platform's\ Common Language Runtime \ (CLR). LuaInterface is a full consumer of the Common Language Specification (CLS),\ so Lua scripts can use LuaInterface to instantiate CLR objects, access their properties,\ call their methods, and even handle their events with Lua functions. Any CLR program\ can also use LuaInterface to run Lua scripts and modify the scripts' environment. This is\ a short, working example of LuaInterface in action (it shows a window, with two buttons,\ on the screen):

    \ \
    \
        require(\"luanet\")\
        \
        Form = luanet.System.Windows.Forms.Form\
        Button = luanet.System.Windows.Forms.Button\
        Point = luanet.System.Drawing.Point\
        \
        mainForm = Form()\
        buttonOk = Button()\
        buttonCancel = Button()\
        \
        buttonOk.Text = \"Ok\"\
        buttonCancel.Text = \"Cancel\"\
        buttonOk.Location = Point(10,10)\
        buttonCancel.Location = Point(buttonOk.Left, buttonOk.Height +\
          buttonOk.Top + 10)\
        mainForm.Controls:Add(buttonOk)\
        mainForm.Controls:Add(buttonCancel)\
        mainForm.StartPosition = \
          luanet.System.Windows.Forms.FormStartPosition.CenterScreen\
        \
        function handleMouseUp(sender,args)\
          print(sender:ToString() .. \" MouseUp!\")\
        end\
        \
        handlerUp = buttonOk.MouseUp:Add(handleMouseUp)\
        handlerClick = buttonCancel.Click:Add(os.exit)\
        \
        mainForm:ShowDialog()\
    
    \ \

    You can find more about LuaInterface by reading this paper,\ published in the proceedings of the 8th Brazilian Symposium on Programming Languages, or\ download the library and try it out.

    \ \

    Fabio Mascarenhas did the initial design and implementation of LuaInterface, and it is now being actively maintained by Kevin Hester.

    \ \

    Download

    \ \

    LuaInterface is free software (MIT license), and can be downloaded from its LuaForge page. There are versions for Lua 5.1 and 5.0, and for use in versions 1.1 and 2.0 of the CLR.

    \ \ \

    Feedback

    \ \

    Please send comments, suggestions or bug reports through the LuaForge page.

    \ \ ", ["published_at"] = 1183577040, ["image"] = "", ["title"] = "LuaInterface", ["comment_status"] = "closed", ["section_id"] = 2, ["published"] = true, ["abstract"] = "

    LuaInterface is a bridge between Lua and the Common Language Runtime. It lets Lua\ scripts instantiate and use CLR objects, and makes it easier for CLR programs to embed\ the Lua Interpreter.

    ", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 9 local rec = { ["id"] = 9, ["external_url"] = "", ["body"] = "

    Lua.NET: Integrating Lua with the CLI

    \ \

    Lua is a scripting language not totally unlike \ Tcl, Perl, or Python. Like Tcl, Lua is an \"embedded language\", in the sense that embedding \ the interpreter into your\ program is a trivial task, and it is very easy to interface Lua with other languages\ like C, C++, or even Fortran. Like Python, Lua has a clear and intuitive syntax. \ Like all those three, Lua is an interpreted language with dynamic typing, and with \ several reflexive facilities.

    \ \ \

    What sets Lua apart from those languages is its portability, simplicity, and small size. \ Lua is written in ANSI C, and runs without modifications in almost any platform (MS-DOS, \ all versions of Windows, all flavors of Unix, plus X-Box, PlayStation II, OS/2, BeOS, \ EPOC, etc.). The whole program lua.exe has less than 200 Kbytes. Its simplicity led other \ groups to adopt Lua as a scripting language for other scripting languages (see, for \ instance, Ruby-Lua).

    \ \

    Currently, Lua has a strong presence whenever programmers need a light, efficient,\ and portable language. It is being used by some tens of thousands programmers around \ the world, both in research and in industrial projects. Lua has been successfully \ used in games (e.g. Grim Fandango, Escape from Monkey Island, MK2, Baldur's Gate), \ in robots (e.g. Crazy Ivan, that won the Danish RoboCup in 2000 and 2001), and \ several other applications (e.g. a hot-swappable Ethernet switch (CPC4400), a genetic \ sequence visualization system (GUPPY), \"The most Linux on one floppy disk\" (tomsrtbt)). \ An extended list of applications using Lua can be found \ here.

    \ \

    The Lua.NET project integrates Lua with the \ Common Language Infrastructure,\ a framework for language interoperability. \ This integration allows Lua \ to act both as a \"client\" language and as a \"server\" language, although with a\ limited capacity for the latter. As a client, Lua scripts can access components available \ through the CLI. As a server, Lua scripts can implement new components accessible by \ other languages integrated with the CLI.

    \ \

    Because Lua is an interpreted language with dynamic typing, its integration with \ the CLI demands a dynamic nature. Lua.NET employs two approaches for this integration. \ The first uses the same techniques used to implement LuaOrb, \ a scripting tool that can access and implement CORBA, COM and Java \ components. The approach is implemented by the LuaInterface library.

    \ \ \

    The second approach compiles Lua to the CLI's Common Intermediate \ Language, instead of its own bytecode representation. This approach is implemented\ by the Lua2IL compiler.

    \ \

    The authors of the Lua.NET project are Roberto Ierusalimschy,\ Renato Cequeira and Fabio Mascarenhas.\ The project is sponsored by Microsoft Research\ \ and CAPES.

    \ \

    Publications

    \ \

    Fabio Mascarenhas, Roberto Ierusalimschy. LuaInterface: Scripting the .NET CLR with Lua. Journal of Universal Computer Science, 10(7):892-908, July 2004.

    \ \

    Fabio Mascarenhas, Roberto Ierusalimschy. Running Lua Scripts on the CLR Through Bytecode Translation. Due for publication in a special edition of the Journal of Universal Computer Science.

    \ \ ", ["published_at"] = 1183663440, ["image"] = "", ["title"] = "Lua.NET", ["comment_status"] = "closed", ["section_id"] = 2, ["published"] = true, ["abstract"] = "

    Lua.NET was a project sponsored by Microsoft Research\ to integrate Lua with the Common Language Runtime. It generated both LuaInterface and\ Lua2IL.

    ", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 10 local rec = { ["id"] = 10, ["external_url"] = "", ["body"] = "

    Running Lua scripts on the CLR through bytecode translation, by Fabio Mascarenhas and Roberto Ierusalimschy. Journal of Universal Computer Science 11 #7 (2005) 1275-1290.

    ", ["published_at"] = 1183577760, ["image"] = "", ["title"] = "Running Lua scripts on the CLR through bytecode translation", ["comment_status"] = "closed", ["section_id"] = 6, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 11 local rec = { ["id"] = 11, ["external_url"] = "", ["body"] = "

    Coroutines in Lua, by Ana Lcia de Moura, Noemi Rodriguez, and Roberto Ierusalimschy. Journal of Universal Computer Science 10 #7 (2004) 910-925.

    ", ["published_at"] = 1183491420, ["image"] = "", ["title"] = "Coroutines in Lua", ["comment_status"] = "closed", ["section_id"] = 6, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 12 local rec = { ["id"] = 12, ["external_url"] = "", ["body"] = "

    LuaInterface: Scripting .NET CLR with Lua, by Fabio Mascarenhas and Roberto Ierusalimschy. Journal of Universal Computer Science 10 #7 (2004) 892-909.

    ", ["published_at"] = 1183405020, ["image"] = "", ["title"] = "LuaInterface: Scripting .NET CLR with Lua", ["comment_status"] = "closed", ["section_id"] = 6, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 13 local rec = { ["id"] = 13, ["external_url"] = "", ["body"] = "

    Revisitando co-rotinas, by Ana Lcia de Moura. Ph.D. thesis, Department of Computer Science, PUC-Rio, Sep 2004.

    ", ["published_at"] = 1183577880, ["image"] = "", ["title"] = "Revisitando co-rotinas", ["comment_status"] = "closed", ["section_id"] = 7, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 14 local rec = { ["id"] = 14, ["external_url"] = "", ["body"] = "

    Estudo sobre APIs de Linguagens de Script, by Hisham Muhammad. M.Sc. dissertation, Department of Computer Science, PUC-Rio, Aug 2006.

    ", ["published_at"] = 1183491480, ["image"] = "", ["title"] = "Estudo sobre APIs de Linguagens de Script", ["comment_status"] = "closed", ["section_id"] = 7, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 15 local rec = { ["id"] = 15, ["external_url"] = "", ["body"] = "

    Integrao entre a linguagem Lua e o Common Language Runtime, by Fabio Mascarenhas. M.Sc. dissertation, Department of Computer Science, PUC-Rio, Mar 2004.", ["published_at"] = 1183405140, ["image"] = "", ["title"] = "Integrao entre a linguagem Lua e o Common Language Runtime", ["comment_status"] = "closed", ["section_id"] = 7, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 16 local rec = { ["id"] = 16, ["external_url"] = "", ["body"] = "

    A study on scripting language APIs, by Hisham Muhammad. M.Sc. dissertation (english translation), Department of Computer Science, PUC-Rio, Aug 2006.

    ", ["published_at"] = 1183577940, ["image"] = "", ["title"] = "A study on scripting language APIs", ["comment_status"] = "closed", ["section_id"] = 8, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 17 local rec = { ["id"] = 17, ["external_url"] = "", ["body"] = "

    Roberto Ierusalimschy, Associate Professor, Computer Science\ Department, PUC-Rio.

    ", ["published_at"] = 1183578360, ["image"] = "", ["title"] = "Roberto Ierusalimschy", ["comment_status"] = "closed", ["section_id"] = 9, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 18 local rec = { ["id"] = 18, ["external_url"] = "", ["body"] = "

    Fabio Mascarenhas, PhD Student, Computer Science Department, PUC-Rio.

    ", ["published_at"] = 1183578360, ["image"] = "", ["title"] = "Fabio Mascarenhas", ["comment_status"] = "closed", ["section_id"] = 10, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 19 local rec = { ["id"] = 19, ["external_url"] = "", ["body"] = "

    Srgio Medeiros, PhD Student, Computer Science Department, PUC-Rio.

    ", ["published_at"] = 1183491960, ["image"] = "", ["title"] = "Srgio Medeiros", ["comment_status"] = "closed", ["section_id"] = 10, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 20 local rec = { ["id"] = 20, ["external_url"] = "", ["body"] = "

    Alexandra Barros, MSc Student, Computer Science Department, PUC-Rio.

    ", ["published_at"] = 1183578420, ["image"] = "", ["title"] = "Alexandra Barros", ["comment_status"] = "closed", ["section_id"] = 11, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 21 local rec = { ["id"] = 21, ["external_url"] = "", ["body"] = "

    Hisham Muhammad, MSc Computer Science, PUC-Rio.

    ", ["published_at"] = 1183492020, ["image"] = "", ["title"] = "Hisham Muhammad", ["comment_status"] = "closed", ["section_id"] = 11, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Record 22 local rec = { ["id"] = 22, ["external_url"] = "", ["body"] = "

    Ana Lcia de Moura, PhD Computer Science, PUC-Rio.

    ", ["published_at"] = 1183405620, ["image"] = "", ["title"] = "Ana Lcia de Moura", ["comment_status"] = "closed", ["section_id"] = 11, ["published"] = true, ["abstract"] = "", ["user_id"] = 1} rec = t:new(rec) rec:save(true) -- Table comment local t = mapper:new('comment') -- Table user local t = mapper:new('user') -- Record 1 local rec = { ["id"] = 1, ["name"] = "Fabio Mascarenhas", ["login"] = "admin", ["password"] = "admin"} rec = t:new(rec) rec:save(true) -- Table section local t = mapper:new('section') -- Record 1 local rec = { ["id"] = 1, ["description"] = "", ["title"] = "Home", ["tag"] = "home"} rec = t:new(rec) rec:save(true) -- Record 2 local rec = { ["id"] = 2, ["description"] = "", ["title"] = "Projects", ["tag"] = "menu-projects"} rec = t:new(rec) rec:save(true) -- Record 3 local rec = { ["id"] = 3, ["description"] = "", ["title"] = "Publications", ["tag"] = "menu-publications"} rec = t:new(rec) rec:save(true) -- Record 4 local rec = { ["id"] = 4, ["description"] = "", ["title"] = "People", ["tag"] = "menu-people"} rec = t:new(rec) rec:save(true) -- Record 5 local rec = { ["id"] = 5, ["description"] = "", ["title"] = "Related Links", ["tag"] = "links"} rec = t:new(rec) rec:save(true) -- Record 6 local rec = { ["id"] = 6, ["description"] = "", ["title"] = "Papers", ["tag"] = "pubs-papers"} rec = t:new(rec) rec:save(true) -- Record 7 local rec = { ["id"] = 7, ["description"] = "", ["title"] = "Dissertations and Theses", ["tag"] = "pubs-theses"} rec = t:new(rec) rec:save(true) -- Record 8 local rec = { ["id"] = 8, ["description"] = "", ["title"] = "Drafts", ["tag"] = "pubs-drafts"} rec = t:new(rec) rec:save(true) -- Record 9 local rec = { ["id"] = 9, ["description"] = "", ["title"] = "Coordinator", ["tag"] = "people-coordinator"} rec = t:new(rec) rec:save(true) -- Record 10 local rec = { ["id"] = 10, ["description"] = "", ["title"] = "Current Members", ["tag"] = "people-current"} rec = t:new(rec) rec:save(true) -- Record 11 local rec = { ["id"] = 11, ["description"] = "", ["title"] = "Former Members", ["tag"] = "people-former"} rec = t:new(rec) rec:save(true) lua-orbit-2.2.1+dfsg/samples/toycms/templates/000077500000000000000000000000001227340735500213215ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/toycms/templates/aboutanything/000077500000000000000000000000001227340735500241755ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/toycms/templates/aboutanything/archive.html000066400000000000000000000012251227340735500265040ustar00rootroot00000000000000$import{"index_view"} $show_posts{ include_tags = {"blog-%"}, count = 7 }[[

    $date_string

    $title

    $markdown_body
    ]] lua-orbit-2.2.1+dfsg/samples/toycms/templates/aboutanything/base_styles.css000066400000000000000000000175211227340735500272320ustar00rootroot00000000000000/* Base Weblog (base-weblog.css) */ /* basic elements */ html { margin: 0; /* setting border: 0 hoses ie6 win window inner well border */ padding: 0; } body { margin: 0; /* setting border: 0 hoses ie5 win window inner well border */ padding: 0; font-family: verdana, 'trebuchet ms', sans-serif; font-size: 12px; } form { margin: 0; padding: 0; } a { text-decoration: underline; } a img { border: 0; } h1, h2, h3, h4, h5, h6 { font-weight: normal; } h1, h2, h3, h4, h5, h6, p, ol, ul, pre, blockquote { margin-top: 10px; margin-bottom: 10px; } /* standard helper classes */ .clr { clear: both; overflow: hidden; width: 1px; height: 1px; margin: 0 -1px -1px 0; border: 0; padding: 0; font-size: 0; line-height: 0; } /* .pkg class wraps enclosing block element around inner floated elements */ .pkg:after { content: " "; display: block; visibility: hidden; clear: both; height: 0.1px; font-size: 0.1em; line-height: 0; } .pkg { display: inline-block; } /* no ie mac \*/ * html .pkg { height: 1%; } .pkg { display: block; } /* */ /* page layout */ body { text-align: center; } /* center on ie */ #container { position: relative; margin: 0 auto; /* center on everything else */ width: 720px; text-align: left; } #container-inner { position: static; width: auto; } #banner { position: relative; } #banner-inner { position: static; } #pagebody { position: relative; width: 100%; } #pagebody-inner { position: static; width: 100%; } #alpha, #beta, #gamma, #delta { display: inline; /* ie win bugfix */ position: relative; float: left; min-height: 1px; } #delta { float: right; } #alpha-inner, #beta-inner, #gamma-inner, #delta-inner { position: static; } /* banner user/photo */ .banner-user { float: left; overflow: hidden; width: 64px; margin: 0 15px 0 0; border: 0; padding: 0; text-align: center; } .banner-user-photo { display: block; margin: 0 0 2px; border: 0; padding: 0; background-position: center center; background-repeat: no-repeat; text-decoration: none !important; } .banner-user-photo img { width: 64px; height: auto; margin: 0; border: 0; padding: 0; } /* content */ .content-nav { margin: 10px; text-align: center; } .date-header, .entry-content { position: static; clear: both; } .entry, .trackbacks, .comments, .archive { position: static; overflow: hidden; clear: both; width: 100%; margin-bottom: 20px; } .entry-content, .trackbacks-info, .trackback-content, .comment-content, .comments-open-content, .comments-closed { clear: both; margin: 5px 10px; } .trackbacks-link { font-size: 0.8em; } .entry-excerpt, .entry-body, .entry-more-link, .entry-more { clear: both; } .entry-footer, .trackback-footer, .comment-footer, .comments-open-footer, .archive-content { clear: both; margin: 5px 10px 20px; } .comments-open label { display: block; } #comment-author, #comment-email, #comment-url, #comment-text { width: 240px; } #comment-bake-cookie { margin-left: 0; vertical-align: middle; } #comment-post { font-weight: bold; } img.image-full { width: 100%; } .image-thumbnail { float: left; width: 115px; margin: 0 10px 10px 0; } .image-thumbnail img { width: 115px; height: 115px; margin: 0 0 2px; } /* modules */ .module { position: relative; overflow: hidden; width: 100%; } .module-content { position: relative; margin: 5px 10px 20px; } .module-list, .archive-list { margin: 0; padding: 0; list-style: none; } .module-list-item { margin-top: 5px; margin-bottom: 5px; } .module-presence img { vertical-align: middle; } .module-powered .module-content { margin-bottom: 10px; } .module-photo .module-content { text-align: center; } .module-wishlist .module-content { text-align: center; } .module-calendar .module-content table { border-collapse: collapse; width: 100%; } .module-calendar .module-content th, .module-calendar .module-content td { width: 14%; text-align: center; } .module-category-cloud .module-list { margin-right: 0; margin-left: 0; } .module-category-cloud .module-list-item { display: inline; margin: 0 5px 0 0; padding: 0; line-height: 1.2em; background: none; } .module-category-cloud .cloud-weight-1 { font-size: 0.9em; } .module-category-cloud .cloud-weight-2 { font-size: 0.95em; } .module-category-cloud .cloud-weight-3 { font-size: 1em; } .module-category-cloud .cloud-weight-4 { font-size: 1.125em; } .module-category-cloud .cloud-weight-5 { font-size: 1.25em; } .module-category-cloud .cloud-weight-6 { font-size: 1.375em; } .module-category-cloud .cloud-weight-7 { font-size: 1.5em; } .module-category-cloud .cloud-weight-8 { font-size: 1.625em; } .module-category-cloud .cloud-weight-9 { font-size: 1.75em; } .module-category-cloud .cloud-weight-10 { font-size: 1.75em; } .typelist-plain .module-list { list-style: none; } .typelist-plain .module-list-item { padding: 0; background: none; } .typelist-thumbnailed { margin: 0 0 20px; } .typelist-thumbnailed .module-list-item { display: block; clear: both; margin: 0; } /* positioniseverything.net/easyclearing.html */ .typelist-thumbnailed .module-list-item:after { content: " "; display: block; visibility: hidden; clear: both; height: 0.1px; font-size: 0.1em; line-height: 0; } .typelist-thumbnailed .module-list-item { display: inline-block; } /* no ie mac \*/ * html .typelist-thumbnailed .module-list-item { height: 1%; } .typelist-thumbnailed .module-list-item { display: block; } /* */ .typelist-thumbnail { float: left; min-width: 60px; width: 60px; /* no ie mac \*/width: auto;/* */ margin: 0 5px 0 0; text-align: center; vertical-align: middle; } .typelist-thumbnail img { margin: 5px; } .module-galleries .typelist-thumbnail img { width: 50px; } .typelist-description { margin: 0; padding: 5px; } .typelist-no-description { text-align: center; margin: 10px 0; } .module-featured-photo .module-content, .module-photo .module-content { margin: 0; } .module-featured-photo img { width: 100%; } .module-recent-photos { margin: 0 0 15px; } .module-recent-photos .module-content { margin: 0; } .module-recent-photos .module-list { display: block; height: 1%; margin: 0; border: 0; padding: 0; list-style: none; } /* positioniseverything.net/easyclearing.html */ .module-recent-photos .module-list:after { content: " "; display: block; visibility: hidden; clear: both; height: 0.1px; font-size: 0.1em; line-height: 0; } .module-recent-photos .module-list { display: inline-block; } /* no ie mac \*/ * html .module-recent-photos .module-list { height: 1%; } .module-recent-photos .module-list { display: block; } /* */ .module-recent-photos .module-list-item { display: block; float: left; /* ie win fix \*/ height: 1%; /**/ margin: 0; border: 0; padding: 0; } .module-recent-photos .module-list-item a { display: block; margin: 0; border: 0; padding: 0; } .module-recent-photos .module-list-item img { width: 60px; height: 60px; margin: 0; padding: 0; } /* mmt calendar */ .module-mmt-calendar { margin-bottom: 15px; } .module-mmt-calendar .module-content { margin: 0; } .module-mmt-calendar .module-header { margin: 0; } .module-mmt-calendar .module-header a { text-decoration: none; } .module-mmt-calendar table { width: 100%; } .module-mmt-calendar th { text-align: left; } .module-mmt-calendar td { width: 14%; height: 75px; text-align: left; vertical-align: top; } .day-photo { width: 54px; height: 54px; } .day-photo a { display: block; } .day-photo a img { width: 50px; height: 50px; } lua-orbit-2.2.1+dfsg/samples/toycms/templates/aboutanything/home.html000066400000000000000000000012251227340735500260130ustar00rootroot00000000000000$import{"index_view"} $show_posts{ include_tags = {"blog-%"}, count = 7 }[[

    $date_string

    $title

    $markdown_body
    ]] lua-orbit-2.2.1+dfsg/samples/toycms/templates/aboutanything/home.xml000066400000000000000000000014041227340735500256460ustar00rootroot00000000000000 $import{"index_view"} Orbit Blog tag:orbit-blog $show_posts{ include_tags = {"blog-%"}, count = 10 }[=[ $title tag:orbit-blog,$id $year-$month_padded-$day_padded{}T$hour_padded:$minute_padded:00Z $year-$month_padded-$day_padded{}T$hour_padded:$minute_padded:00Z ]=] lua-orbit-2.2.1+dfsg/samples/toycms/templates/aboutanything/images/000077500000000000000000000000001227340735500254425ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/toycms/templates/aboutanything/images/head.jpg000077500000000000000000000346021227340735500270550ustar00rootroot00000000000000JFIFHHExifMM*Created with The GIMPCC-"   J !1AQaq "27 &Brv#$36CERUVt 9!1AQaq"2#3$4 ?zTZA Fnb=KE%>tU1ӲfvBVPD Q#+TEShgEE$,[Ɂm5Fa2p2@|NPٿ8L\L\R2͝ NzKv$a\q;uf,f'2ba}z9ɩ%)I[a&RRRII~||y p?d'($3Y,sycԿB"o(bAF2XB$.1N]r;sd>LǙgml_ZrX\d6v~{dgaq&vKjEB{ya@e!TI4I-0]WẂyu\LǟCK@=AlKM(eaZ25[_x˰7bzxf ` 0o'a$i0[r 0l.2 s|ܵA6Mjitp]aOE4: 6R[FmN $(̦vQC9d()*J,]mHHd[Ju* lEndLLR͈!*?/55E|]=Xwث8" B-t~d<Q٥d<$:)PJa"~-T*Z`ҦtEh ekh2\D#ee`(ƙa ҝeAwqB%gQPiʺbÔ R^bDrGz/E#>S)͙1f+Cc19e6 Oɘx':sa il~keΡ?*J M KN%iJiIlۤRT$Ԥ8DJJjw$"uSvaDBˢ>%}YXQ0^vq̙o;vJӄyn?t).Y_P{F?ZlZ,`Yi@eCJ㡠 8i)C-ӿ0V%*mT!Ff`I(+ eKޕAKXfpTPHUGaA=g Th"*>!J\%{_:58DXi:yY%qyk)Li-% &9}%}WҖl35>>^}i NSIZSz^ZMv]/[_9sAru;SʒKS0sDXY$J %*:US a!uC9RXRb򤉺7 "t),BT`51ya0AWtg1XQy㉢%Ǒ9eʒ:DG0V~%@Zz.I)9xK]$=g>v}j}@BUpAEr:j5Ri4 i0oR~y|`_|^VJAi.So8IRҺW7KWe"Li7놘:奶d +j]%\)]c,w+sMq#=^5KOa])X@אo\^]Vv s{ OZbSʘDmO!n2p[՘o/s*zJ[I%p%px 9_  ^O/`*>~ryK.UאNURH!~Ik4³yxx^8m?qJ4'$!b*d)t%(7 w.S^X߿/^XR@+I`(@)0OC /@j[QwKQ$ E,gZ,m3򞘼dך ) '}]FC1!UTָ@M:LWAt UHp>L[֢;&.5pZbI[?41y@#U SIP6E\ zxU*-uUDr&)k&`gtPQ,]ml(!HOᅲJ߻Vy˚ 4Pu.,)EQA*@p%h\I^RJjHJ(\ XP&{ %%-ؼs $0%Ÿ@u_%%g]Ve*x{ysҡ$6 "*)wILP$j*5ni偸njm9S種$+ÍrtI|wx nbW8>?I|Cΰ\a 8 FFaBX_~rx{zV[Of8_gdlYFn np9C.C> C)J\1f*xjNѼ˚3,QrŜqCax,CF+]|{Ǩe}v^!QD=Ӿ^^# ?. s;:Dl y}'"p(>aϱ[mdR␒_Z_ZC2\|v I;)qg<9𿴯#Y@胷T,qY>df߫ ف;/:yمi@El9GfO[K;C r|f<e(g;][iotxt%Խ<1qY%)f$8P&f߈Bh7DQzHKTmJ'^Cf-1 j@AkE.ZXW>8kM=%^7dA9g > !E{+0LNE~3z:Pey4܍cGqo12_- Ȉ2ˆ&6q` Ko3x&OtuyF;ŻaF4l-Od{!9f>fpFogE#2b Ƴ ;1͚XpdEӮBmm2nڐdIJҩdgr!qC=(lh=Ƌ]2&$ ` q,aQsqcL/O.d`"Fxxl5dEK1Ph@r>//wm0Nm> 6c%_yho,Na<{_ΩB|/ 9Zcr-j2"-湤 XW[3(}qeeSK ZEjP!CAB5BS!zP|3pv a/F xE >lg2-c p6kg}Cx$)G7Gr^(;>/"(,dZݨ5F}²0xs}eȈ_Ma`J1Zyu0|"@]aYP;s^h]#dstC@Be VsXlU~l---)1gmq uh+Sp&@ &E@$*1bpI2#LjJ _/4`۸7 dw},Jhb(ZgrƂZU qodYgg]Syde0OA5f M'(~7]0..=$7wJć$|?/oj!-:&vby4 ] $)dYFvk'dJ ;9?4Nzh^!ݶÚidJt%`dZEk"s0FNe [|;̴m[2SlY-Zg`q6`vm s:{N<8L:/ ь=;w2[- |s^!_Wg-`1n%HWsKKyDق*m8C5ݶ2 hcm0?OiԳ yɱYAc*yPᙩĞ⎮͘ è6Жǰ$vivYC?iF V`GUZYR` $0RTMQ;L +F9c; 䤾RZkMRO.X((* k.aTj, IR4Ei/ ˎ.)^ښ) Q "XQ,5hptqgCyS "JZS %z f惮+T/IpA*twE\ 6:1qAE 5]dt_ Ҙڀ@R҆#q>_koopלe5Y}lDAT ()1K^C ]V ~K8j)YrU&um D[3}k R`NA}Pp@!^Dt =3q9ˏU-`A|—T@@L>\E[*Qg W-Ǘ]E3xUA(#K*]Pf!<~K|('JWU@S)>63k9Ldyi%{DWkjO[(0vrׄ家kE=ߋאX~u/.5MA (h<_ߞ(-m{hK ^`%;&`-$?gI'%J+SOo[ _ X'[m"h1TKgUCjU97puVV):*kAtSDXi0軂a@+uRz^6rBRa.zuctf/});\.UZ!%P@e}R gHrWkS)* ؼI-Zb&K{ra $^uUܹ֓ zzbš^> Ut%)jJTƸ<zSsKEQ|Vҡ5 xciǏ$! Hl2%R}fMF]B])tYztk<"__Y1_, +0![hi={DI@aqRu񘼞y}SD잣%9R@Q-9JTKiya0efsNKAj.-.I`[lǘb2}֖[JKRH2g;fʽر._ɥM*pAI wA\ PSPtP?( NוRA9m*k_5-ϝ9-y\w¸So@Ji(/*֠jM3L@USZxhJ@s?$Uo_y뉢|l7 '.!GD()>RֽPKzp>X_PZA0AAK9LU4O0N:/.t6,v@eJ.v]q{zp*Uay]W1 sPJB]i:{OY`nN rEz8>3YC9A%LBW]* \R2)%q=R(הUk.ouiK)SebwyVRߕt;BCG#3w=x"Cg\Ƚ8@i]1.Aw!~aoyr3QwdLɝ4IoE987$y3\\Ĝ*7sD]yq{Mu{u{r!!OLɖ,2F)s.)D!?]>yVQdy>E|v瑬g/H$y|\YAz*C.Ą!Yo40hEߵIRV^H"-Ac3 y5' Y+%p)˰dUc_295f8d_l"0C4Ǽ~}϶w*T5l-ܸ 2S lS,; a0$[eLzkӤaAeu%L$Z[BmHmjBTnJH ci$T55gQK. b|E5K4hlYM1l Ӭ:sO;=-%ТKh֋$5IJ`ZXd`d $l ]Q4 q_n Aip{@OnAšFRȑ3#j˗p4)eJiH<[bBr[e!l;1B Ş;`w8~+ki4#a@ky2 tEֵ/4@XOjAmҤQBJU0HE"| 52#x4`ҠpXLeCŚ+h %; 3$Dޡϱ(D2 8^aOooPh>{MkMѮcMKM4, A FsF%LS֗lQ  &äaAK{ ZC! "1){Ĩ7g;\֠\XAeh$dg\gQ/jy}0QQ,):1ߎ*ll"ԅ:.o4[CӼP~A) YӾXFnH:cZfu4cGl٦;ğ q͎k_{6yzv^vOiݳbY()8Y_4L* qeKg’KF2ABSklITV-ma&e;~&VIIhglk' u kL::՜K@n6pA4d'̭uz2.*#b -,[mm mfv@$%)L䔦@ MI$LyAA&7ڗ@-~l 5<Wr^,^<13/A/C,:2@@^x *{>Z|XPwy| vUD64T^J$ sZDj39{KJ{-9;iN",bW]㪈` Zo1r-l"R Tu}W{Nip Q> x[D+Z #`$Ņ AuS65Ixx^R r[U*Z@E<x*s9' wM灹}dm]mITii/kwKd@^A J/z(Syx? L"TyK?{iºc}\\ER临 qU@@@4(i]qrq}k\ Mj&%yxcuVTS'hFS9 jt ZiDh#-sOm?:گXBkK}G0y~!޲FieIW6[':2ػa}>!-L"_-==tOQߖ('QDܽ.,ey}QD-iRt:e0In(Y_Qw:}r{Gy /ťʳD*$ibm1뾣=0')/]E/GSxeӕe0SEP@*qRM15ɑ rs}q z̏=DKCQ$),"Um!"@=Fc,L+cƓ < W‡Z\Eˮ*׮Eb!"2xD0ZrnY^Ā7F.(2H4@ې pA=BZ^t e,&}>NUi3~8ɞ? u7 Xd""QOP%2xo<\Z#2۪z`N|)Jh1jl)Yͥϯ: A&(J1+9]}uD (R{ :W{< zxcsȕT凊-ÐE4WTA .]M5 g?vH+NXo*R>i[1Hv EiI˶e/w4mleevy9rvv;5J30pZe @uvu3 WL>>Slqiiӆ̏!d7lJi "S1TuTj~&SY-ʭm<\7v{v J/uSU}jb„m;S;.̕i=]S 1Y66KGG4i4jk++9Jk 077nss1+chxfF$1G0!R*R(YB"&r{U8$׍~ +{IENDB`lua-orbit-2.2.1+dfsg/samples/toycms/templates/aboutanything/layout.html000066400000000000000000000060401227340735500264000ustar00rootroot00000000000000$import{"archive"} $import{"index_view"} Orbit Blog
    $view

    Recent Posts

      $show_posts{ include_tags = {"blog-%"}, count = 7 }[[
    • $title
    • ]]

    Links

      $show_posts{ include_tags = {"blogroll"} }[[
    • $title
    • ]]

    Monthly Archives

    lua-orbit-2.2.1+dfsg/samples/toycms/templates/aboutanything/post.html000066400000000000000000000050701227340735500260520ustar00rootroot00000000000000

    $title

    $markdown_body
    $if_comments[[

    $n_comments Comments

    $comments[=[
    $author_link said:
    $markdown_body
    ]=]
    ]] $if_comment_open[[

    Post a comment

     
    ]]lua-orbit-2.2.1+dfsg/samples/toycms/templates/aboutanything/style.css000066400000000000000000000061101227340735500260450ustar00rootroot00000000000000 body { margin: 0; padding: 0; font: 85% arial, hevetica, sans-serif; text-align: center; color: #000066; background-color: #FFFFFF; // background-image: url(../images/img_39.gif); } a:link { color: #000066; } a:visited { color: #0000CC; } a:hover, a:active { color: #CCCCFF; background-color: #000066; } h2 { color: #000066; font: 140% georgia, times, "times new roman", serif; font-weight: bold; margin: 0 0 10px 0; } p.posted { font-weight: bold; } //h2 a { text-decoration: none; } h3 { color: #000066; font: 106% georgia, times, "times new roman", serif; font-weight: bold; margin-top: 0; } #container { margin: 1em auto; width: 720px; text-align: left; background-color: #FFFFFF; border: 1px none #0000CC; } #header { height: 45px; width: 100%; background-image: url(images/head.jpg); background-repeat: no-repeat; background-position: 0 0; border-bottom: 1px solid #0000CC; position: relative; border: 1px none #0000CC; border-bottom: 1px solid #0000CC; } #header h1 { font-size: 1px; text-align: right; color: #000066; margin: 0; padding: 0; display: none; } #mainnav ul { list-style-type: none; } #mainnav li { display: inline; } #menu { float: right; width: 165px; border-left: 1px solid #0000CC; padding-left: 15px; padding-right: 15px; margin-bottom: 50px; } #contents { padding-right: 15px; margin: 0 200px 40px 20px; } #contents p { line-height: 165%; } //.blogentry { border-bottom: 1px solid #0000CC; } .imagefloat { float: right; } #footer { clear: both; color: #CCCCFF; background-color: #0000CC; text-align: right; font-size: 90%; } #footer img { vertical-align: middle; } #skipmenu { position: absolute; left: 0; top: 5px; width: 645px; text-align: right; } #skipmenu a { color: #666; text-decoration: none; } #skipmenu a:hover { color: #fff; background-color: #666; text-decoration: none; } #container { border: 1px solid #0000CC; } #mainnav { background-color: #0000CC; color: #CCCCFF; padding: 2px 0; margin-bottom: 22px; } #mainnav ul { margin: 0 0 0 20px; padding: 0; list-style-type: none; border-left: 1px solid #CCCCFF; } #mainnav li { display: inline; padding: 0 10px; border-right: 1px solid #CCCCFF; } #mainnav li a { text-decoration: none; color: #CCCCFF; } #mainnav li a:hover { text-decoration: none; color: #0000CC; background-color: #CCCCFF; } #menu ul { margin-left: 0; padding-left: 0; list-style-type: none; line-height: 165%; } .imagefloat { padding: 2px; border: 1px solid #0000CC; margin: 0 0 10px 10px; } .blogentry ul { // list-style-type: none; // text-align: right; // margin: 1em 0; // padding: 0; list-style-type: square; margin: 10px 0px 15px -10px; // font-size: 95%; } .blogentry li { // display: inline; // padding: 0 0 0 7px; line-height: 150%; } #footer { background-color: #0000CC; padding: 5px; font-size: 90%; } lua-orbit-2.2.1+dfsg/samples/toycms/templates/aboutanything/theme_styles.css000066400000000000000000000272051227340735500274220ustar00rootroot00000000000000 /* Minimalist (Red) ======================================================= */ /* Default ---------------------------------------------------------------- */ /* Global */ body { font: normal 13px arial, helvetica, hirakakupro-w3, osaka, "ms pgothic", sans-serif; } /* Layout */ #container { width: 940px; } #alpha, #beta, #gamma, #delta { float: left; } #alpha { width: 485px; } #beta { width: 455px; } #gamma, #delta { width: 200px; } /* Header */ #banner { width: 940px; margin: 0; border-top-width: 10px; border-top-style: solid; } #banner-header { margin: 0 0 5px; line-height: 1; } #banner-description { margin: 0; font-size: 14px; line-height: 1.125; } #banner a { text-decoration: none; } #banner a:hover { text-decoration: underline; } /* Content */ .date-header { margin: 0 0 5px; font-size: 10px; } .entry-header { margin: 0 0 5px; font-size: 22px; font-weight: bold; } .entry-header a { text-decoration: none; } .entry-header a:hover { text-decoration: underline; } .entry-content { margin: 5px 0; } .entry-more-link { font-weight: bold; } .entry-footer { margin: 10px 0 20px; border-top-width: 1px; border-top-style: solid; padding-top: 5px; font-weight: normal; } .entry-footer a, .comment-footer a { font-weight: normal; } .content-nav { margin: 5px 0 10px; } .content-header { margin: 5px 0 30px; font-size: 26px; font-weight: bold; } .trackbacks-info, .trackback-content, .comment-content, .comments-open-content, .comments-closed { margin: 5px 0; } .module-header, .trackbacks-header, .comments-header, .comments-open-header, .archive-header { margin: 0; padding: 5px 0; font-size: 18px; font-weight: bold; } .trackback-footer, .comment-footer, .comments-open-footer, .archive-content { margin: 5px 0 20px; } #comment-author, #comment-email, #comment-url, #comment-text { width: 80%; } /* Utility */ .module-header, .trackbacks-header, .comments-header, .comments-open-header, .archive-header { /* ie win (5, 5.5, 6) bugfix */ p\osition: relative; width: 100%; w\idth: auto; } .entry-more-link, .entry-footer, .comment-footer, .trackback-footer, .typelist-thumbnailed { font-size: 11px; } /* Global ----------------------------------------------------------------- */ body { color: #333; font-family: trebuchet ms; background-color: #fff; } a { color: #ab0404; } a:hover { text-decoration: none; } /* Layout ----------------------------------------------------------------- */ #container-inner, #pagebody { background-color: #fff; } #pagebody { margin-top: 20px; margin-bottom: 30px; } /* Artistic */ .layout-artistic #gamma { margin-right: 15px; } .layout-artistic #alpha-inner, .layout-artistic #beta-inner { padding-right: 20px; padding-bottom: 20px; padding-left: 20px; } .layout-artistic #gamma-inner, .layout-artistic #delta-inner { padding-top: 0; } /* Calendar */ .layout-calendar #gamma { margin-right: 15px; } .layout-calendar #alpha-inner, .layout-calendar #beta-inner { padding-right: 20px; padding-bottom: 20px; padding-left: 20px; } .layout-calendar #gamma-inner, .layout-calendar #delta-inner { padding-top: 0; } /* Moblog 1 */ .layout-moblog1 #alpha { width: 190px; } .layout-moblog1 #beta { width: 560px; } .layout-moblog1 #gamma { width: 190px; } .layout-moblog1 #beta-inner { padding-right: 20px; padding-left: 20px; } /* Moblog 2 */ .layout-moblog2 #alpha { width: 85px; } .layout-moblog2 #beta { width: 460px; } .layout-moblog2 #gamma { width: 235px; } .layout-moblog2 #delta { width: 160px; } .layout-moblog2 #alpha-inner { padding-left: 20px; } .layout-moblog2 #beta-inner, .layout-moblog2 #gamma-inner, .layout-moblog2 #delta-inner { padding-right: 20px; padding-left: 20px; } /* Timeline */ .layout-timeline #alpha { width: 510px; } .layout-timeline #beta { width: 430px; } .layout-timeline #gamma { margin-right: 20px; } .layout-timeline #gamma, .layout-timeline #delta { width: 185px; } .layout-timeline #alpha-inner, .layout-timeline #beta-inner { padding-right: 20px; padding-bottom: 20px; padding-left: 20px; } .layout-timeline #gamma-inner, .layout-timeline #delta-inner { padding-top: 0; } /* Two Column (Right) */ .layout-two-column-right #alpha { width: 750px; } .layout-two-column-right #beta { width: 190px; } .layout-two-column-right #alpha-inner { padding-right: 20px; padding-left: 20px; } /* Two Column (Left) */ .layout-two-column-left #alpha { width: 190px; } .layout-two-column-left #beta { width: 750px; } .layout-two-column-left #beta-inner { padding-right: 20px; padding-left: 20px; } /* Three Column */ .layout-three-column #alpha, .layout-three-column #gamma { width: 190px; } .layout-three-column #beta { width: 560px; } .layout-three-column #beta-inner { padding-right: 20px; padding-left: 20px; } /* Three Column (Right) */ .layout-three-column-right #alpha { width: 560px; } .layout-three-column-right #beta, .layout-three-column-right #gamma { width: 190px; } .layout-three-column-right #alpha-inner { padding-right: 20px; padding-left: 20px; } /* One Column */ .layout-one-column #container, .layout-one-column #banner, .layout-one-column #alpha { width: 780px; } .layout-one-column #alpha-inner { padding-right: 20px; padding-left: 20px; } #container, #container-inner, #banner, .layout-one-column #container, .layout-one-column #banner { position: relative; width: 100%; } #banner-inner, #pagebody-inner { position: relative; width: 940px; margin: 0 auto; } .layout-one-column #banner-inner, .layout-one-column #pagebody-inner { width: 780px; } /* Header ----------------------------------------------------------------- */ #banner { border-color: #470101; background: #ad0404 url(http://aboutanything.nfshost.com/cgi-bin/mt/mt-static/themes/minimalist-red/header.gif) repeat-x bottom right; padding: 30px 0 40px 20px; padding-left: 0; padding-right: 0; } #banner a { color: #fff; font-weight: bold; } #banner-header { padding-left: 20px; padding-right: 20px; color: #fff; font-size: 34px; font-weight: bold; } #banner-description { padding-left: 20px; padding-right: 20px; color: #fff; } /* Content ---------------------------------------------------------------- */ .entry-header, .entry-header a, .content-header { color: #000; } .date-header, .entry-footer, .entry-footer a, .comment-footer, .comment-footer a, .trackback-footer { color: #999; } .entry-footer { border-top-color: #ddd; } .trackbacks-header, .comments-header, .comments-open-header, .archive-header { color: #333; } .entry-header a { display: block; margin-bottom: 8px; border-bottom: 1px solid #ccc; padding-bottom: .3em; text-decoration: none; } .entry-header a:hover { text-decoration: underline; } .archive-list-item { margin-bottom: 5px; } /* Widget ----------------------------------------------------------------- */ .module-header { border-width: 0 0 1px; border-style: solid; border-color: #ccc; padding: 0; font-size: 14px; font-family: trebuchet ms; margin-bottom: 8px; padding-bottom: .3em; } .module-header, .module-header a { color: #333; font-weight: normal; } .module-content a { color: #666; } .layout-moblog2 .module-header, .layout-moblog2 .module-content { margin-right: 0; margin-left: 0; } .module-powered .module-content { margin-top: 15px; margin-bottom: 15px; border: 1px solid #ddd; background-color: #f8f8f8; } .typelist-thumbnailed .module-list-item { border-color: #ddd; background-color: #f8f8f8; } .typelist-thumbnail { background: #f8f8f8; } .module-header, .module-content { margin-right: 15px; margin-left: 15px; } .module-header { font-size: 14px; } .module-header a { text-decoration: none; } .module-header a:hover { text-decoration: underline; } .module-content { margin-top: 5px; margin-bottom: 20px; font-size: 11px; } .layout-artistic .module-header, .layout-artistic .module-content, .layout-calendar .module-header, .layout-calendar .module-content, .layout-timeline .module-header, .layout-timeline .module-content, .layout-one-column .module-header, .layout-one-column .module-content { margin-right: 0; margin-left: 0; } /* "Powered By" Module */ .module-powered .module-content { padding: 10px; text-align: center; } .module-powered .module-content, .module-powered .module-content a { color: #333; } /* Calendar Module */ .module-calendar .module-content table { font-size: 10px; } /* Featured Photo Module */ .module-featured-photo, .module-featured-photo img { width: 415px; } /* Recent Photos Module */ .layout-artistic .module-recent-photos { margin-top: 10px; } .layout-timeline .module-recent-photos { margin-top: 0; } .layout-moblog1 .module-recent-photos, .layout-moblog2 .module-recent-photos { margin: 0; } .layout-moblog1 .module-recent-photos .module-content { margin: 5px 15px 20px; } .layout-artistic .module-recent-photos .module-list { padding-left: 5px; } .layout-timeline .module-recent-photos .module-list { padding-left: 15px; } .module-recent-photos .module-list-item { width: 64px; /* mac ie fix */ margin: 0 4px 0 0; padding: 0; background-image: none; } .layout-moblog1 .module-recent-photos .module-list-item { margin: 0 5px 5px 0; } .layout-moblog2 .module-recent-photos .module-list-item { margin: 0 0 5px; } .layout-timeline .module-recent-photos .module-list-item { margin: 10px 10px 0 0; } .module-recent-photos .module-list-item a { border: 1px solid #333; padding: 1px; background-color: #fff; } .module-recent-photos .module-list-item a:hover { border-color: #ddd; } /* Photo Module */ .module-photo { border: 0; background: none; } .module-photo .module-content { margin: 10px; } .module-photo img { border: 0; } .layout-moblog2 .module-photo img { width: 100px; height: auto; } /* Mixed Media Template Calendar Module */ .module-mmt-calendar { width: 415px; margin: 0; } .module-mmt-calendar .module-header, .layout-timeline .module-recent-photos .module-header { margin: 0; padding: 5px 15px; color: #fff; font-size: 13px; font-weight: bold; text-align: right; background-color: #470101; } .module-mmt-calendar .module-header a { color: #fff; } .module-mmt-calendar .module-content { margin: 0 0 15px; } .module-mmt-calendar table { width: 415px; font-size: 11px; background-color: #470101; } .module-mmt-calendar th { color: #fff; border-right: 1px solid #ddd; border-bottom: 1px solid #ddd; padding: 2px; text-align: right; font-weight: bold; } .module-mmt-calendar td { border-right: 1px solid #ddd; border-bottom: 1px solid #ddd; padding: 2px; text-align: right; font-weight: normal; background-color: #f8f8f8; } th.weekday-7, td.day-7, td.day-14, td.day-21, td.day-28, td.day-35, td.day-42 { border-right: none; } .day-photo a { border: 1px solid #ddd; padding: 1px; background-color: #fff; } .day-photo a:hover { border-color: #333; } /* Module Thumbnailed */ .typelist-thumbnailed .module-list-item { margin: 1px 0; border-width: 1px; border-style: solid; padding: 0; background-repeat: repeat-x; background-position: top left; } lua-orbit-2.2.1+dfsg/samples/toycms/templates/blog/000077500000000000000000000000001227340735500222445ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/toycms/templates/blog/archive.html000066400000000000000000000005231227340735500245530ustar00rootroot00000000000000$import{"index_view"} $show_posts{ archive = true, include_tags = {"blog-%"}, count = 7 }[[
    $if_new_date[=[

    $date_string

    ]=]

    $title

    $markdown_body

    Published at $hour_padded:$minute_padded | Comments ($n_comments)

    ]] lua-orbit-2.2.1+dfsg/samples/toycms/templates/blog/home.html000066400000000000000000000005031227340735500240600ustar00rootroot00000000000000$import{"index_view"} $show_posts{ include_tags = {"blog-%"}, count = 7 }[[
    $if_new_date[=[

    $date_string

    ]=]

    $title

    $markdown_body

    Published at $hour_padded:$minute_padded | Comments ($n_comments)

    ]] lua-orbit-2.2.1+dfsg/samples/toycms/templates/blog/home.xml000066400000000000000000000014041227340735500237150ustar00rootroot00000000000000 $import{"index_view"} Orbit Blog tag:orbit-blog $show_posts{ include_tags = {"blog-%"}, count = 10 }[=[ $title tag:orbit-blog,$id $year-$month_padded-$day_padded{}T$hour_padded:$minute_padded:00Z $year-$month_padded-$day_padded{}T$hour_padded:$minute_padded:00Z ]=] lua-orbit-2.2.1+dfsg/samples/toycms/templates/blog/images/000077500000000000000000000000001227340735500235115ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/toycms/templates/blog/images/head.jpg000077500000000000000000000346021227340735500251240ustar00rootroot00000000000000JFIFHHExifMM*Created with The GIMPCC-"   J !1AQaq "27 &Brv#$36CERUVt 9!1AQaq"2#3$4 ?zTZA Fnb=KE%>tU1ӲfvBVPD Q#+TEShgEE$,[Ɂm5Fa2p2@|NPٿ8L\L\R2͝ NzKv$a\q;uf,f'2ba}z9ɩ%)I[a&RRRII~||y p?d'($3Y,sycԿB"o(bAF2XB$.1N]r;sd>LǙgml_ZrX\d6v~{dgaq&vKjEB{ya@e!TI4I-0]WẂyu\LǟCK@=AlKM(eaZ25[_x˰7bzxf ` 0o'a$i0[r 0l.2 s|ܵA6Mjitp]aOE4: 6R[FmN $(̦vQC9d()*J,]mHHd[Ju* lEndLLR͈!*?/55E|]=Xwث8" B-t~d<Q٥d<$:)PJa"~-T*Z`ҦtEh ekh2\D#ee`(ƙa ҝeAwqB%gQPiʺbÔ R^bDrGz/E#>S)͙1f+Cc19e6 Oɘx':sa il~keΡ?*J M KN%iJiIlۤRT$Ԥ8DJJjw$"uSvaDBˢ>%}YXQ0^vq̙o;vJӄyn?t).Y_P{F?ZlZ,`Yi@eCJ㡠 8i)C-ӿ0V%*mT!Ff`I(+ eKޕAKXfpTPHUGaA=g Th"*>!J\%{_:58DXi:yY%qyk)Li-% &9}%}WҖl35>>^}i NSIZSz^ZMv]/[_9sAru;SʒKS0sDXY$J %*:US a!uC9RXRb򤉺7 "t),BT`51ya0AWtg1XQy㉢%Ǒ9eʒ:DG0V~%@Zz.I)9xK]$=g>v}j}@BUpAEr:j5Ri4 i0oR~y|`_|^VJAi.So8IRҺW7KWe"Li7놘:奶d +j]%\)]c,w+sMq#=^5KOa])X@אo\^]Vv s{ OZbSʘDmO!n2p[՘o/s*zJ[I%p%px 9_  ^O/`*>~ryK.UאNURH!~Ik4³yxx^8m?qJ4'$!b*d)t%(7 w.S^X߿/^XR@+I`(@)0OC /@j[QwKQ$ E,gZ,m3򞘼dך ) '}]FC1!UTָ@M:LWAt UHp>L[֢;&.5pZbI[?41y@#U SIP6E\ zxU*-uUDr&)k&`gtPQ,]ml(!HOᅲJ߻Vy˚ 4Pu.,)EQA*@p%h\I^RJjHJ(\ XP&{ %%-ؼs $0%Ÿ@u_%%g]Ve*x{ysҡ$6 "*)wILP$j*5ni偸njm9S種$+ÍrtI|wx nbW8>?I|Cΰ\a 8 FFaBX_~rx{zV[Of8_gdlYFn np9C.C> C)J\1f*xjNѼ˚3,QrŜqCax,CF+]|{Ǩe}v^!QD=Ӿ^^# ?. s;:Dl y}'"p(>aϱ[mdR␒_Z_ZC2\|v I;)qg<9𿴯#Y@胷T,qY>df߫ ف;/:yمi@El9GfO[K;C r|f<e(g;][iotxt%Խ<1qY%)f$8P&f߈Bh7DQzHKTmJ'^Cf-1 j@AkE.ZXW>8kM=%^7dA9g > !E{+0LNE~3z:Pey4܍cGqo12_- Ȉ2ˆ&6q` Ko3x&OtuyF;ŻaF4l-Od{!9f>fpFogE#2b Ƴ ;1͚XpdEӮBmm2nڐdIJҩdgr!qC=(lh=Ƌ]2&$ ` q,aQsqcL/O.d`"Fxxl5dEK1Ph@r>//wm0Nm> 6c%_yho,Na<{_ΩB|/ 9Zcr-j2"-湤 XW[3(}qeeSK ZEjP!CAB5BS!zP|3pv a/F xE >lg2-c p6kg}Cx$)G7Gr^(;>/"(,dZݨ5F}²0xs}eȈ_Ma`J1Zyu0|"@]aYP;s^h]#dstC@Be VsXlU~l---)1gmq uh+Sp&@ &E@$*1bpI2#LjJ _/4`۸7 dw},Jhb(ZgrƂZU qodYgg]Syde0OA5f M'(~7]0..=$7wJć$|?/oj!-:&vby4 ] $)dYFvk'dJ ;9?4Nzh^!ݶÚidJt%`dZEk"s0FNe [|;̴m[2SlY-Zg`q6`vm s:{N<8L:/ ь=;w2[- |s^!_Wg-`1n%HWsKKyDق*m8C5ݶ2 hcm0?OiԳ yɱYAc*yPᙩĞ⎮͘ è6Жǰ$vivYC?iF V`GUZYR` $0RTMQ;L +F9c; 䤾RZkMRO.X((* k.aTj, IR4Ei/ ˎ.)^ښ) Q "XQ,5hptqgCyS "JZS %z f惮+T/IpA*twE\ 6:1qAE 5]dt_ Ҙڀ@R҆#q>_koopלe5Y}lDAT ()1K^C ]V ~K8j)YrU&um D[3}k R`NA}Pp@!^Dt =3q9ˏU-`A|—T@@L>\E[*Qg W-Ǘ]E3xUA(#K*]Pf!<~K|('JWU@S)>63k9Ldyi%{DWkjO[(0vrׄ家kE=ߋאX~u/.5MA (h<_ߞ(-m{hK ^`%;&`-$?gI'%J+SOo[ _ X'[m"h1TKgUCjU97puVV):*kAtSDXi0軂a@+uRz^6rBRa.zuctf/});\.UZ!%P@e}R gHrWkS)* ؼI-Zb&K{ra $^uUܹ֓ zzbš^> Ut%)jJTƸ<zSsKEQ|Vҡ5 xciǏ$! Hl2%R}fMF]B])tYztk<"__Y1_, +0![hi={DI@aqRu񘼞y}SD잣%9R@Q-9JTKiya0efsNKAj.-.I`[lǘb2}֖[JKRH2g;fʽر._ɥM*pAI wA\ PSPtP?( NוRA9m*k_5-ϝ9-y\w¸So@Ji(/*֠jM3L@USZxhJ@s?$Uo_y뉢|l7 '.!GD()>RֽPKzp>X_PZA0AAK9LU4O0N:/.t6,v@eJ.v]q{zp*Uay]W1 sPJB]i:{OY`nN rEz8>3YC9A%LBW]* \R2)%q=R(הUk.ouiK)SebwyVRߕt;BCG#3w=x"Cg\Ƚ8@i]1.Aw!~aoyr3QwdLɝ4IoE987$y3\\Ĝ*7sD]yq{Mu{u{r!!OLɖ,2F)s.)D!?]>yVQdy>E|v瑬g/H$y|\YAz*C.Ą!Yo40hEߵIRV^H"-Ac3 y5' Y+%p)˰dUc_295f8d_l"0C4Ǽ~}϶w*T5l-ܸ 2S lS,; a0$[eLzkӤaAeu%L$Z[BmHmjBTnJH ci$T55gQK. b|E5K4hlYM1l Ӭ:sO;=-%ТKh֋$5IJ`ZXd`d $l ]Q4 q_n Aip{@OnAšFRȑ3#j˗p4)eJiH<[bBr[e!l;1B Ş;`w8~+ki4#a@ky2 tEֵ/4@XOjAmҤQBJU0HE"| 52#x4`ҠpXLeCŚ+h %; 3$Dޡϱ(D2 8^aOooPh>{MkMѮcMKM4, A FsF%LS֗lQ  &äaAK{ ZC! "1){Ĩ7g;\֠\XAeh$dg\gQ/jy}0QQ,):1ߎ*ll"ԅ:.o4[CӼP~A) YӾXFnH:cZfu4cGl٦;ğ q͎k_{6yzv^vOiݳbY()8Y_4L* qeKg’KF2ABSklITV-ma&e;~&VIIhglk' u kL::՜K@n6pA4d'̭uz2.*#b -,[mm mfv@$%)L䔦@ MI$LyAA&7ڗ@-~l 5<Wr^,^<13/A/C,:2@@^x *{>Z|XPwy| vUD64T^J$ sZDj39{KJ{-9;iN",bW]㪈` Zo1r-l"R Tu}W{Nip Q> x[D+Z #`$Ņ AuS65Ixx^R r[U*Z@E<x*s9' wM灹}dm]mITii/kwKd@^A J/z(Syx? L"TyK?{iºc}\\ER临 qU@@@4(i]qrq}k\ Mj&%yxcuVTS'hFS9 jt ZiDh#-sOm?:گXBkK}G0y~!޲FieIW6[':2ػa}>!-L"_-==tOQߖ('QDܽ.,ey}QD-iRt:e0In(Y_Qw:}r{Gy /ťʳD*$ibm1뾣=0')/]E/GSxeӕe0SEP@*qRM15ɑ rs}q z̏=DKCQ$),"Um!"@=Fc,L+cƓ < W‡Z\Eˮ*׮Eb!"2xD0ZrnY^Ā7F.(2H4@ې pA=BZ^t e,&}>NUi3~8ɞ? u7 Xd""QOP%2xo<\Z#2۪z`N|)Jh1jl)Yͥϯ: A&(J1+9]}uD (R{ :W{< zxcsȕT凊-ÐE4WTA .]M5 g?vH+NXo*R Orbit Blog
    $view
    lua-orbit-2.2.1+dfsg/samples/toycms/templates/blog/post.html000066400000000000000000000020021227340735500241110ustar00rootroot00000000000000

    $title

    $date_string

    $markdown_body

    Published at $hour_padded:$minute_padded | Comments ($n_comments)

    $if_comments[[

    Comments

    $comments[=[ $markdown_body

    Written by $author_link at $time_string

    ]=] ]] $if_comment_open[[

    Name:


    Email:


    Site:


    Comments:
    $if_error_comment[=[You must write something!]=]
    *italics* **bold** [link](http://url)

    ]]
    lua-orbit-2.2.1+dfsg/samples/toycms/templates/blog/post_pages.html000066400000000000000000000000621227340735500252740ustar00rootroot00000000000000
    $markdown_body
    lua-orbit-2.2.1+dfsg/samples/toycms/templates/blog/style.css000066400000000000000000000061101227340735500241140ustar00rootroot00000000000000 body { margin: 0; padding: 0; font: 85% arial, hevetica, sans-serif; text-align: center; color: #000066; background-color: #FFFFFF; // background-image: url(../images/img_39.gif); } a:link { color: #000066; } a:visited { color: #0000CC; } a:hover, a:active { color: #CCCCFF; background-color: #000066; } h2 { color: #000066; font: 140% georgia, times, "times new roman", serif; font-weight: bold; margin: 0 0 10px 0; } p.posted { font-weight: bold; } //h2 a { text-decoration: none; } h3 { color: #000066; font: 106% georgia, times, "times new roman", serif; font-weight: bold; margin-top: 0; } #container { margin: 1em auto; width: 720px; text-align: left; background-color: #FFFFFF; border: 1px none #0000CC; } #header { height: 45px; width: 100%; background-image: url(images/head.jpg); background-repeat: no-repeat; background-position: 0 0; border-bottom: 1px solid #0000CC; position: relative; border: 1px none #0000CC; border-bottom: 1px solid #0000CC; } #header h1 { font-size: 1px; text-align: right; color: #000066; margin: 0; padding: 0; display: none; } #mainnav ul { list-style-type: none; } #mainnav li { display: inline; } #menu { float: right; width: 165px; border-left: 1px solid #0000CC; padding-left: 15px; padding-right: 15px; margin-bottom: 50px; } #contents { padding-right: 15px; margin: 0 200px 40px 20px; } #contents p { line-height: 165%; } //.blogentry { border-bottom: 1px solid #0000CC; } .imagefloat { float: right; } #footer { clear: both; color: #CCCCFF; background-color: #0000CC; text-align: right; font-size: 90%; } #footer img { vertical-align: middle; } #skipmenu { position: absolute; left: 0; top: 5px; width: 645px; text-align: right; } #skipmenu a { color: #666; text-decoration: none; } #skipmenu a:hover { color: #fff; background-color: #666; text-decoration: none; } #container { border: 1px solid #0000CC; } #mainnav { background-color: #0000CC; color: #CCCCFF; padding: 2px 0; margin-bottom: 22px; } #mainnav ul { margin: 0 0 0 20px; padding: 0; list-style-type: none; border-left: 1px solid #CCCCFF; } #mainnav li { display: inline; padding: 0 10px; border-right: 1px solid #CCCCFF; } #mainnav li a { text-decoration: none; color: #CCCCFF; } #mainnav li a:hover { text-decoration: none; color: #0000CC; background-color: #CCCCFF; } #menu ul { margin-left: 0; padding-left: 0; list-style-type: none; line-height: 165%; } .imagefloat { padding: 2px; border: 1px solid #0000CC; margin: 0 0 10px 10px; } .blogentry ul { // list-style-type: none; // text-align: right; // margin: 1em 0; // padding: 0; list-style-type: square; margin: 10px 0px 15px -10px; // font-size: 95%; } .blogentry li { // display: inline; // padding: 0 0 0 7px; line-height: 150%; } #footer { background-color: #0000CC; padding: 5px; font-size: 90%; } lua-orbit-2.2.1+dfsg/samples/toycms/templates/lablua/000077500000000000000000000000001227340735500225615ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/toycms/templates/lablua/home.html000066400000000000000000000005131227340735500243760ustar00rootroot00000000000000$import{ "index_view" }
    $show_posts{ include_tags = { "home" }, count = 1, template = "simple_post.html" }
    lua-orbit-2.2.1+dfsg/samples/toycms/templates/lablua/images/000077500000000000000000000000001227340735500240265ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/toycms/templates/lablua/images/header.jpg000066400000000000000000000526211227340735500257660ustar00rootroot00000000000000JFIFHHExifMM*Created with The GIMPCC-"  X  !1A Qaq$%"89x #')27BGw&(6D:CWbghr  :!1A"Qaq2#B$34Rb ?_aݗvʒMha<4;l9iw}K^-}?=_ףݮ|"f=i>~=Q%%*F1%="! jͨ2K iVtVP 9'4RBnhoϷv?2V:4~ly`S)Ji'5j_\5%?L9pۢwvə|g5Ϻ7n H$L͎ YS9Maӗ\Ƅez*s Pv2Ne3+yZ2܉ n :$кE&i7hqx >ʓvYy׏vœ|xHjd;>!a{Î[&Ov]ه<e:|LK <;4=eJߖ~$Oߟ< 5RCvC1~}z.e_O=we xg$h*՟UB,}]3P⑑MU7MINٰ5HIIB4WDj$b"pD/\yBi!;SJr 1#KaVʤzCjj9'0xZ4e, LBIĎDa!_R  ͈7uŸ(7f_/ᅄ,;P<Hh]x|5*ݿpi?x9/2 wpvP\xxg}Ce ~a@4߸};버~yvB~ʑd!DGPݦC,>[[t„禚o瞾+ݻN;W__wޛ&Xde|2|~$]?' ݐoŐ閡w4RC域 )~{[ÖǙ1/09x~޾(N G[0៞^!nC@p}tzrl>(5R@40زC^Ϗm ټFCDcL36[*#)['lj@cQU(T7s6y&3Rl_ee~Xku뷎,AuQ~?>.;Nݨ}k}2zp2:xإ?'||4;&O >-+~;dž% ޾_ˎå/|q/ϖnw>Z~b. +OvAˇvPCras<ؚrGxq@svD-e Hk4ͱ: ӅrfDm.>L)S=Dkx,';cR 7V :SՓ?1~,dݦ>\@CA^a~w_>]n׮mInǿ?-$>nt~xi8|79n;)G>,N_?aBx<?T~gwc;Nn^'ޚv)_zHݦZeE~=uu/vHӆLJ6.:r;2'_w?5S L2vPoeI ޞ<آxӇ-qRwg">{|gOnWD2 [(HngjNJL@w`g2EWڠJG ݔ@h;wR!ۊXr~R(\6 0?/l_5 R:!1=SKd=zEH&Xse+\NE)80yl|jZI'HІM 3ϥPOxXaM6+(2 >:v*Hq4hF_kSK_Z`qo%PIR5kk z'&4W#RUEH2wOp=tx9#gGԫ++X)ۃkϑ#ǼO,6XwoEɡdnڽqZ˞7g9Hc\; d [ 4-N@}J$-2B1'Zî{l(1yiإ=Dk_mf,fٶm,,fٶm,,#"~!eP?MJbQWiwEF;xI r4Y*" OVaJM&6 V}*Gy_5D5ߥp t뎁ڋo'S&hq{<Ô J9QOe1A3e\;~V䥦N/>M8tQ" 6y;% .]%6fgxvkzJjӧC'=EZȎ<=E9m$8x֗]6z. bmPd`WH HC)9)A#JY(,mk_hsUvnڗo w~1fE׏{U!k>1uµS#^N6w陹gn)~ԁ=9KLaܞ9cy7q\.HZB0Q(Ӛ7itV\P ˜#DD .ꮐuUtYji+=vbY)9i)ghjaRHeXUx\3Dɕej+TEVLID"' ^!ik;.;?27EK\&Iu)ejOQYWzYpg0ɈT Y8 LHWήC2.{r+m`iKIXZZZ=Ij qh+kSiܡ3g1s4rb[ƖJS]ksS6q&2gxl?3Vv&UEK#Lwz8"V F]=u46)ozjn] ~;Wv1jt=.㫪i%T*0cRjd oLP] [SHmً+sSCYK-bJz^!d*SP*MiBYSAkmFUGG Ѭ"b(y rsp!.S҂;7<9?1h\зFD--UjUzEM* )nǰZF8wkϮҗD ]2?qZ3:Y}Vۗ5 qQm\HTa4: Fzw(TCOCZ.DyXQJ]!Iō\ob{KvSԹm{5|,:W)SUW{ejMP#+*et%3PJ멅KM4 :UU$ȫ !]k+ A8_ {e ->閻c thm¥yvtv^V9-ZZ"'cP%DS:_>1 [t"u5QRP/T,,Ff} lXGzRs>khdDM"eߐV*g̨uaWЪB=yS EJ\XBs ?.?-SW4LbPGT!kT d(Eƀw 0+jخmv*nXWqpVz bO)*4hꕫR}t2rK8 $+0频@G7ʆ*aOb'!q9 -GXWiPSjnwG -)op@ hPb%R+rRU$MEAVQęMT]uQ]#MBsc0XTJ̋D#N(8&NriơJAR#HheU`2󹨫,۶TOKOIY>[OY,I5H\$ˮ8CEd p@R*g!*P ČE'Lj9zNغ vspVJ(K/8ΝE*(&IfEs}I~-i-ZZ˴hXrJZ3gZ>6ҷ(D L9Sfufzoߵ(7qwgvSv3jIQMOHsG7R+j5؎]f BJv^ÞǘF-7*g4l2fkn04_I*z<QuMTBi@yt )8X(lQ+umٛ,G=JaKC\I(5%!,ӎł"BV7 g!uuǘ!roQu,bf~8:u#FٹKc[]+EEizVt \* R]uz/s 8C!ӽ8[wS9rKV .c*OUd>#"]d]5RszzZQusUPr,62 hک;<.Z |KP \V-*FBN.'Q:b*ʠp;_kP78][(vtA=&Jͭ?>BjHP F(8VI1Qub3RRDzl1:)iASz)+Z:E7PsHY]Le ÝʓBrBUUM^+\*J(2`}gQeAU@RcxuÆ$TDX1qfgDLJ1<+qTJZͩYi].*="Bs)>M_UI.\%jޙ#OpXd1+*Jʯ w NcuI K1*ֹ w\VJMg}[P[_h׳EP@Cڻ_AX,6 53"InXP q:cq:";9(TC,Uzxd?矻\ g6sĉvZ/ꪣ6".4jE 9׼)MZՐ*OX}ۖ\o+DQ6t@!T+V[wʩbN"%tMs ג~+$X7fhL[jfMېr9{2iN(%1h9Wtzn ":r#"nM.$䖝+=xjCF$4(ڨ^>njָ{]5+ZgҮtsD˗-P袇+j@H2Lh-c[IQ3fR7G," 1ahOHlN ŬwlN[j}%m evrP; mDkC#mvE֥H\kۊ/]+R݊֊D%=lїHR62=\S9蔁*+(xpS/e~xe|7?Gf?e>^ciy@Wb4gV3ܑR.";o1cМx/&[q>M6n=d1ܐ9<#vRK[;=r'u!5]Q ӵ}ƙ\3\o^}aniv?/Z7(nAd]McnPqn>(3|G+yڹHijL RDJ"I$eru-jTFEPm&"@݈;pmqms7,7fN5DmC|ʈӌ%Mu":˦OU(RjGW%E9t4Kcx;–G!j)d(JZBq(!IJJҒ'g|־چϥ=W`ͼnH_̕.UH3CrlF/~ҁ2 :'M[-'9He}z| 7wbYdd; r{XE`v双Ap06 #S*tsZŗ?41sdi%LIm&J CrDWKr:vKɋ,/bO ubb6AT=7fX*h'Kiܥz˺qm5đHܰ508<#0ᷯKfp,lr,I . !84 WӰ[bbāa~[_Kpl"LIwRRiXZ5/i7H92H1}M:ZֈOLA^R+f'uېne  -z6eѧҤAf!FԩԪX 9QH612%t %S6QA()g 1ʋ*A{"mGZzGPUg_;K}5l6g.fSc"6Ӕ[B7TցNkO))׶yM]ʄ aU{I @~G}#m|Ry{0im}q%v5̙G@[#M 3CR OtaGJӎ6zÆ䪤C'0)x^n D=|sU?,Mmޭ;d;.T\$}嗈mڲx{x.MvYcgXA=hJV!z^_K%tmUјÖ1ʥm9GRp5/tz@)PQVNU'eEtՐo{ıQ䶣NW{hTF>6ʉëimzNҸ?<@Vn\Yi8(4[,)sSXIU2cvWgPRRnLB2$\PIWit2k3H[#1[!z#օqgAg&0sh^9kI"}Q5'?-"-ӧQUQ"TQudGNDP-{j?-v|k_xvmeԈ]0Dd+&oܦ)Y}2'Mn!g&tof˳ 44EޱI9 kڕG-9j\I*" pXs;qTA>N-D0=Z˟3?o-a"ئ`|1uh];{*kF<]rǦ"Uȑc9d&da_Ӗ[%ļUQ7uPtYp]ݝ[.r7+NO(h!`SZ%4-,dƢ(d2PO00\*2Dd$ qW#]d_s~[zsv1ɳ<Wb Zy7h喡*$.I:O 4^7<9(9u4r#XZ$]bkOQyJt|ܪ A\rx|~>[8T4'A:T0eKfFM=F&ɳ^, ĜROfiVj7]lޣ t̩k'G^j&VK UT˞(h=tǒ ~9.v0oaV6y;mS~S`IJ"*(enou[b+ nS)D9r.&I6(F σ\^*FoLq2yJ SE&d6Ij#5䜓ȣ#RZ7F[6Mi_ldƥLW:+*J==":bl8"2CpcE޹-2v1!Pf,iKO?Tᔤ[ #"~"۾PR7ܝ6;[ =;˽I\akcd![uNN13Kͭn@虡B)_*6P;crB"0,<\Dɝ9禄,_Z% Tz ?XVx87"0 x}53z ?5f2*VT6E"jOSV%;9?99f<(ݤSw^FtSD:ld{*THVkޙ TBd5=,UFeUDY4HI.cHd)3Q,Pl&\j$\\QkH$yc . HZ⫣OtAkblnWCRJ#USApyy}^GOגA1ãC2* 7YܵLeƼ.k}F?K8uƮ ,>&d -ɏ>&ghD4*bbfw'țR%kBޱ25 Ej7%.9bHŦ9} vޘm|.[ Ś27B:-e}FPGVLgRir lDq+)/ϒ{ ͭέco{sPzB]geFRѹ̂TY\QtIUMţ?/ƸS{Te|=:I Vfm'WWV(I.TBg4vbIk[rw#{[k#R,'5> IId =vř5D1onl*Gh:0i p`5g^Q^mdSyDF&鍸N5<TdH [uYGf,(gR?:)jZ:4 "L);qU LCV`Υ@ +D ͷ<؛7{hl6]6<#yYTr$0J,  *Ny;? RϫbHk*U3ĀHHuPIܐqMI@'1fٶm6ͳejO o~^Rwp=n;esآ}+v{/vK9{ xZNޭ_G])+ PtRUAӐR`aP4VtGF(eb#(USZnˎ[Np$j>wgL  le: K[3dxUBNL6iQNT[{衁@06 ![|u/QeFUEJkQI"XJ:0 `%lFBE)S̢㘍UX]b5X]cP_ǿb=vcS*f5tt1E 4¹hdjB)E(6&<}6d 7k la<<>?/pxe۲ucl~Ы!{\<[(͝ qG -:]{`ou~R(Nc%6ߏi fd_eM0Kl8ŠopJ9RhSU@<'~__R5 C=yGOg3f/K2g׾g.k'er'̤̤վa%sPzjZ5 93 QֵaD"@P><4X(M!Ӷ-ml^(7կKfx1[4C &蓶GkM%,v(,(Z?؟sNxju'*'({F*F\t͡TĴʡ%H B.#ZM4}L'Q˻bO6n-:y%,jy$dYؕU6O`08[^;j66[h6qOa (&Heժ6>Ȯ<#W"XyɤRFdt*i:VBCJIN[7ث;|v^Y8ܠi"F#OMt%p^f:%)Lb1I ur?6P2pxx|Mbesd25UUfɑeiG[Y;UG\)TuUU3KSSPY&GblfyeUJ_APTPE#>.S3ZYrvv)%1Jہ@OLhSDRBZ6'wh[ gUZڕosks@H\%0(֢TQGT 4p (sᶆ2ԩLk38i:ZžgJH+bZi)Hy%A4bu%nleeMbzb(72K$p$LKUEe%WffqQ#VEj -MaQ`hW3 XGnvZ5Rh{D hUBRCke CNrv{'\;3JCXi_-ɲliּӵ-Nҋi=LR6䁌kl=c;UULڗn@[#8S.+a#Loueɧ\wl.v>Hgf9RY]< |O"u!%x$bxeO3Hi\H'uPM;]|6T=8e{YYs˻Ï߻e}2ɾ_O1b(P^? ߸G岄|xw]wee #tGF%-^nKnaG}Y.-U6zԉoBJ,6I'~?~ñvL>7aM 14K9GDI4XuhE UPw@I IX  6obyl7Q,zz۬yN'4%OXg^ުbgt&Yt 83 |?@_-la9dgeH@5~yvBK2E2M*ƫ,n X# HMO's` $ taZ[K[r *Mpjuf%1ѕcjӖ#XAL(.F٭ͥ*\n,=-'q[Ib=kYDUUJUUQtQi Vxa2PЭCU*հU-<>܁6! ~W$t?/JklYT>@q&<+)ZBq.LA{m]vȪ(\λ6ټ[GUq`C!P) mOR$V :ܚPU5I%RtdwyRxz_=v3\啚Z8.?H]4M58 }!DNFH`dv)Vx'c[B:U(I #IќjN JDN,i0(=d+i9,w[kt+՞eYѐYE;!ze痼?]x!F x$Aaa E%obT w6&_oǟMzba]IRh|JrtcIKM%ZܛyI勩KŖPU wCeJ w}CeM8C2sj76.TѬͮ +c$7R|4~{5i\ScEԂحك 7 \KSm-G`m~WYptcw9nTEzKs:_t)_<;:Jiu5&H)ћYms$VY7܂ֽ"/wxs+.f:wWyL>蔪rgEߐ~mh!+ 0ŦI5*g`Xi[,Rl?@^_H(ӍSn{M#F/ DMuBNsT֖EGAmC.1\oh!vujEͮuwF*fZOKЉ'8RC1> Lw_~&2e&4&E !(@ &T5ENqo{6U!\=.,}^ݹ]]i³6hLݲ=vd4vSgg9(*iOГѦ,KI!Pg/{`A2@@*6]mb~?Gb]Ivԅ{Xԥh,<+@GV%U (-PqjvZW'3(cdwu5r/t8?:ҸQ;8i|Nĕދ)E#Qψz|Xwva(P#@#P4\tmݸ$mm>bnM=9nbm[ _TSvy?Mzܓ,R_&^gDYdZS3=$qiH$nj^&&}mbU4TAeQ Yl.MkKi'2Fҝg7%(@VcQ5V["1d/<|M?ձ!6Df[E!hTEg g;Z(*eTtJ8@%: LWE5S+ی$a݉mvŮ+sD:&H]d`Kh *>X8 FX $9X<7#<ݰHGm݉"0";Q+3ef}lKo}uTDI+.=F@ɓDGQ!q-I!-2.nk Ļ7yU}ĊH$"q(]@: eMu/9|kSPbH HRjiH6N_1|};/ҨSYX8vXK[G|\|9[onG{S4[dW""_2ig 5 \T ϚsG!1M G.]7m 4b{m1![B66HRFҁAe .nO0}Dϛ?!밆d,cD2jס5nCi"sߖ%o.V?-c.kx% ^cLۿhw'v,&U]N4B)E:6RE>ML ܫM}NU<8Hڳ:e.RSs8DjƥjcNuPa֤M2NZW_]EBuev] WPC\P)$E\^sÝ7djZoN'q-T|2$FZ*SD\aa=c2(g(]_wl|ٙz:خܔ+ڞ5Έ=ĴIeI}k֕بU(?=Q놞ѓǼ~#Yg׿,u$T(QUoO,J-E6J*a&6ÕkpysܓKQn `X)nԆ:BS"JvR!1^}6zpFߧIt"O0;a$E-+hB蟟IģQR `rUE1$il? xv; zg?@vØW=SӕW))Y4493 Ъ-m2ֿ 9ao9ɠ"<*D8⣫el0eJڴ"Xc*fYP$8uP0UZEҶ;akk_ x4,lV][=r=9H=K,]$tz|tE'P5M*8k|)-2 SUw>1B4aD>(c@bHxG>_ʕߦYm湜2SeGQQO4u , őd Pl5Łm_ %ش~ EQ1GH)[Sq)"ʨ @L4Lt],ž q|G'KՉ$$[9d=LZrAՈշEI- vwI5=DJ $nڎw+ 2E' vҾ؛Ef`A*9LC`0HG_ϕkS^Xۙ\|=}KZХBkLMvܓ<~uϵSls Prgg2fctte}" fAfZL!1&"әYc-db0_|ޯM\޹W3 t6劏7n yԫZUNŮG5zL[ JYⅲ<5 (ITag8v]xf7ً˭˝Y#ݧ?JH٢(g[ `ETSl2OFM'523s0+ɨĤ AZʢ׵;Xm~ѵ6Am܃F.4Lϱ){B7W 2ӚbEIK),Ӊ+B  ǓR8նX2br&l]eteǤn$;2F4B9&*{fOK-ue4_ =T-ƓŎ7T@ r(AeRG"@$| b ];o=ae\Ǿ[9{.1"۳"f6i&o0Ρ.ols!nثN{ژoI=̙bR8CtguE}a INͫZRU MLtn)U-qɚh$title

    $abstractlua-orbit-2.2.1+dfsg/samples/toycms/templates/lablua/layout.html000066400000000000000000000017271227340735500247730ustar00rootroot00000000000000$import{"section_list"} Lablua - Home
    $view
    lua-orbit-2.2.1+dfsg/samples/toycms/templates/lablua/list_pubs.html000066400000000000000000000001331227340735500254500ustar00rootroot00000000000000$import{ "index_view" }

    $title

    $show_posts{ template = "simple_post.html" } lua-orbit-2.2.1+dfsg/samples/toycms/templates/lablua/post.html000066400000000000000000000003771227340735500244430ustar00rootroot00000000000000$import{ "index_view" }
    $body
    lua-orbit-2.2.1+dfsg/samples/toycms/templates/lablua/section_menu-people.html000066400000000000000000000003661227340735500274260ustar00rootroot00000000000000$import{ "section_list" }

    $title

    $section_list{ include_tags = { "people-%" }, template = "list_pubs.html" }
    lua-orbit-2.2.1+dfsg/samples/toycms/templates/lablua/section_menu-projects.html000066400000000000000000000002271227340735500277670ustar00rootroot00000000000000$import{ "index_view" }

    $title

    $show_posts
    lua-orbit-2.2.1+dfsg/samples/toycms/templates/lablua/section_menu-publications.html000066400000000000000000000003641227340735500306340ustar00rootroot00000000000000$import{ "section_list" }

    $title

    $section_list{ include_tags = { "pubs-%" }, template = "list_pubs.html" }
    lua-orbit-2.2.1+dfsg/samples/toycms/templates/lablua/simple_post.html000066400000000000000000000000071227340735500260020ustar00rootroot00000000000000$body lua-orbit-2.2.1+dfsg/samples/toycms/templates/lablua/styles/000077500000000000000000000000001227340735500241045ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/samples/toycms/templates/lablua/styles/print.css000066400000000000000000000016231227340735500257540ustar00rootroot00000000000000body { margin: 2em; padding: 0; font: 100% arial, hevetica, sans-serif; color: #000; background-color: #fff; } a { color: #000; text-decoration: none;} #header { border-bottom: 1px solid #999; } #header h1 { color: #000; } #mainnav { display: none; } #menu { display: none; } #menu ul { margin-left: 0; padding-left: 0; list-style-type: none; line-height: 165%; } #contents p { line-height: 165%; } .blogentry { border-bottom: 1px solid #999; } .blogentry ul { list-style-type: none; text-align: right; margin: 1em 0; padding: 0; font-size: 95%; } .blogentry li { display: inline; padding: 0 0 0 7px; } .imagefloat { display: none; } #footer { clear: both; color: #000; text-align: right; padding: 5px; font-size: 90%; border-top: 1px solid #999; margin-top: 2em; } #skipmenu { display: none; } lua-orbit-2.2.1+dfsg/samples/toycms/templates/lablua/styles/stylesheet1.css000066400000000000000000000036151227340735500270750ustar00rootroot00000000000000body { margin: 0; padding: 0; font: 85% arial, hevetica, sans-serif; text-align: center; color: #000066; background-color: #FFFFFF; // background-image: url(../images/img_39.gif); } a:link { color: #000066; } a:visited { color: #0000CC; } a:hover, a:active { color: #CCCCFF; background-color: #000066; } h2 { color: #000066; font: 140% georgia, times, "times new roman", serif; font-weight: bold; margin: 0 0 10px 0; } //h2 a { text-decoration: none; } h3 { color: #000066; font: 106% georgia, times, "times new roman", serif; font-weight: bold; margin-top: 0; } #container { margin: 1em auto; width: 720px; text-align: left; background-color: #FFFFFF; border: 1px none #0000CC; } #header { height: 45px; width: 100%; background-image: url(../images/header.jpg); background-repeat: no-repeat; background-position: 0 0; border-bottom: 1px solid #0000CC; position: relative; border: 1px none #0000CC; border-bottom: 1px solid #0000CC; } #header h1 { font-size: 1px; text-align: right; color: #000066; margin: 0; padding: 0; display: none; } #mainnav ul { list-style-type: none; } #mainnav li { display: inline; } #menu { float: right; width: 165px; border-left: 1px solid #0000CC; padding-left: 15px; } #contents { margin: 0 200px 40px 20px; } #contents p { line-height: 165%; } //.blogentry { border-bottom: 1px solid #0000CC; } .imagefloat { float: right; } #footer { clear: both; color: #CCCCFF; background-color: #0000CC; text-align: right; font-size: 90%; } #footer img { vertical-align: middle; } #skipmenu { position: absolute; left: 0; top: 5px; width: 645px; text-align: right; } #skipmenu a { color: #666; text-decoration: none; } #skipmenu a:hover { color: #fff; background-color: #666; text-decoration: none; } lua-orbit-2.2.1+dfsg/samples/toycms/templates/lablua/styles/stylesheet2.css000066400000000000000000000017341227340735500270760ustar00rootroot00000000000000#container { border: 1px solid #0000CC; } #mainnav { background-color: #0000CC; color: #CCCCFF; padding: 2px 0; margin-bottom: 22px; } #mainnav ul { margin: 0 0 0 20px; padding: 0; list-style-type: none; border-left: 1px solid #CCCCFF; } #mainnav li { display: inline; padding: 0 10px; border-right: 1px solid #CCCCFF; } #mainnav li a { text-decoration: none; color: #CCCCFF; } #mainnav li a:hover { text-decoration: none; color: #0000CC; background-color: #CCCCFF; } #menu ul { margin-left: 0; padding-left: 0; list-style-type: none; line-height: 165%; } .imagefloat { padding: 2px; border: 1px solid #0000CC; margin: 0 0 10px 10px; } .blogentry ul { list-style-type: none; text-align: right; margin: 1em 0; padding: 0; font-size: 95%; } .blogentry li { display: inline; padding: 0 0 0 7px; } #footer { background-color: #0000CC; padding: 5px; font-size: 90%; } lua-orbit-2.2.1+dfsg/samples/toycms/toycms.cgi000077500000000000000000000002521227340735500213270ustar00rootroot00000000000000#!/usr/bin/env lua51 local lfs = require "lfs" lfs.chdir("/path/to/toycms") local wscgi = require "wsapi.cgi" local toycms = require "toycms" wscgi.run(toycms.run) lua-orbit-2.2.1+dfsg/samples/toycms/toycms.db000066400000000000000000000160001227340735500211450ustar00rootroot00000000000000SQLite format 3@     ##tabletoycms_posttoycms_postCREATE TABLE toycms_post ("id" INTEGER PRIMARY KEY NOT NULL, "title" VARCHAR(255) DEFAULT "", "body" TEXT DEFAULT "", "abstract" TEXT DEFAULT "", "image" VARCHAR(255) DEFAULT "", "external_url" VARCHAR(255) DEFAULT "", "n_comments" INTEGER DEFAULT 0, "section_id" INTEGER DEFAULT NULL, "user_id" INTEGER DEFAULT NULL, "in_home" BOOLEAN DEFAULT FALSE, "published" BOOLEAN DEFAULT FALSE, "published_at" DATETIME DEFAULT NULL)W))itabletoycms_commenttoycms_commentCREATE TABLE toycms_comment ("id" INTEGER PRIMARY KEY NOT NULL, "post_id" INTEGER DEFAULT NULL, "author" VARCHAR(255) DEFAULT "", "email" VARCHAR(255) DEFAULT "", "url" VARCHAR(255) DEFAULT "", "body" TEXT DEFAULT "", "created_at" DATETIME DEFAULT NULL) N%NT##otabletoycms_usertoycms_userCREATE TABLE toycms_user ("id" INTEGER PRIMARY KEY NOT NULL, "login" VARCHAR(255) DEFAULT "", "password" VARCHAR(30) DEFAULT "", "name" VARCHAR(255) DEFAULT "")X))ktabletoycms_sectiontoycms_sectionCREATE TABLE toycms_section ("id" INTEGER PRIMARY KEY NOT NULL, "title" VARCHAR(255) DEFAULT "", "description" TEXT DEFAULT "", "tag" VARCHAR(255) DEFAULT "") lua-orbit-2.2.1+dfsg/samples/toycms/toycms.fcgi000077500000000000000000000002561227340735500215010ustar00rootroot00000000000000#!/usr/bin/env lua51 local lfs = require "lfs" lfs.chdir("/path/to/toycms") local wsfcgi = require "wsapi.fastcgi" local toycms = require"toycms" wsfcgi.run(toycms.run) lua-orbit-2.2.1+dfsg/samples/toycms/toycms.lua000066400000000000000000000264441227340735500213560ustar00rootroot00000000000000#!/usr/bin/env wsapi.cgi local orbit = require "orbit" local markdown = require "markdown" local orcache = require "orbit.cache" local cosmo = require "cosmo" local wsutil = require "wsapi.util" local toycms = setmetatable(orbit.new(), { __index = _G }) if _VERSION == "Lua 5.2" then _ENV = toycms else setfenv(1, toycms) end plugins = {} wsutil.loadfile("toycms_config.lua", toycms)() wsutil.loadfile("toycms_plugins.lua", toycms)() wsutil.loadfile("toycms_admin.lua", toycms)(toycms) local luasql = require("luasql." .. database.driver) local env = luasql[database.driver]() mapper.conn = env:connect(unpack(database.conn_data)) mapper.driver = database.driver models = { post = toycms:model "post", comment = toycms:model "comment", section = toycms:model "section", user = toycms:model "user" } cache = orcache.new(toycms, cache_path) function models.post:find_comments() return models.comment:find_all_by_approved_and_post_id{ true, self.id } end function models.post:find_months(section_ids) local months = {} local previous_month = {} local posts = self:find_all_by_published_and_section_id{ order = "published_at desc", true, section_ids } for _, post in ipairs(posts) do local date = os.date("*t", post.published_at) if previous_month.month ~= date.month or previous_month.year ~= date.year then previous_month = { month = date.month, year = date.year } months[#months + 1] = previous_month end end return months end function models.comment:make_link() local author = self.author or strings.anonymous_author if self.url and self.url ~= "" then return "" .. author .. "" elseif self.email and self.email ~= "" then return "" .. author .. "" else return author end end function models.section:find_by_tags(tags) return self:find_all("tag like ?", tags) end local template_cache = {} function load_template(name) local template = template_cache[name] if not template then local template_file = io.open(real_path .. "/templates/" .. template_name .. "/" .. name, "rb") if template_file then template = cosmo.compile(template_file:read("*a")) template_cache[name] = template template_file:close() end end return template end function load_plugin(name) local plugin, err = loadfile("plugins/" .. name .. ".lua") if not plugin then error("Error loading plugin " .. name .. ": " .. err) end return plugin end function new_template_env(web) local template_env = {} template_env.template_vpath = template_vpath or web:static_link("/templates/" .. template_name) template_env.today = date(os.time()) template_env.home_url = web:link("/") template_env.home_url_xml = web:link("/xml") function template_env.import(arg) local plugin_name = arg[1] local plugin = plugins[plugin_name] if not plugin then plugin = load_plugin(plugin_name) plugins[plugin_name] = plugin end for fname, f in pairs(plugin(web)) do template_env[fname] = f end return "" end return template_env end function new_section_env(web, section) local env = new_template_env(web) env.id = section.id env.title = section.title env.description = section.description env.tag = section.tag env.uri = web:link("/section/" .. section.id) return env end function new_post_env(web, post, section) local env = new_template_env(web) env.id = post.id env.title = post.title env.abstract = post.abstract env.body = cosmo.fill(post.body, { image_vpath = (image_vpath or web:static_link("/images")) .. "/" .. post.id }) env.markdown_body = markdown(env.body) env.day_padded = os.date("%d", post.published_at) env.day = tonumber(env.day_padded) env.month_name = month_names[tonumber(os.date("%m", post.published_at))] env.month_padded = os.date("%m", post.published_at) env.month = tonumber(env.month_padded) env.year = tonumber(os.date("%Y", post.published_at)) env.short_year = os.date("%y", post.published_at) env.hour_padded = os.date("%H", post.published_at) env.minute_padded = os.date("%M", post.published_at) env.hour = tonumber(env.hour_padded) env.minute = tonumber(env.minute_padded) env.date_string = date(post.published_at) if web:empty(post.external_url) then env.uri = web:link("/post/" .. post.id) else env.uri = post.external_url end env.n_comments = post.n_comments or 0 env.section_uri = web:link("/section/" .. post.section_id) section = section or models.section:find(post.section_id) env.section_title = section.title env.image_uri = (image_vpath or web:static_link("/images")) .. "/" .. post.id .. "/" .. (post.image or "") env.if_image = cosmo.cond(not web:empty(post.image), env) local form_env = {} form_env.author = web.input.author or "" form_env.email = web.input.email or "" form_env.url = web.input.url or "" setmetatable(form_env, { __index = env }) env.if_comment_open = cosmo.cond(post.comment_status ~= "closed", form_env) env.if_comment_moderated = cosmo.cond(post.comment_status == "moderated", form_env) env.if_comment_closed = cosmo.cond(post.comment_status == "closed", form_env) env.if_error_comment = cosmo.cond(not web:empty_param("error_comment"), env) env.if_comments = cosmo.cond((post.n_comments or 0) > 0, env) env.comments = function (arg, has_block) local comments = post:find_comments() local out, template if not has_block then local out = {} local template = load_template((arg and arg.template) or "comment.html") end for _, comment in ipairs(comments) do if has_block then cosmo.yield(new_comment_env(web, comment)) else local tdata = template(new_comment_env(web, comment)) table.insert(out, tdata) end end if not has_block then return table.concat(out, "\n") end end env.add_comment_uri = web:link("/post/" .. post.id .. "/addcomment") return env end function new_comment_env(web, comment) local env = new_template_env(web) env.author_link = comment:make_link() env.body = comment.body env.markdown_body = markdown(env.body) env.time_string = time(comment.created_at) env.day_padded = os.date("%d", comment.created_at) env.day = tonumber(env.day_padded) env.month_name = month_names[tonumber(os.date("%m", comment.created_at))] env.month_padded = os.date("%m", comment.created_at) env.month = tonumber(env.month_padded) env.year = tonumber(os.date("%Y", comment.created_at)) env.short_year = os.date("%y", comment.created_at) env.hour_padded = os.date("%H", comment.created_at) env.minute_padded = os.date("%M", comment.created_at) env.hour = tonumber(env.hour_padded) env.minute = tonumber(env.minute_padded) return env end function home_page(web) local template = load_template("home.html") if template then return layout(web, template(new_template_env(web))) else return not_found(web) end end toycms:dispatch_get(cache(home_page), "/") function home_xml(web) local template = load_template("home.xml") if template then web.headers["Content-Type"] = "text/xml" return template(new_template_env(web)) else return not_found(web) end end toycms:dispatch_get(cache(home_xml), "/xml") function view_section(type) return function (web, section_id) local section = models.section:find(tonumber(section_id)) if not section then return not_found(web) end local template = load_template("section_" .. tostring(section.tag) .. "." .. type) or load_template("section." .. type) if template then web.input.section_id = tonumber(section_id) local env = new_section_env(web, section) if type == "xml" then web.headers["Content-Type"] = "application/atom+xml" return template(env) else return layout(web, template(env)) end else return not_found(web) end end end toycms:dispatch_get(cache(view_section("html")), "/section/(%d+)") toycms:dispatch_get(cache(view_section("xml")), "/section/(%d+)/xml") function view_post(type) return function (web, post_id) local post = models.post:find(tonumber(post_id)) if not post then return not_found(web) end local section = models.section:find(post.section_id) local template = load_template("post_" .. tostring(section.tag) .. "." .. type) or load_template("post." .. type) if template then web.input.section_id = post.section_id web.input.post_id = tonumber(post_id) local env = new_post_env(web, post, section) if type == "xml" then web.headers["Content-Type"] = "application/atom+xml" return template(env) else return layout(web, template(env)) end else return not_found(web) end end end toycms:dispatch_get(cache(view_post("html")), "/post/(%d+)") toycms:dispatch_get(cache(view_post("xml")), "/post/(%d+)/xml") function archive(web, year, month) local template = load_template("archive.html") if template then web.input.month = tonumber(month) web.input.year = tonumber(year) local env = new_template_env(web) env.archive_month = web.input.month env.archive_month_name = month_names[web.input.month] env.archive_year = web.input.year env.archive_month_padded = month return layout(web, template(env)) else not_found(web) end end toycms:dispatch_get(cache(archive), "/archive/(%d+)/(%d+)") function add_comment(web, post_id) if web:empty_param("comment") then web.input.error_comment = "1" return web:redirect(web:link("/post/" .. post_id, web.input)) else local post = models.post:find(tonumber(post_id)) if web:empty(post.comment_status) or post.comment_status == "closed" then return web:redirect(web:link("/post/" .. post_id)) else local comment = models.comment:new() comment.post_id = post.id local body = web:sanitize(web.input.comment) comment.body = markdown(body) if not web:empty_param("author") then comment.author = web.input.author end if not web:empty_param("email") then comment.email = web.input.email end if not web:empty_param("url") then comment.url = web.input.url end if post.comment_status == "unmoderated" then comment.approved = true post.n_comments = (post.n_comments or 0) + 1 post:save() cache:invalidate("/", "/xml", "/section/" .. post.section_id, "/section/" .. post.section_id .. "/xml", "/post/" .. post.id, "/post/" .. post.id .. "/xml", "/archive/" .. os.date("%Y/%m", post.published_at)) else comment.approved = false end comment:save() return web:redirect(web:link("/post/" .. post_id)) end end end toycms:dispatch_post(add_comment, "/post/(%d+)/addcomment") toycms:dispatch_static("/templates/.+", "/images/.+") function layout(web, inner_html) local layout_template = load_template("layout.html") if layout_template then local env = new_template_env(web) env.view = inner_html return layout_template(env) else return inner_html end end function check_user(web) local user_id = web.cookies.user_id local password = web.cookies.password return models.user:find_by_id_and_password{ user_id, password } end return toycms lua-orbit-2.2.1+dfsg/samples/toycms/toycms.ws000066400000000000000000000000311227340735500212060ustar00rootroot00000000000000return require("toycms") lua-orbit-2.2.1+dfsg/samples/toycms/toycms_admin.lua000066400000000000000000000516301227340735500225210ustar00rootroot00000000000000 local orbit = require "orbit" local toycms = ... -- Admin interface function admin(web, section_id) if not check_user(web) then return web:redirect(web:link("/login", { link_to = web:link("/admin") })) else local params = {} if tonumber(section_id) then params.section = models.section:find(tonumber(section_id)) end return admin_layout(web, render_admin(web, params)) end end toycms:dispatch_get(admin, "/admin", "/admin/(%d+)") function login_get(web) return admin_layout(web, render_login(web, web.input)) end function login_post(web) local login = web.input.login local password = web.input.password local user = models.user:find_by_login{ login } if web:empty_param("link_to") then web.input.link_to = web:link("/") end if user then if password == user.password then web:set_cookie("user_id", user.id) web:set_cookie("password", user.password) return web:redirect(web.input.link_to) else return web:redirect(web:link("/login", { login = login, link_to = web.input.link_to, not_match = "1" })) end else return web:redirect(web:link("/login", { login = login, link_to = web.input.link_to, not_found = "1" })) end end toycms:dispatch_get(login_get, "/login") toycms:dispatch_post(login_post, "/login") function add_user_get(web) if not check_user(web) then return web:redirect(web:link("/login", { link_to = web:link("/adduser") })) else return admin_layout(web, render_add_user(web, web.input)) end end function add_user_post(web) if not check_user(web) then return web:redirect(web:link("/login", { link_to = web:link("/adduser") })) else local errors = {} if web:empty_param("login") then errors.login = strings.blank_user end if web:empty_param("password1") then errors.password = strings.blank_password end if web.input.password1 ~= web.input.password2 then errors.password = strings.password_mismatch end if web:empty_param("name") then errors.name = strings.blank_name end if not next(errors) then local user = models.user:new() user.login = web.input.login user.password = web.input.password1 user.name = web.input.name user:save() return web:redirect(web:link("/admin")) else for k, v in pairs(errors) do web.input["error_" .. k] = v end return web:redirect(web:link("/adduser", web.input)) end end end toycms:dispatch_get(add_user_get, "/adduser") toycms:dispatch_post(add_user_post, "/adduser") function edit_section_get(web, section_id) if not check_user(web) then return web:redirect(web:link("/login", { link_to = web:link("/editsection") })) else section_id = tonumber(section_id) if section_id then web.input.section = models.section:find_by_id{ section_id } else web.input.section = models.section:new() end return admin_layout(web, render_edit_section(web, web.input)) end end function edit_section_post(web, section_id) if not check_user(web) then return web:redirect(web:link("/login", { link_to = web:link("/editsection") })) else section_id = tonumber(section_id) local errors = {} if web:empty_param("title") then errors.title = strings.blank_title end if not next(errors) then local section if section_id then section = models.section:find_by_id{ section_id } else section = models.section:new() end section.title = web.input.title section.description = web.input.description section.tag = web.input.tag section:save() cache:nuke() return web:redirect(web:link("/editsection/" .. section.id)) else for k, v in pairs(errors) do web.input["error_" .. k] = v end if section_id then return web:redirect(web:link("/editsection/" .. section_id, web.input)) else return web:redirect(web:link("/editsection", web.input)) end end end end toycms:dispatch_get(edit_section_get, "/editsection", "/editsection/(%d+)") toycms:dispatch_post(edit_section_post, "/editsection", "/editsection/(%d+)") function delete_section(web, section_id) if not check_user(web) then return web:redirect(web:link("/login", { link_to = web:link("/editsection/" .. section_id) })) else section_id = tonumber(section_id) local section = models.section:find(section_id) if section then section:delete() cache:nuke() return web:redirect(web:link("/admin")) end end end toycms:dispatch_post(delete_section, "/deletesection/(%d+)") function delete_post(web, post_id) if not check_user(web) then return web:redirect(web:link("/login", { link_to = web:link("/editpost/" .. post_id) })) else post_id = tonumber(post_id) local post = models.post:find(post_id) if post then post:delete() cache:nuke() return web:redirect(web:link("/admin")) end end end toycms:dispatch_post(delete_post, "/deletepost/(%d+)") function edit_post_get(web, post_id) if not check_user(web) then return web:redirect(web:link("/login", { link_to = web:link("/editpost") })) else post_id = tonumber(post_id) if post_id then web.input.post = models.post:find_by_id{ post_id } else web.input.post = models.post:new() end web.input.sections = models.section:find_all() return admin_layout(web, render_edit_post(web, web.input)) end end function edit_post_post(web, post_id) if not check_user(web) then return web:redirect(web:link("/login", { link_to = web:link("/editpost") })) else post_id = tonumber(post_id) local errors = {} if web:empty_param("title") then errors.title = strings.blank_title end if not next(errors) then local post if post_id then post = models.post:find_by_id{ post_id } else post = models.post:new() end post.title = web.input.title post.abstract = web.input.abstract post.image = web.input.image if web:empty_param("published_at") then post.published_at = nil else local day, month, year, hour, minute = string.match(web.input.published_at, "(%d+)-(%d+)-(%d+) (%d+):(%d+)") post.published_at = os.time({ day = day, month = month, year = year, hour = hour, min = minute }) end post.body = web.input.body post.section_id = tonumber(web.input.section_id) post.published = (not web:empty_param("published")) post.external_url = web.input.external_url post.in_home = (not web:empty_param("in_home")) post.user_id = check_user(web).id post.comment_status = web.input.comment_status post:save() cache:nuke() return web:redirect(web:link("/editpost/" .. post.id)) else for k, v in pairs(errors) do web.input["error_" .. k] = v end if post_id then return web:redirect(web:link("/editpost/" .. post_id, web.input)) else return web:redirect(web:link("/editpost", web.input)) end end end end toycms:dispatch_get(edit_post_get, "/editpost", "/editpost/(%d+)") toycms:dispatch_post(edit_post_post, "/editpost", "/editpost/(%d+)") function manage_comments(web) if not check_user(web) then return web:redirect(web:link("/login", { link_to = web:link("/comments") })) else local params = {} local post_model = models.post params.for_mod = models.comment:find_all_by_approved{ false, order = "created_at desc", inject = { model = post_model, fields = { "title" } } } params.approved = models.comment:find_all_by_approved{ true, order = "created_at desc", inject = { model = post_model, fields = { "title" } } } return admin_layout(web, render_manage_comments(web, params)) end end toycms:dispatch_get(manage_comments, "/comments") function approve_comment(web, id) if not check_user(web) then return web:redirect(web:link("/login", { link_to = web:link("/comments#" .. id) })) else local comment = models.comment:find(tonumber(id)) if comment then comment.approved = true comment:save() local post = models.post:find(comment.post_id) post.n_comments = (post.n_comments or 0) + 1 post:save() cache:invalidate("/", "/xml", "/section/" .. post.section_id, "/section/" .. post.section_id .. "/xml", "/post/" .. post.id, "/post/" .. post.id .. "/xml", "/archive/" .. string.format("%Y/%m", post.published_at)) return web:redirect(web:link("/comments#" .. id)) end end end toycms:dispatch_post(approve_comment, "/comment/(%d+)/approve") function delete_comment(web, id) if not check_user(web) then return web:redirect(web:link("/login", { link_to = web:link("/comments#" .. id) })) else local comment = models.comment:find(tonumber(id)) if comment then if comment.approved then local post = models.post:find(comment.post_id) post.n_comments = post.n_comments - 1 post:save() cache:invalidate("/", "/xml", "/section/" .. post.section_id, "/section/" .. post.section_id .. "/xml", "/post/" .. post.id, "/post/" .. post.id .. "/xml", "/archive/" .. string.format("%Y/%m", post.published_at)) end comment:delete() return web:redirect(web:link("/comments")) end end end toycms:dispatch_post(delete_comment, "/comment/(%d+)/delete") toycms:dispatch_static("/admin_style%.css") local function error_message(msg) return "" .. msg .. "" end function admin_layout(web, inner_html) return html{ head{ title"ToyCMS Admin", meta{ ["http-equiv"] = "Content-Type", content = "text/html; charset=utf-8" }, link{ rel = 'stylesheet', type = 'text/css', href = web:static_link('/admin_style.css'), media = 'screen' } }, body{ div{ id = "container", div{ id = "header", title = "sitename", "ToyCMS Admin" }, div{ id = "mainnav", ul { li{ a{ href = web:link("/admin"), strings.admin_home } }, li{ a{ href = web:link("/adduser"), strings.new_user } }, li{ a{ href = web:link("/editsection"), strings.new_section } }, li{ a{ href = web:link("/editpost"), strings.new_post } }, li{ a{ href = web:link("/comments"), strings.manage_comments } }, } }, div{ id = "menu", _admin_menu(web, args) }, div{ id = "contents", inner_html }, div{ id = "footer", "Copyright 2007 Fabio Mascarenhas" } } } } end function _admin_menu(web) local res = {} local user = check_user(web) if user then res[#res + 1] = ul{ li{ strings.logged_as, (user.name or user.login) } } res[#res + 1] = h3(strings.sections) local section_list = {} local sections = models.section:find_all() for _, section in ipairs(sections) do section_list[#section_list + 1] = li{ a{ href=web:link("/admin/" .. section.id), section.title } } end res[#res + 1] = ul(table.concat(section_list,"\n")) end return table.concat(res, "\n") end function render_admin(web, params) local section_list local sections = models.section:find_all({ order = "id asc" }) if params.section then local section = params.section local res_section = {} res_section[#res_section + 1] = "
    \n" res_section[#res_section + 1] = h2(strings.section .. ": " .. a{ href = web:link("/editsection/" .. section.id), section.title }) local posts = models.post:find_all_by_section_id{ section.id, order = "published_at desc" } res_section[#res_section + 1] = "

    " for _, post in ipairs(posts) do local in_home, published = "", "" if post.in_home then in_home = " [HOME]" end if post.published then published = " [P]" end res_section[#res_section + 1] = a{ href = web:link("/editpost/" .. post.id), post.title } .. in_home .. published .. br() end res_section[#res_section + 1] = "

    " res_section[#res_section + 1] = p{ a.button{ href = web:link("/editpost?section_id=" .. section.id), button{ strings.new_post } } } res_section[#res_section + 1] = "
    \n" section_list = table.concat(res_section, "\n") elseif next(sections) then local res_section = {} for _, section in ipairs(sections) do res_section[#res_section + 1] = "
    \n" res_section[#res_section + 1] = h2(strings.section .. ": " .. a{ href = web:link("/editsection/" .. section.id), section.title }) local posts = models.post:find_all_by_section_id{ section.id, order = "published_at desc" } res_section[#res_section + 1] = "

    " for _, post in ipairs(posts) do local in_home, published = "", "" if post.in_home then in_home = " [HOME]" end if post.published then published = " [P]" end res_section[#res_section + 1] = a{ href = web:link("/editpost/" .. post.id), post.title } .. in_home .. published .. br() end res_section[#res_section + 1] = "

    " res_section[#res_section + 1] = p{ a.button { href = web:link("/editpost?section_id=" .. section.id), button{ strings.new_post } } } res_section[#res_section + 1] = "
    \n" end section_list = table.concat(res_section, "\n") else section_list = strings.no_sections end return div(section_list) end function render_login(web, params) local res = {} local err_msg = "" if params.not_match then err_msg = p{ error_message(strings.password_not_match) } elseif params.not_found then err_msg = p{ error_message(strings.user_not_found) } end res[#res + 1] = h2"Login" res[#res + 1] = err_msg res[#res + 1] = form{ method = "post", action = web:link("/login"), input{ type = "hidden", name = "link_to", value = params.link_to }, p{ strings.login, br(), input{ type = "text", name = "login", value = params.login or "" }, br(), br(), strings.password, br(), input{ type = "password", name = "password" }, br(), br(), input{ type = "submit", value = strings.login_button } } } return div(res) end function render_add_user(web, params) local error_login, error_password, error_name = "", "", "" if params.error_login then error_login = error_message(params.error_login) .. br() end if params.error_password then error_password = error_message(params.error_password) .. br() end if params.error_name then error_name = error_message(params.error_name) .. br() end return div{ h2(strings.new_user), form{ method = "post", action = web:link("/adduser"), p{ strings.login, br(), error_login, input{ type = "text", name = "login", value = params.login }, br(), br(), strings.password, br(), error_password, input{ type = "password", name = "password1" }, br(), input{ type = "password", name = "password2" }, br(), br(), strings.name, br(), error_name, input{ type = "text", name = "name", value = params.name }, br(), br(), input{ type = "submit", value = strings.add } } }, } end function render_edit_section(web, params) local error_title = "" if params.error_title then error_title = error_message(params.error_title) .. br() end local page_header, button_text if not params.section.id then page_header = strings.new_section button_text = strings.add else page_header = strings.edit_section button_text = strings.edit end local action local delete if params.section.id then action = web:link("/editsection/" .. params.section.id) delete = form{ method = "post", action = web:link("/deletesection/" .. params.section.id), input{ type = "submit", value = strings.delete } } else action = web:link("/editsection") end return div{ h2(page_header), form{ method = "post", action = action, p{ strings.title, br(), error_title, input{ type = "text", name = "title", value = params.title or params.section.title }, br(), br(), strings.description, br(), textarea{ name = "description", rows = "5", cols = "40", params.description or params.section.description }, br(), br(), strings.tag, br(), input{ type = "text", name = "tag", value = params.tag or params.section.tag }, br(), br(), input{ type = "submit", value = button_text } } }, delete } end function render_edit_post(web, params) local error_title = "" if params.error_title then error_title = error_message(params.error_title) .. br() end local page_header, button_text if not params.post.id then page_header = strings.new_post button_text = strings.add else page_header = strings.edit_post button_text = strings.edit end local action local delete if params.post.id then action = web:link("/editpost/" .. params.post.id) delete = form{ method = "post", action = web:link("/deletepost/" .. params.post.id), input{ type = "submit", value = strings.delete } } else action = web:link("/editpost") end local sections = {} for _, section in pairs(params.sections) do sections[#sections + 1] = option{ value = section.id, selected = (section.id == (tonumber(params.section_id) or params.post.section_id)) or nil, section.title } end sections = "" local comment_status = {} for status, text in pairs({ closed = strings.closed, moderated = strings.moderated, unmoderated = strings.unmoderated }) do comment_status[#comment_status + 1] = option{ value = status, selected = (status == (params.comment_status or params.post.comment_status)) or nil, text } end local comment_status = "" return div{ h2(page_header), form{ method = "post", action = action, p{ strings.section, br(), sections, br(), br(), strings.title, br(), error_title, input{ type = "text", name = "title", value = params.title or params.post.title }, br(), br(), strings.index_image, br(), error_title, input{ type = "text", name = "image", value = params.image or params.post.image }, br(), br(), strings.external_url, br(), input{ type = "text", name = "external_url", value = params.external_url or params.post.external_url }, br(), br(), strings.abstract, br(), textarea{ name = "abstract", rows = "5", cols = "40", params.abstract or params.post.abstract }, br(), br(), strings.body, br(), textarea{ name = "body", rows = "15", cols = "80", params.body or params.post.body }, br(), br(), strings.comment_status, br(), comment_status, br(), br(), strings.published_at, br(), input{ type = "text", name = "published_at", value = params.published_at or os.date("%d-%m-%Y %H:%M", params.post.published_at) }, br(), br(), input{ type = "checkbox", name = "published", value = "1", checked = params.published or params.post.published or nil }, strings.published, br(), br(), input{ type = "checkbox", name = "in_home", value = "1", checked = params.in_home or params.post.in_home or nil }, strings.in_home, br(), br(), input{ type = "submit", value = button_text } } }, delete } end function render_manage_comments(web, params) local for_mod = {} for _, comment in ipairs(params.for_mod) do for_mod[#for_mod + 1] = div{ p{ id = comment.id, strong{ strings.comment_by, " ", comment:make_link(), " ", strings.on_post, " ", a{ href = web:link("/post/" .. comment.post_id), comment.post_title }, " ", strings.on, " ", time(comment.created_at), ":" } }, markdown(comment.body), p{ form{ action = web:link("/comment/" .. comment.id .. "/approve"), method = "post", input{ type = "submit", value = strings.approve } }, form{ action = web:link("/comment/" .. comment.id .. "/delete"), method = "post", input{ type = "submit", value = strings.delete } } }, } end local approved = {} for _, comment in ipairs(params.approved) do approved[#approved + 1] = div{ p{ id = comment.id, strong{ strings.comment_by, " ", comment:make_link(), " ", strings.on_post, " ", a{ href = web:link("/post/" .. comment.post_id), comment.post_title }, " ", strings.on, " ", time(comment.created_at), ":" } }, markdown(comment.body), p{ form{ action = web:link("/comment/" .. comment.id .. "/delete"), method = "post", input{ type = "submit", value = strings.delete } } }, } end if #for_mod == 0 then for_mod = { p{ strings.no_comments } } end if #approved == 0 then approved = { p{ strings.no_comments } } end return div{ h2(strings.waiting_moderation), table.concat(for_mod, "\n"), h2(strings.published), table.concat(approved, "\n") } end orbit.htmlify(toycms, "_.+", "admin_layout", "render_.+") lua-orbit-2.2.1+dfsg/samples/toycms/toycms_config.lua000066400000000000000000000130571227340735500226770ustar00rootroot00000000000000 -- Uncomment next line to enable X-Sendfile for sending static files -- use_xsendfile = true database = { driver = "sqlite3", conn_data = { real_path .. "/blog.db" } -- driver = "mysql", -- conn_data = { "blog", "root", "password" } } template_name = "blog" -- Comment this for in-memory caching cache_path = real_path .. "/page_cache" -- Uncomment the following line to set a url prefix -- prefix = "/foobar" -- The next two lines are if you want the templates' static files -- and post images to be served by the web server instead of ToyCMS -- template_vpath should point to the folder where the template you use is, -- image_vpath to the folder where ToyCMS stores post's images -- template_vpath = "/templates" -- image_vpath = "/images" strings = {} strings.pt = { closed = "Closed", moderated = "Moderated", unmoderated = "Unmoderated", comment_status = "Comments", anonymous_author = "Anonymous", external_url = "External URL", logged_as = "Logged in as ", password_not_match = "Password does not match!", user_not_found = "User not found!", name = "Name", login = "Email", password = "Password", login_button = "Login", new_user = "Add User", blank_user = "Login cannot be blank", blank_password = "Password cannot be blank", blank_name = "Name cannot be blank", blank_title = "Title cannot be blank", password_mismatch = "Passwords do not match", new_section = "Add Section", add = "Add", edit = "Edit", delete = "Delete", edit_section = "Edit Section", title = "Title", description = "Description", tag = "Tag", sections = "Sections", users = "Users", posts = "Posts", no_sections = "No sections!", no_posts = "No posts!", admin_console = "Admin console", new_post = "Add Post", edit_post = "Edit Post", published = "Published", published_at = "Published at", body = "Body", abstract = "Abstract", section = "Section", index_image = "Index image", in_home = "Show in home page", admin_home = "Admin Home", manage_comments = "Manage Comments", comment_by = "Comment by", on_post = "on post", at = "at", approve = "Approve", waiting_moderation = "Waiting Moderation", on = "on", no_comments = "There are no comments!" } strings.en = { closed = "Closed", moderated = "Moderated", unmoderated = "Unmoderated", comment_status = "Comments", anonymous_author = "Anonymous", external_url = "External URL", logged_as = "Logged in as ", password_not_match = "Password does not match!", user_not_found = "User not found!", name = "Name", login = "Email", password = "Password", login_button = "Login", new_user = "Add User", blank_user = "Login cannot be blank", blank_password = "Password cannot be blank", blank_name = "Name cannot be blank", blank_title = "Title cannot be blank", password_mismatch = "Passwords do not match", new_section = "Add Section", add = "Add", edit = "Edit", delete = "Delete", edit_section = "Edit Section", title = "Title", description = "Description", tag = "Tag", sections = "Sections", users = "Users", posts = "Posts", no_sections = "No sections!", no_posts = "No posts!", admin_console = "Admin console", new_post = "Add Post", edit_post = "Edit Post", published = "Published", published_at = "Published at", body = "Body", abstract = "Abstract", section = "Section", index_image = "Index image", in_home = "Show in home page", admin_home = "Admin Home", manage_comments = "Manage Comments", comment_by = "Comment by", on_post = "on post", at = "at", approve = "Approve", waiting_moderation = "Waiting Moderation", on = "on", no_comments = "There are no comments!" } language = "en" strings = strings[language] months = {} months.pt = { "Janeiro", "Fevereiro", "Maro", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" } months.en = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" } month_names = months[language] weekdays = {} weekdays.pt = { "Domingo", "Segunda", "Tera", "Quarta", "Quinta", "Sexta", "Sbado" } weekdays.en = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" } -- Utility functions time = {} date = {} month = {} local datetime_mt = { __call = function (tab, date) return tab[language](date) end } setmetatable(time, datetime_mt) setmetatable(date, datetime_mt) setmetatable(month, datetime_mt) function time.pt(date) local time = os.date("%H:%M", date) date = os.date("*t", date) return date.day .. " de " .. months.pt[date.month] .. " de " .. date.year .. " às " .. time end function date.pt(date) date = os.date("*t", date) return weekdays.pt[date.wday] .. ", " .. date.day .. " de " .. months.pt[date.month] .. " de " .. date.year end function month.pt(month) return months.pt[month.month] .. " de " .. month.year end local function ordinalize(number) if number == 1 then return "1st" elseif number == 2 then return "2nd" elseif number == 3 then return "3rd" else return tostring(number) .. "th" end end function time.en(date) local time = os.date("%H:%M", date) date = os.date("*t", date) return months.en[date.month] .. " " .. ordinalize(date.day) .. " " .. date.year .. " at " .. time end function date.en(date) date = os.date("*t", date) return weekdays.en[date.wday] .. ", " .. months.en[date.month] .. " " .. ordinalize(date.day) .. " " .. date.year end function month.en(month) return months.en[month.month] .. " " .. month.year end lua-orbit-2.2.1+dfsg/samples/toycms/toycms_plugins.lua000066400000000000000000000111011227340735500230770ustar00rootroot00000000000000 function plugins.date(web) return { today_day = tonumber(os.date("%d", os.time())), today_month_name = month_names[tonumber(os.date("%m", os.time()))], today_year = tonumber(os.date("%Y", os.time())) } end function plugins.archive(web) return { month_list = function (arg, has_block) if arg and arg.include_tags then local sections = models.section:find_all("tag like ?", { arg.include_tags }) local section_ids = {} for _, section in ipairs(sections) do section_ids[#section_ids + 1] = section.id end local months = models.post:find_months(section_ids) local out, template if not has_block then out = {} template = load_template(arg.template or "month_list.html") end for _, month in ipairs(months) do local env = new_template_env(web) env.month = month.month env.year = month.year env.month_padded = string.format("%.2i", month.month) env.month_name = month_names[month.month] env.uri = web:link("/archive/" .. env.year .. "/" .. env.month_padded) if has_block then cosmo.yield(env) else local tdata = template(env) table.insert(out, tdata) end end if not has_block then return table.concat(out, "\n") end else return ((not has_block) and "") or nil end end } end function plugins.section_list(web) return { section_list = function (arg, has_block) arg = arg or {} local template_name = arg.template if arg.include_tags then arg = { arg.include_tags } arg.condition = "tag like ?" end local out, template if not has_block then out = {} template = load_template(template_name or "section_list.html") end local sections = models.section:find_all(arg.condition, arg) for _, section in ipairs(sections) do web.input.section_id = section.id local env = new_section_env(web, section) if has_block then cosmo.yield(env) else local tdata = template(env) table.insert(out, tdata) end end if not has_block then return table.concat(out, "\n") end end } end local function get_posts(web, condition, args, count, template) local posts = models.post:find_all(condition, args) local cur_date local out if template then out = {} end for i, post in ipairs(posts) do if count and (i > count) then break end local env = new_post_env(web, post) env.if_new_date = cosmo.cond(cur_date ~= env.date_string, env) if cur_date ~= env.date_string then cur_date = env.date_string end env.if_first = cosmo.cond(i == 1, env) env.if_not_first = cosmo.cond(i ~= 1, env) env.if_last = cosmo.cond(i == #posts, env) env.if_not_post = cosmo.cond(web.input.post_id ~= post.id, env) if template then local tdata = template(env) table.insert(out, tdata) else cosmo.yield(env) end end if template then return table.concat(out, "\n") end end function plugins.home(web) return { headlines = function (arg, has_block) local template if not has_block then template = load_template("home_short_info.html") end return get_posts(web, "in_home = ? and published = ?", { order = "published_at desc", true, true }, nil, template) end } end function plugins.index_view(web) return { show_posts = function (arg, has_block) local section_ids = {} local template_file = (arg and arg.template) or "index_short_info.html" if arg and arg.include_tags then local sections = models.section:find_by_tags{ arg.include_tags } for _, section in ipairs(sections) do section_ids[#section_ids + 1] = section.id end elseif web.input.section_id then section_ids[#section_ids + 1] = web.input.section_id end if #section_ids == 0 then return "" end local date_start, date_end if arg and arg.archive and web.input.month and web.input.year then date_start = os.time({ year = web.input.year, month = web.input.month, day = 1 }) date_end = os.time({ year = web.input.year + math.floor(web.input.month / 12), month = (web.input.month % 12) + 1, day = 1 }) end local template if not has_block then template = load_template(template_file) end return get_posts(web, "published = ? and section_id = ? and " .. "published_at >= ? and published_at <= ?", { order = "published_at desc", true, section_ids, date_start, date_end }, (arg and arg.count), template) end } end lua-orbit-2.2.1+dfsg/samples/toycms/toycms_schema.mysql000066400000000000000000000024571227340735500232600ustar00rootroot00000000000000CREATE TABLE toycms_post (`id` INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, `title` VARCHAR(255) DEFAULT '', `body` TEXT DEFAULT '', `abstract` TEXT DEFAULT '', `image` VARCHAR(255) DEFAULT '', `external_url` VARCHAR(255) DEFAULT '', `comment_status` VARCHAR(30) DEFAULT 'closed', `n_comments` INTEGER DEFAULT 0, `section_id` INTEGER DEFAULT NULL, `user_id` INTEGER DEFAULT NULL, `in_home` BOOLEAN DEFAULT FALSE, `published` BOOLEAN DEFAULT FALSE, `published_at` DATETIME DEFAULT NULL); CREATE TABLE toycms_comment (`id` INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, `post_id` INTEGER DEFAULT NULL, `author` VARCHAR(255) DEFAULT '', `email` VARCHAR(255) DEFAULT '', `url` VARCHAR(255) DEFAULT '', `body` TEXT DEFAULT '', `approved` BOOLEAN DEFAULT FALSE, `created_at` DATETIME DEFAULT NULL); CREATE TABLE toycms_section (`id` INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, `title` VARCHAR(255) DEFAULT '', `description` TEXT DEFAULT '', `tag` VARCHAR(255) DEFAULT ''); CREATE TABLE toycms_user (`id` INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, `login` VARCHAR(255) DEFAULT '', `password` VARCHAR(30) DEFAULT '', `name` VARCHAR(255) DEFAULT ''); lua-orbit-2.2.1+dfsg/samples/toycms/toycms_schema.sql000066400000000000000000000023551227340735500227070ustar00rootroot00000000000000CREATE TABLE toycms_post ("id" INTEGER PRIMARY KEY NOT NULL, "title" VARCHAR(255) DEFAULT "", "body" TEXT DEFAULT "", "abstract" TEXT DEFAULT "", "image" VARCHAR(255) DEFAULT "", "external_url" VARCHAR(255) DEFAULT "", "comment_status" VARCHAR(30) DEFAULT "closed", "n_comments" INTEGER DEFAULT 0, "section_id" INTEGER DEFAULT NULL, "user_id" INTEGER DEFAULT NULL, "in_home" BOOLEAN DEFAULT "f", "published" BOOLEAN DEFAULT "f", "published_at" DATETIME DEFAULT NULL); CREATE TABLE toycms_comment ("id" INTEGER PRIMARY KEY NOT NULL, "post_id" INTEGER DEFAULT NULL, "author" VARCHAR(255) DEFAULT "", "email" VARCHAR(255) DEFAULT "", "url" VARCHAR(255) DEFAULT "", "body" TEXT DEFAULT "", "approved" BOOLEAN DEFAULT "f", "created_at" DATETIME DEFAULT NULL); CREATE TABLE toycms_section ("id" INTEGER PRIMARY KEY NOT NULL, "title" VARCHAR(255) DEFAULT "", "description" TEXT DEFAULT "", "tag" VARCHAR(255) DEFAULT ""); CREATE TABLE toycms_user ("id" INTEGER PRIMARY KEY NOT NULL, "login" VARCHAR(255) DEFAULT "", "password" VARCHAR(30) DEFAULT "", "name" VARCHAR(255) DEFAULT ""); lua-orbit-2.2.1+dfsg/src/000077500000000000000000000000001227340735500151305ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/src/launchers/000077500000000000000000000000001227340735500171145ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/src/launchers/op.cgi000077500000000000000000000011271227340735500202220ustar00rootroot00000000000000#!/usr/bin/lua -- Orbit pages launcher, extracts script to launch -- from SCRIPT_FILENAME/PATH_TRANSLATED local common = require "wsapi.common" local cgi = require "wsapi.cgi" local ok, err = pcall(require, "cosmo") if not ok then io.stderr:write("Cosmo not loaded:\n" .. err .. "\n\nPlease install cosmo with LuaRocks\n") os.exit(1) end local op = require "orbit.pages" local arg_filename = (...) local function op_loader(wsapi_env) common.normalize_paths(wsapi_env, arg_filename, "op.cgi", { "SCRIPT_FILENAME", "PATH_TRANSLATED" }) return op.run(wsapi_env) end cgi.run(op_loader) lua-orbit-2.2.1+dfsg/src/launchers/op.fcgi000077500000000000000000000021761227340735500203750ustar00rootroot00000000000000#!/usr/bin/lua -- Orbit pages launcher, extracts script to launch local common = require "wsapi.common" local ok, err = pcall(require, "wsapi.fastcgi") if not ok then io.stderr:write("WSAPI FastCGI not loaded:\n" .. err .. "\n\nPlease install wsapi-fcgi with LuaRocks\n") os.exit(1) end local ok, err = pcall(require, "cosmo") if not ok then io.stderr:write("Cosmo not loaded:\n" .. err .. "\n\nPlease install cosmo with LuaRocks\n") os.exit(1) end local ONE_HOUR = 60 * 60 local ONE_DAY = 24 * ONE_HOUR local op_loader = common.make_isolated_launcher{ filename = nil, -- if you want to force the launch of a single script launcher = "op.fcgi", -- the name of this launcher modname = "orbit.pages", -- WSAPI application that processes the script reload = false, -- if you want to reload the application on every request period = ONE_HOUR, -- frequency of Lua state staleness checks ttl = ONE_DAY, -- time-to-live for Lua states vars = -- order of checking for the path of the script { "SCRIPT_FILENAME", "PATH_TRANSLATED" } } wsapi.fastcgi.run(op_loader) lua-orbit-2.2.1+dfsg/src/launchers/orbit000077500000000000000000000053471227340735500201720ustar00rootroot00000000000000#!/usr/bin/env lua ------------------------------------------------------------------------------- -- -- Starts the orbit server -- -- ------------------------------------------------------------------------------- local ok, err = pcall(require, "wsapi.xavante") if not ok then io.stderr:write("WSAPI Xavante support not loaded:\n" .. err .. "\n\nPlease install wsapi-xavante with LuaRocks\n") os.exit(1) end local lfs = require "lfs" local xavante = require "xavante" local httpd = require "xavante.httpd" local vhostshandler = require "xavante.vhostshandler" local urlhandler = require "xavante.urlhandler" local util = require "wsapi.util" local wsapi = require "wsapi" local wsx = require "wsapi.xavante" local usage = [[ Usage: orbit [options] Starts a Xavante instance to serve a single Orbit application. Adds the application's path to LUA_PATH. Options: -l, --log= Logs all output to the file (default stdout and stderr) -p, --port= Binds to the specified port (default 8080) -h, --help Shows this help screen ]] local opts, args = util.getopt({ ... }, "lp") local app, app_args = args[1], { select(2, unpack(args)) } if not app or opts.h or opts.help then print(usage) os.exit(1) end if opts.l or opts.log then local logfile = opts.l or opts.log local tostring = tostring local log = io.open(logfile, "a+") if not log then error("Could not open log file. Please check the write permissions for: " .. logfile) end io.stdout = log io.stderr = log print = function (...) local nargs = select('#', ...) for i = 1, nargs-1 do log:write(tostring((select(i, ...)))) log:write("\t") end log:write(tostring(select(nargs, ...))) log:write("\n") log:flush() end end local path, name = app:match("^(.+[/\\])?([%w%._%- ]+)$") if not path then path, name = "", app end if app:sub(1, 1) ~= "/" and app:sub(1, 1) ~= "\\" and not app:match("^%a:\\") then path = lfs.currentdir() .. "/" .. path end package.path = package.path .. ";" .. path .. "?.lua;" .. path .. "?/?.lua" wsapi.app_path = path local app_func, err = loadfile(path .. name) if not app_func then error(err) end local app = app_func(unpack(app_args)) if not app then app = _G[name:match("(.+)%.")] end if type(app) == "table" then app = app.run end httpd.handle_request = vhostshandler { [""] = urlhandler { ["/"] = wsx.makeHandler (app, nil, path, path), } } httpd.register ("*", tonumber(opts.p or opts.port) or 8080, "Xavante 2.3") xavante.start_message(function (ports) print(string.format("Starting Orbit server at port %s", table.concat(ports, ", "))) end) xavante.start() lua-orbit-2.2.1+dfsg/src/orbit.lua000066400000000000000000000373261227340735500167650ustar00rootroot00000000000000local wsapi = require "wsapi" local wsreq = require "wsapi.request" local wsres = require "wsapi.response" local wsutil = require "wsapi.util" local orm local orpages local _M = _M or {} _M._NAME = "orbit" _M._VERSION = "2.2.1" _M._COPYRIGHT = "Copyright (C) 2007-2013 Kepler Project" _M._DESCRIPTION = "MVC Web Development for the Kepler platform" local REPARSE = {} _M.mime_types = { ez = "application/andrew-inset", atom = "application/atom+xml", hqx = "application/mac-binhex40", cpt = "application/mac-compactpro", mathml = "application/mathml+xml", doc = "application/msword", bin = "application/octet-stream", dms = "application/octet-stream", lha = "application/octet-stream", lzh = "application/octet-stream", exe = "application/octet-stream", class = "application/octet-stream", so = "application/octet-stream", dll = "application/octet-stream", dmg = "application/octet-stream", oda = "application/oda", ogg = "application/ogg", pdf = "application/pdf", ai = "application/postscript", eps = "application/postscript", ps = "application/postscript", rdf = "application/rdf+xml", smi = "application/smil", smil = "application/smil", gram = "application/srgs", grxml = "application/srgs+xml", mif = "application/vnd.mif", xul = "application/vnd.mozilla.xul+xml", xls = "application/vnd.ms-excel", ppt = "application/vnd.ms-powerpoint", rm = "application/vnd.rn-realmedia", wbxml = "application/vnd.wap.wbxml", wmlc = "application/vnd.wap.wmlc", wmlsc = "application/vnd.wap.wmlscriptc", vxml = "application/voicexml+xml", bcpio = "application/x-bcpio", vcd = "application/x-cdlink", pgn = "application/x-chess-pgn", cpio = "application/x-cpio", csh = "application/x-csh", dcr = "application/x-director", dir = "application/x-director", dxr = "application/x-director", dvi = "application/x-dvi", spl = "application/x-futuresplash", gtar = "application/x-gtar", hdf = "application/x-hdf", xhtml = "application/xhtml+xml", xht = "application/xhtml+xml", js = "application/x-javascript", skp = "application/x-koan", skd = "application/x-koan", skt = "application/x-koan", skm = "application/x-koan", latex = "application/x-latex", xml = "application/xml", xsl = "application/xml", dtd = "application/xml-dtd", nc = "application/x-netcdf", cdf = "application/x-netcdf", sh = "application/x-sh", shar = "application/x-shar", swf = "application/x-shockwave-flash", xslt = "application/xslt+xml", sit = "application/x-stuffit", sv4cpio = "application/x-sv4cpio", sv4crc = "application/x-sv4crc", tar = "application/x-tar", tcl = "application/x-tcl", tex = "application/x-tex", texinfo = "application/x-texinfo", texi = "application/x-texinfo", t = "application/x-troff", tr = "application/x-troff", roff = "application/x-troff", man = "application/x-troff-man", me = "application/x-troff-me", ms = "application/x-troff-ms", ustar = "application/x-ustar", src = "application/x-wais-source", zip = "application/zip", au = "audio/basic", snd = "audio/basic", mid = "audio/midi", midi = "audio/midi", kar = "audio/midi", mpga = "audio/mpeg", mp2 = "audio/mpeg", mp3 = "audio/mpeg", aif = "audio/x-aiff", aiff = "audio/x-aiff", aifc = "audio/x-aiff", m3u = "audio/x-mpegurl", ram = "audio/x-pn-realaudio", ra = "audio/x-pn-realaudio", wav = "audio/x-wav", pdb = "chemical/x-pdb", xyz = "chemical/x-xyz", bmp = "image/bmp", cgm = "image/cgm", gif = "image/gif", ief = "image/ief", jpeg = "image/jpeg", jpg = "image/jpeg", jpe = "image/jpeg", png = "image/png", svg = "image/svg+xml", svgz = "image/svg+xml", tiff = "image/tiff", tif = "image/tiff", djvu = "image/vnd.djvu", djv = "image/vnd.djvu", wbmp = "image/vnd.wap.wbmp", ras = "image/x-cmu-raster", ico = "image/x-icon", pnm = "image/x-portable-anymap", pbm = "image/x-portable-bitmap", pgm = "image/x-portable-graymap", ppm = "image/x-portable-pixmap", rgb = "image/x-rgb", xbm = "image/x-xbitmap", xpm = "image/x-xpixmap", xwd = "image/x-xwindowdump", igs = "model/iges", iges = "model/iges", msh = "model/mesh", mesh = "model/mesh", silo = "model/mesh", wrl = "model/vrml", vrml = "model/vrml", ics = "text/calendar", ifb = "text/calendar", css = "text/css", html = "text/html", htm = "text/html", asc = "text/plain", txt = "text/plain", rtx = "text/richtext", rtf = "text/rtf", sgml = "text/sgml", sgm = "text/sgml", tsv = "text/tab-separated-values", wml = "text/vnd.wap.wml", wmls = "text/vnd.wap.wmlscript", etx = "text/x-setext", mpeg = "video/mpeg", mpg = "video/mpeg", mpe = "video/mpeg", qt = "video/quicktime", mov = "video/quicktime", mxu = "video/vnd.mpegurl", avi = "video/x-msvideo", movie = "video/x-sgi-movie", ice = "x-conference/x-cooltalk", rss = "application/rss+xml", atom = "application/atom+xml", json = "application/json" } _M.app_module_methods = {} local app_module_methods = _M.app_module_methods _M.web_methods = {} local web_methods = _M.web_methods local function flatten(t) local res = {} for _, item in ipairs(t) do if type(item) == "table" then res[#res + 1] = flatten(item) else res[#res + 1] = item end end return table.concat(res) end local function make_tag(name, data, class) if class then class = ' class="' .. class .. '"' else class = "" end if not data then return "<" .. name .. class .. "/>" elseif type(data) == "string" then return "<" .. name .. class .. ">" .. data .. "" else local attrs = {} for k, v in pairs(data) do if type(k) == "string" then table.insert(attrs, k .. '="' .. tostring(v) .. '"') end end local open_tag = "<" .. name .. class .. " " .. table.concat(attrs, " ") .. ">" local close_tag = "" return open_tag .. flatten(data) .. close_tag end end function _M.new(app_module) if type(app_module) == "string" then app_module = { _NAME = app_module } else app_module = app_module or {} end for k, v in pairs(app_module_methods) do app_module[k] = v end app_module.run = function (wsapi_env) return _M.run(app_module, wsapi_env) end app_module.real_path = wsapi.app_path or "." app_module.mapper = { default = true } app_module.not_found = function (web) web.status = "404 Not Found" return [[ Not Found

    Not found!

    ]] end app_module.server_error = function (web, msg) web.status = "500 Server Error" return [[ Server Error
    ]] .. msg .. [[
    ]] end app_module.reparse = REPARSE app_module.dispatch_table = { get = {}, post = {}, put = {}, delete = {} } return app_module end local function serve_file(app_module) return function (web) local filename = web.real_path .. web.path_info return app_module:serve_static(web, filename) end end function app_module_methods.dispatch_get(app_module, func, ...) for _, pat in ipairs{ ... } do table.insert(app_module.dispatch_table.get, { pattern = pat, handler = func }) end end function app_module_methods.dispatch_post(app_module, func, ...) for _, pat in ipairs{ ... } do table.insert(app_module.dispatch_table.post, { pattern = pat, handler = func }) end end function app_module_methods.dispatch_put(app_module, func, ...) for _, pat in ipairs{ ... } do table.insert(app_module.dispatch_table.put, { pattern = pat, handler = func }) end end function app_module_methods.dispatch_delete(app_module, func, ...) for _, pat in ipairs{ ... } do table.insert(app_module.dispatch_table.delete, { pattern = pat, handler = func }) end end function app_module_methods.dispatch_wsapi(app_module, func, ...) for _, pat in ipairs{ ... } do for _, tab in pairs(app_module.dispatch_table) do table.insert(tab, { pattern = pat, handler = func, wsapi = true }) end end end function app_module_methods.dispatch_static(app_module, ...) app_module:dispatch_get(serve_file(app_module), ...) end function app_module_methods.serve_static(app_module, web, filename) local ext = string.match(filename, "%.([^%.]+)$") if app_module.use_xsendfile then web.headers["Content-Type"] = _M.mime_types[ext] or "application/octet-stream" web.headers["X-Sendfile"] = filename return "xsendfile" else local file = io.open(filename, "rb") if not file then return app_module.not_found(web) else web.headers["Content-Type"] = _M.mime_types[ext] or "application/octet-stream" local contents = file:read("*a") file:close() return contents end end end local function newtag(name) local tag = {} setmetatable(tag, { __call = function (_, data) return make_tag(name, data) end, __index = function(_, class) return function (data) return make_tag(name, data, class) end end }) return tag end local function htmlify_func(func) local tags = {} local env = { H = function (name) local tag = tags[name] if not tag then tag = newtag(name) tags[name] = tag end return tag end } local old_env = getfenv(func) setmetatable(env, { __index = function (env, name) if old_env[name] then return old_env[name] else local tag = newtag(name) rawset(env, name, tag) return tag end end }) setfenv(func, env) end function _M.htmlify(app_module, ...) if type(app_module) == "function" then htmlify_func(app_module) for _, func in ipairs{...} do htmlify_func(func) end else local patterns = { ... } for _, patt in ipairs(patterns) do if type(patt) == "function" then htmlify_func(patt) else for name, func in pairs(app_module) do if string.match(name, "^" .. patt .. "$") and type(func) == "function" then htmlify_func(func) end end end end end end app_module_methods.htmlify = _M.htmlify function app_module_methods.model(app_module, ...) if app_module.mapper.default then local table_prefix = (app_module._NAME and app_module._NAME .. "_") or "" if not orm then orm = require "orbit.model" end app_module.mapper = orm.new(app_module.mapper.table_prefix or table_prefix, app_module.mapper.conn, app_module.mapper.driver, app_module.mapper.logging) end return app_module.mapper:new(...) end function web_methods:redirect(url) self.status = "302 Found" self.headers["Location"] = url return "redirect" end function web_methods:link(url, params) local link = {} local prefix = self.prefix or "" local suffix = self.suffix or "" for k, v in pairs(params or {}) do link[#link + 1] = k .. "=" .. wsutil.url_encode(v) end local qs = table.concat(link, "&") if qs and qs ~= "" then return prefix .. url .. suffix .. "?" .. qs else return prefix .. url .. suffix end end function web_methods:static_link(url) local prefix = self.prefix or self.script_name local is_script = prefix:match("(%.%w+)$") if not is_script then return self:link(url) end local vpath = prefix:match("(.*)/") or "" return vpath .. url end function web_methods:empty(s) return not s or string.match(s, "^%s*$") end function web_methods:content_type(s) self.headers["Content-Type"] = s end function web_methods:page(name, env) if not orpages then orpages = require "orbit.pages" end local filename if name:sub(1, 1) == "/" then filename = self.doc_root .. name else filename = self.real_path .. "/" .. name end local template = orpages.load(filename) if template then return orpages.fill(self, template, env) end end function web_methods:page_inline(contents, env) if not orpages then orpages = require "orbit.pages" end local template = orpages.load(nil, contents) if template then return orpages.fill(self, template, env) end end function web_methods:empty_param(param) return self:empty(self.input[param]) end for name, func in pairs(wsutil) do web_methods[name] = function (self, ...) return func(...) end end local function dispatcher(app_module, method, path, index) index = index or 0 if #app_module.dispatch_table[method] == 0 then return app_module["handle_" .. method], {} else for index = index+1, #app_module.dispatch_table[method] do local item = app_module.dispatch_table[method][index] local captures if type(item.pattern) == "string" then captures = { string.match(path, "^" .. item.pattern .. "$") } else captures = { item.pattern:match(path) } end if #captures > 0 then for i = 1, #captures do if type(captures[i]) == "string" then captures[i] = wsutil.url_decode(captures[i]) end end return item.handler, captures, item.wsapi, index end end end end local function make_web_object(app_module, wsapi_env) local web = { status = "200 Ok", response = "", headers = { ["Content-Type"]= "text/html" }, cookies = {} } setmetatable(web, { __index = web_methods }) web.vars = wsapi_env web.prefix = app_module.prefix or wsapi_env.SCRIPT_NAME web.suffix = app_module.suffix if wsapi_env.APP_PATH == "" then web.real_path = app_module.real_path or "." else web.real_path = wsapi_env.APP_PATH end web.doc_root = wsapi_env.DOCUMENT_ROOT local req = wsreq.new(wsapi_env) local res = wsres.new(web.status, web.headers) web.set_cookie = function (_, name, value) res:set_cookie(name, value) end web.delete_cookie = function (_, name, path) res:delete_cookie(name, path) end web.path_info = req.path_info web.path_translated = wsapi_env.PATH_TRANSLATED if web.path_translated == "" then web.path_translated = wsapi_env.SCRIPT_FILENAME end web.script_name = wsapi_env.SCRIPT_NAME web.method = string.lower(req.method) web.input, web.cookies = req.params, req.cookies web.GET, web.POST = req.GET, req.POST return web, res end function _M.run(app_module, wsapi_env) local handler, captures, wsapi_handler, index = dispatcher(app_module, string.lower(wsapi_env.REQUEST_METHOD), wsapi_env.PATH_INFO) handler = handler or app_module.not_found captures = captures or {} if wsapi_handler then local ok, status, headers, res = xpcall(function () return handler(wsapi_env, unpack(captures)) end, debug.traceback) if ok then return status, headers, res else handler, captures = app_module.server_error, { status } end end local web, res = make_web_object(app_module, wsapi_env) repeat local reparse = false local ok, response = xpcall(function () return handler(web, unpack(captures)) end, function(msg) return debug.traceback(msg) end) if not ok then res.status = "500 Internal Server Error" res:write(app_module.server_error(web, response)) else if response == REPARSE then reparse = true handler, captures, wsapi_handler, index = dispatcher(app_module, string.lower(wsapi_env.REQUEST_METHOD), wsapi_env.PATH_INFO, index) handler, captures = handler or app_module.not_found, captures or {} if wsapi_handler then error("cannot reparse to WSAPI handler") end else res.status = web.status res:write(response) end end until not reparse return res:finish() end return _M lua-orbit-2.2.1+dfsg/src/orbit/000077500000000000000000000000001227340735500162475ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/src/orbit/cache.lua000066400000000000000000000053741227340735500200260ustar00rootroot00000000000000local lfs = require "lfs" module("orbit.cache", package.seeall) local function pathinfo_to_file(path_info) local atom = path_info:find("/xml$") if atom then path_info = path_info:sub(2, atom - 1) else path_info = path_info:sub(2, #path_info) end path_info = string.gsub(path_info, "/", "-") if path_info == "" then path_info = "index" end if atom then return path_info .. '.xml' else return path_info .. '.html' end end function get(cache, key) if not cache.base_path then local headers = {} if key:find("/xml$") then headers["Content-Type"] = "text/xml" else headers["Content-Type"] = "text/html" end return cache.values[key], headers else local filename = cache.base_path .. "/" .. pathinfo_to_file(key) local web = { headers = {} } if lfs.attributes(filename, "mode") == "file" then local response = cache.app:serve_static(web, filename) return response, web.headers end end end local function writefile(filename, contents) local file = assert(io.open(filename, "wb")) if lfs.lock(file, "w") then file:write(contents) lfs.unlock(file) file:close() else file:close() end end function set(cache, key, value) if not cache.base_path then cache.values[key] = value else local filename = cache.base_path .. "/" .. pathinfo_to_file(key) writefile(filename, value) end end local function cached(cache, f) return function (web, ...) local body, headers = cache:get(web.path_info) if body then for k, v in pairs(headers) do web.headers[k] = v end return body else local key = web.path_info local body = f(web, ...) cache:set(key, body) return body end end end function invalidate(cache, ...) for _, key in ipairs{...} do if not cache.base_path then cache.values[key] = nil else local filename = cache.base_path .. "/" .. pathinfo_to_file(key) os.remove(filename) end end end function nuke(cache) if not cache.base_path then cache.values = {} else for file in lfs.dir(cache.base_path) do if file ~= "." and file ~= ".." then os.remove(cache.base_path .. "/" .. file) end end end end function new(app, base_path) local values if not base_path then values = {} else local dir = lfs.attributes(base_path, "mode") if not dir then assert(lfs.mkdir(base_path)) elseif dir ~= "directory" then error("base path of cache " .. base_path .. " not a directory") end end local cache = { app = app, values = values, base_path = base_path } setmetatable(cache, { __index = _M, __call = function (tab, f) return cached(tab, f) end }) return cache end lua-orbit-2.2.1+dfsg/src/orbit/model.lua000066400000000000000000000335051227340735500200600ustar00rootroot00000000000000local lpeg = require "lpeg" local re = require "re" module("orbit.model", package.seeall) model_methods = {} dao_methods = {} local type_names = {} local function log_query(sql) io.stderr:write("[orbit.model] " .. sql .. "\n") end function type_names.sqlite3(t) return string.lower(string.match(t, "(%a+)")) end function type_names.mysql(t) if t == "number(1)" then return "boolean" else return string.lower(string.match(t, "(%a+)")) end end function type_names.postgres(t) if t == "bool" then return "boolean" else return string.lower(string.match(t, "(%a+)")) end end local convert = {} function convert.real(v) return tonumber(v) end function convert.float(v) return tonumber(v) end function convert.integer(v) return tonumber(v) end function convert.int(v) return tonumber(v) end function convert.number(v) return tonumber(v) end function convert.numeric(v) return tonumber(v) end function convert.varchar(v) return tostring(v) end function convert.string(v) return tostring(v) end function convert.text(v) return tostring(v) end function convert.boolean(v, driver) if driver == "sqlite3" then return v == "t" elseif driver == "mysql" then return tonumber(v) == 1 elseif driver == "postgres" then return v == "t" else error("driver not supported") end end function convert.binary(v) return convert.text(v) end function convert.datetime(v) local year, month, day, hour, min, sec = string.match(v, "(%d+)%-(%d+)%-(%d+) (%d+):(%d+):(%d+)") return os.time({ year = tonumber(year), month = tonumber(month), day = tonumber(day), hour = tonumber(hour), min = tonumber(min), sec = tonumber(sec) }) end convert.timestamp = convert.datetime local function convert_types(row, meta, driver) for k, v in pairs(row) do if meta[k] then local conv = convert[meta[k].type] if conv then row[k] = conv(v, driver) else error("no conversion for type " .. meta[k].type) end end end end local escape = {} function escape.real(v) return tostring(v) end function escape.float(v) return tostring(v) end function escape.integer(v) return tostring(v) end function escape.int(v) return tostring(v) end function escape.number(v) return escape.integer(v) end function escape.numeric(v) return escape.integer(v) end function escape.varchar(v, driver, conn) return "'" .. conn:escape(v) .. "'" end function escape.string(v, driver, conn) return escape.varchar(v, driver, conn) end function escape.text(v, driver, conn) return "'" .. conn:escape(v) .. "'" end function escape.datetime(v) return "'" .. os.date("%Y-%m-%d %H:%M:%S", v) .. "'" end escape.timestamp = escape.datetime function escape.boolean(v, driver) if v then if driver == "sqlite3" or driver == "postgres" then return "'t'" else return tostring(v) end else if driver == "sqlite3" or driver == "postgres" then return "'f'" else return tostring(v) end end end function escape.binary(v, driver, conn) return escape.text(v, driver, conn) end local function escape_values(row) local row_escaped = {} for i, m in ipairs(row.meta) do if row[m.name] == nil then row_escaped[m.name] = "NULL" else local esc = escape[m.type] if esc then row_escaped[m.name] = esc(row[m.name], row.driver, row.model.conn) else error("no escape function for type " .. m.type) end end end return row_escaped end local function fetch_row(dao, sql) local cursor, err = dao.model.conn:execute(sql) if not cursor then error(err) end local row = cursor:fetch({}, "a") cursor:close() if row then convert_types(row, dao.meta, dao.driver) setmetatable(row, { __index = dao }) end return row end local function fetch_rows(dao, sql, count) local rows = {} local cursor, err = dao.model.conn:execute(sql) if not cursor then error(err) end local row, fetched = cursor:fetch({}, "a"), 1 while row and (not count or fetched <= count) do convert_types(row, dao.meta, dao.driver) setmetatable(row, { __index = dao }) rows[#rows + 1] = row row, fetched = cursor:fetch({}, "a"), fetched + 1 end cursor:close() return rows end local by_condition_parser = re.compile([[ fields <- ({(!conective .)+} (conective {(!conective .)+})*) -> {} conective <- and / or and <- "_and_" -> "and" or <- "_or_" -> "or" ]]) local function parse_condition(dao, condition, args) local parts = by_condition_parser:match(condition) local j = 0 for i, part in ipairs(parts) do if part ~= "or" and part ~= "and" then j = j + 1 local value if args[j] == nil then parts[i] = part .. " is null" elseif type(args[j]) == "table" then local values = {} for _, value in ipairs(args[j]) do values[#values + 1] = escape[dao.meta[part].type](value, dao.driver, dao.model.conn) end parts[i] = part .. " IN (" .. table.concat(values,", ") .. ")" else value = escape[dao.meta[part].type](args[j], dao.driver, dao.model.conn) parts[i] = part .. " = " .. value end end end return parts end local function build_inject(project, inject, dao) local fields = {} if project then for i, field in ipairs(project) do fields[i] = dao.table_name .. "." .. field .. " as " .. field end else for i, field in ipairs(dao.meta) do fields[i] = dao.table_name .. "." .. field.name .. " as " .. field.name end end local inject_fields = {} local model = inject.model for _, field in ipairs(inject.fields) do inject_fields[model.name .. "_" .. field] = model.meta[field] fields[#fields + 1] = model.table_name .. "." .. field .. " as " .. model.name .. "_" .. field end setmetatable(dao.meta, { __index = inject_fields }) return table.concat(fields, ", "), dao.table_name .. ", " .. model.table_name, model.name .. "_id = " .. model.table_name .. ".id" end local function build_query_by(dao, condition, args) local parts = parse_condition(dao, condition, args) local order = "" local field_list, table_list, select, limit if args.distinct then select = "select distinct " else select = "select " end if tonumber(args.count) then limit = " limit " .. tonumber(args.count) else limit = "" end if args.order then order = " order by " .. args.order end if args.inject then if #parts > 0 then parts[#parts + 1] = "and" end field_list, table_list, parts[#parts + 1] = build_inject(args.fields, args.inject, dao) else if args.fields then field_list = table.concat(args.fields, ", ") else field_list = "*" end table_list = dao.table_name end local sql = select .. field_list .. " from " .. table_list .. " where " .. table.concat(parts, " ") .. order .. limit if dao.model.logging then log_query(sql) end return sql end local function find_by(dao, condition, args) return fetch_row(dao, build_query_by(dao, condition, args)) end local function find_all_by(dao, condition, args) return fetch_rows(dao, build_query_by(dao, condition, args), args.count) end local function dao_index(dao, name) local m = dao_methods[name] if m then return m else local match = string.match(name, "^find_by_(.+)$") if match then return function (dao, args) return find_by(dao, match, args) end end local match = string.match(name, "^find_all_by_(.+)$") if match then return function (dao, args) return find_all_by(dao, match, args) end end return nil end end function model_methods:new(name, dao) dao = dao or {} dao.model, dao.name, dao.table_name, dao.meta, dao.driver = self, name, self.table_prefix .. name, {}, self.driver setmetatable(dao, { __index = dao_index }) local sql = "select * from " .. dao.table_name .. " limit 0" if self.logging then log_query(sql) end local cursor, err = self.conn:execute(sql) if not cursor then error(err) end local names, types = cursor:getcolnames(), cursor:getcoltypes() cursor:close() for i = 1, #names do local colinfo = { name = names[i], type = type_names[self.driver](types[i]) } dao.meta[i] = colinfo dao.meta[colinfo.name] = colinfo end return dao end function recycle(fresh_conn, timeout) local created_at = os.time() local conn = fresh_conn() timeout = timeout or 20000 return setmetatable({}, { __index = function (tab, meth) tab[meth] = function (tab, ...) if created_at + timeout < os.time() then created_at = os.time() pcall(conn.close, conn) conn = fresh_conn() end return conn[meth](conn, ...) end return tab[meth] end }) end function new(table_prefix, conn, driver, logging) driver = driver or "sqlite3" local app_model = { table_prefix = table_prefix or "", conn = conn, driver = driver or "sqlite3", logging = logging, models = {} } setmetatable(app_model, { __index = model_methods }) return app_model end function dao_methods.find(dao, id, inject) if not type(id) == "number" then error("find error: id must be a number") end local sql = "select * from " .. dao.table_name .. " where id=" .. id if dao.logging then log_query(sql) end return fetch_row(dao, sql) end condition_parser = re.compile([[ top <- {~ * ~} s <- %s+ -> ' ' / '' condition <- ( '(' ')' / ) ( )* simple <- (%func '?') -> apply / / field <- ! {[_%w]+('.'[_%w]+)?} op <- {~ [!<>=~]+ / ((%s+ -> ' ') ! %w+)+ ~} conective <- [aA][nN][dD] / [oO][rR] ]], { func = lpeg.Carg(1) , apply = function (f, field, op) return f(field, op) end }) local function build_query(dao, condition, args) local i = 0 args = args or {} condition = condition or "" if type(condition) == "table" then args = condition condition = "" end if condition ~= "" then condition = " where " .. condition_parser:match(condition, 1, function (field, op) i = i + 1 if not args[i] then return "id=id" elseif type(args[i]) == "table" and args[i].type == "query" then return field .. " " .. op .. " (" .. args[i][1] .. ")" elseif type(args[i]) == "table" then local values = {} for j, value in ipairs(args[i]) do values[#values + 1] = field .. " " .. op .. " " .. escape[dao.meta[field].type](value, dao.driver, dao.model.conn) end return "(" .. table.concat(values, " or ") .. ")" else return field .. " " .. op .. " " .. escape[dao.meta[field].type](args[i], dao.driver, dao.model.conn) end end) end local order = "" if args.order then order = " order by " .. args.order end local field_list, table_list, select, limit if args.distinct then select = "select distinct " else select = "select " end if tonumber(args.count) then limit = " limit " .. tonumber(args.count) else limit = "" end if args.inject then local inject_condition field_list, table_list, inject_condition = build_inject(args.fields, args.inject, dao) if condition == "" then condition = " where " .. inject_condition else condition = condition .. " and " .. inject_condition end else if args.fields then field_list = table.concat(args.fields, ", ") else field_list = "*" end table_list = table.concat({ dao.table_name, unpack(args.from or {}) }, ", ") end local sql = select .. field_list .. " from " .. table_list .. condition .. order .. limit if dao.model.logging then log_query(sql) end return sql end function dao_methods.find_first(dao, condition, args) return fetch_row(dao, build_query(dao, condition, args)) end function dao_methods.find_all(dao, condition, args) return fetch_rows(dao, build_query(dao, condition, args), (args and args.count) or (condition and condition.count)) end function dao_methods.new(dao, row) row = row or {} setmetatable(row, { __index = dao }) return row end local function update(row) local row_escaped = escape_values(row) local updates = {} if row.meta["updated_at"] then local now = os.time() row.updated_at = now row_escaped.updated_at = escape.datetime(now, row.driver) end for k, v in pairs(row_escaped) do table.insert(updates, k .. "=" .. v) end local sql = "update " .. row.table_name .. " set " .. table.concat(updates, ", ") .. " where id = " .. row.id if row.model.logging then log_query(sql) end local ok, err = row.model.conn:execute(sql) if not ok then error(err) end end local function insert(row) local row_escaped = escape_values(row) local now = os.time() if row.meta["created_at"] then row.created_at = row.created_at or now row_escaped.created_at = escape.datetime(now, row.driver) end if row.meta["updated_at"] then row.updated_at = row.updated_at or now row_escaped.updated_at = escape.datetime(now, row.driver) end local columns, values = {}, {} for k, v in pairs(row_escaped) do table.insert(columns, k) table.insert(values, v) end local sql = "insert into " .. row.table_name .. " (" .. table.concat(columns, ", ") .. ") values (" .. table.concat(values, ", ") .. ")" if row.model.logging then log_query(sql) end local ok, err = row.model.conn:execute(sql) if ok then row.id = row.id or row.model.conn:getlastautoid() else error(err) end end function dao_methods.save(row, force_insert) if row.id and (not force_insert) then update(row) else insert(row) end end function dao_methods.delete(row) if row.id then local sql = "delete from " .. row.table_name .. " where id = " .. row.id if row.model.logging then log_query(sql) end local ok, err = row.model.conn:execute(sql) if ok then row.id = nil else error(err) end end end lua-orbit-2.2.1+dfsg/src/orbit/ophandler.lua000066400000000000000000000014701227340735500207300ustar00rootroot00000000000000----------------------------------------------------------------------------- -- Xavante Orbit pages handler -- -- Author: Fabio Mascarenhas -- ----------------------------------------------------------------------------- local wsapi = require "wsapi" local wsxav = require "wsapi.xavante" local wscom = require "wsapi.common" ------------------------------------------------------------------------------- -- Returns the Orbit Pages handler ------------------------------------------------------------------------------- local function makeHandler (diskpath, params) params = setmetatable({ modname = params.modname or "orbit.pages" }, { __index = params or {} }) local op_loader = wscom.make_isolated_launcher(params) return wsxav.makeHandler(op_loader, nil, diskpath) end return { makeHandler = makeHandler } lua-orbit-2.2.1+dfsg/src/orbit/pages.lua000066400000000000000000000106761227340735500200630ustar00rootroot00000000000000 local orbit = require "orbit" local model = require "orbit.model" local cosmo = require "cosmo" local io, string = io, string local setmetatable, loadstring, setfenv = setmetatable, loadstring, setfenv local type, error, tostring = type, error, tostring local print, pcall, xpcall, traceback = print, pcall, xpcall, debug.traceback local select, unpack = select, unpack local _G = _G module("orbit.pages", orbit.new) local template_cache = {} local BOM = string.char(239) .. string.char(187) .. string.char(191) local function remove_shebang(s) return s:gsub("^#![^\n]+", "") end local function splitpath(filename) local path, file = string.match(filename, "^(.*)[/\\]([^/\\]*)$") return path, file end function load(filename, contents) filename = filename or contents local template = template_cache[filename] if not template then if not contents then local file = io.open(filename) if not file then return nil end contents = file:read("*a") file:close() if contents:sub(1,3) == BOM then contents = contens:sub(4) end end template = cosmo.compile(remove_shebang(contents)) template_cache[filename] = template end return template end local function env_index(env, key) local val = _G[key] if not val and type(key) == "string" then local template = load(env.web.real_path .. "/" .. key .. ".op") if not template then return nil end return function (arg) arg = arg or {} if arg[1] then arg.it = arg[1] end local subt_env = setmetatable(arg, { __index = env }) return template(subt_env) end end return val end local function abort(res) error{ abort, res or "abort" } end local function make_env(web, initial) local env = setmetatable(initial or {}, { __index = env_index }) env._G = env env.app = _G env.web = web env.finish = abort function env.lua(arg) local f, err = loadstring(arg[1]) if not f then error(err .. " in \n" .. arg[1]) end setfenv(f, env) local ok, res = pcall(f) if not ok and (type(res)~= "table" or res[1] ~= abort) then error(res .. " in \n" .. arg[1]) elseif ok then return res or "" else abort(res[2]) end end env["if"] = function (arg) if type(arg[1]) == "function" then arg[1] = arg[1](select(2, unpack(arg))) end if arg[1] then cosmo.yield{ it = arg[1], _template = 1 } else cosmo.yield{ _template = 2 } end end function env.redirect(target) if type(target) == "table" then target = target[1] end web:redirect(target) abort() end function env.fill(arg) cosmo.yield(arg[1]) end function env.link(arg) local url = arg[1] arg[1] = nil return web:link(url, arg) end function env.static_link(arg) return web:static_link(arg[1]) end function env.include(name, subt_env) local filename if type(name) == "table" then name = name[1] subt_env = name[2] end if name:sub(1, 1) == "/" then filename = web.doc_root .. name else filename = web.real_path .. "/" .. name end local template = load(filename) if not template then return "" end if subt_env then if type(subt_env) ~= "table" then subt_env = { it = subt_env } end subt_env = setmetatable(subt_env, { __index = env }) else subt_env = env end return template(subt_env) end function env.forward(...) abort(env.include(...)) end env.mapper = model.new() function env.model(name, dao) if type(name) == "table" then name, dao = name[1], name[2] end return env.mapper:new(name, dao) end env.recycle = model.recycle return env end function fill(web, template, env) if template then local ok, res = xpcall(function () return template(make_env(web, env)) end, function (msg) if type(msg) == "table" and msg[1] == abort then return msg else return traceback(msg) end end) if not ok and (type(res) ~= "table" or res[1] ~= abort) then error(res) elseif ok then return res else return res[2] end end end function handle_get(web) local filename = web.path_translated web.real_path = splitpath(filename) local res = fill(web, load(filename)) if res then return res else web.status = 404 return [[ Not Found

    Not found!

    ]] end end handle_post = handle_get return _M lua-orbit-2.2.1+dfsg/src/orbit/routes.lua000066400000000000000000000123331227340735500202750ustar00rootroot00000000000000local setmetatable, type, ipairs, table, string = setmetatable, type, ipairs, table, string local lpeg = require "lpeg" local re = require "re" local util = require "wsapi.util" local _M = {} local alpha = lpeg.R('AZ', 'az') local number = lpeg.R('09') local asterisk = lpeg.P('*') local question_mark = lpeg.P('?') local at_sign = lpeg.P('@') local colon = lpeg.P(':') local the_dot = lpeg.P('.') local underscore = lpeg.P('_') local forward_slash = lpeg.P('/') local slash_or_dot = forward_slash + the_dot local function cap_param(prefix, name, dot) local inner = (1 - lpeg.S('/' .. (dot or '')))^1 local close = lpeg.P'/' + (dot or -1) + -1 return { cap = lpeg.Carg(1) * slash_or_dot * lpeg.C(inner^1) * #close / function (params, item, delim) params[name] = util.url_decode(item) end, clean = slash_or_dot * inner^1 * #close, tag = "param", name = name, prefix = prefix } end local param_pre = lpeg.C(slash_or_dot) * colon * lpeg.C((alpha + number + underscore)^1) local param = (param_pre * #(forward_slash + -1) / cap_param) + (param_pre * #the_dot / function (prefix, name) return cap_param(prefix, name, ".") end) local function cap_opt_param(prefix, name, dot) local inner = (1 - lpeg.S('/' .. (dot or '')))^1 local close = lpeg.P('/') + lpeg.P(dot or -1) + -1 return { cap = (lpeg.Carg(1) * slash_or_dot * lpeg.C(inner) * #close / function (params, item, delim) params[name] = util.url_decode(item) end)^-1, clean = (slash_or_dot * inner * #lpeg.C(close))^-1, tag = "opt", name = name, prefix = prefix } end local opt_param_pre = lpeg.C(slash_or_dot) * question_mark * colon * lpeg.C((alpha + number + underscore)^1) * question_mark local opt_param = (opt_param_pre * #(forward_slash + -1) / cap_opt_param) + (opt_param_pre * #the_dot / function (prefix, name) return cap_opt_param(prefix, name, ".") end) local splat = lpeg.P(lpeg.C(forward_slash + the_dot) * asterisk * #(forward_slash + the_dot + -1)) / function (prefix) return { cap = "*", tag = "splat", prefix = prefix } end local rest = lpeg.C((1 - param - opt_param - splat)^1) local function fold_captures(cap, acc) if type(cap) == "string" then return { cap = lpeg.P(cap) * acc.cap, clean = lpeg.P(cap) * acc.clean } end -- if we have a star match (match everything) if cap.cap == "*" then return { cap = (lpeg.Carg(1) * (cap.prefix * lpeg.C((1 - acc.clean)^0))^-1 / function (params, splat) params.splat = params.splat or {} if splat and splat ~= "" then params.splat[#params.splat+1] = util.url_decode(splat) end end) * acc.cap, clean = (cap.prefix * (1 - acc.clean)^0)^-1 * acc.clean } end return { cap = cap.cap * acc.cap, clean = cap.clean * acc.clean } end local function fold_parts(parts, cap) if type(cap) == "string" then -- if the capture is a string parts[#parts+1] = { tag = "text", text = cap } else -- it must be a table capture parts[#parts+1] = { tag = cap.tag, prefix = cap.prefix, name = cap.name } end return parts end -- the right part (a bottom to top loop) local function fold_right(t, f, acc) for i = #t, 1, -1 do acc = f(t[i], acc) end return acc end -- the left part (a top to bottom loop) local function fold_left(t, f, acc) for i = 1, #t do acc = f(acc, t[i]) end return acc end local route = lpeg.Ct((param + opt_param + splat + rest)^0 * -1) / function (caps) local forward_slash_at_end = lpeg.P('/')^-1 * -1 return fold_right(caps, fold_captures, { cap = forward_slash_at_end, clean = forward_slash_at_end }), fold_left(caps, fold_parts, {}) end local function build(parts, params) local res, i = {}, 1 params = params or {} params.splat = params.splat or {} for _, part in ipairs(parts) do if part.tag == 'param' then if not params[part.name] then error('route parameter ' .. part.name .. ' does not exist') end local s = string.gsub (params[part.name], '([^%.@]+)', function (s) return util.url_encode(s) end) res[#res+1] = part.prefix .. s elseif part.tag == "splat" then local s = string.gsub (params.splat[i] or '', '([^/%.@]+)', function (s) return util.url_encode(s) end) res[#res+1] = part.prefix .. s i = i + 1 elseif part.tag == "opt" then if params and params[part.name] then local s = string.gsub (params[part.name], '([^%.@]+)', function (s) return util.url_encode(s) end) res[#res+1] = part.prefix .. s end else res[#res+1] = part.text end end if #res > 0 then return table.concat(res) end return '/' end function _M.R(path) local p, b = route:match(path) return setmetatable({ parser = p.cap, parts = b }, { __index = { match = function (t, s) local params = {} if t.parser:match(s, 1, params) then return params end return nil end, build = function (t, params) return build(t.parts, params) end } }) end return setmetatable(_M, { __call = function (_, path) return _M.R(path) end }) lua-orbit-2.2.1+dfsg/test/000077500000000000000000000000001227340735500153205ustar00rootroot00000000000000lua-orbit-2.2.1+dfsg/test/books.db000066400000000000000000000060001227340735500167400ustar00rootroot00000000000000SQLite format 3@ -! /P++Ytablesqlite_sequencesqlite_sequenceCREATE TABLE sqlite_sequence(name,seq)N{tablebooksbooksCREATE TABLE "books" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" TEXT, "author" TEXT, "year_pub" INTEGER, "created_at" TEXT, "updated_at" TEXT ) 5\4Z5# 1A recursive glanceJohn Doe' 3#This year of plentyFred Bloggs% 5An estranged husbandJane Doe )Counting sheepJohn Doe!-The 1995 diariesJohn Doe)A test too farJohn Doe#1Halfway to nowhereJohn Doe&1#Letters from ParisAnn Onymous,=#There's no life on VenusFred Bloggs$3DoeScript: a primerO'Reilly)=Gardens for dry climatesJane Doe#1The secret diariesJohn Doe  books lua-orbit-2.2.1+dfsg/test/books.sql000066400000000000000000000036041227340735500171610ustar00rootroot00000000000000CREATE TABLE "books" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" TEXT, "author" TEXT, "year_pub" INTEGER, "created_at" TEXT, "updated_at" TEXT ); BEGIN TRANSACTION; insert into books ("title", "author", "year_pub", "created_at", "updated_at") values ('The secret diaries', 'John Doe', '2010', NULL, NULL); insert into books ("title", "author", "year_pub", "created_at", "updated_at") values ('Gardens for dry climates', 'Jane Doe', '1999', NULL, NULL); insert into books ("title", "author", "year_pub", "created_at", "updated_at") values ('DoeScript: a primer', 'O''Reilly', '2013', NULL, NULL); insert into books ("title", "author", "year_pub", "created_at", "updated_at") values ('There''s no life on Venus', 'Fred Bloggs', '2010', NULL, NULL); insert into books ("title", "author", "year_pub", "created_at", "updated_at") values ('Letters from Paris', 'Ann Onymous', '2011', NULL, NULL); insert into books ("title", "author", "year_pub", "created_at", "updated_at") values ('Halfway to nowhere', 'John Doe', '1996', NULL, NULL); insert into books ("title", "author", "year_pub", "created_at", "updated_at") values ('A test too far', 'John Doe', '1996', NULL, NULL); insert into books ("title", "author", "year_pub", "created_at", "updated_at") values ('The 1995 diaries', 'John Doe', '1996', NULL, NULL); insert into books ("title", "author", "year_pub", "created_at", "updated_at") values ('Counting sheep', 'John Doe', '1996', NULL, NULL); insert into books ("title", "author", "year_pub", "created_at", "updated_at") values ('An estranged husband', 'Jane Doe', '1996', NULL, NULL); insert into books ("title", "author", "year_pub", "created_at", "updated_at") values ('This year of plenty', 'Fred Bloggs', '1996', NULL, NULL); insert into books ("title", "author", "year_pub", "created_at", "updated_at") values ('A recursive glance', 'John Doe', '2012', NULL, NULL); COMMIT; lua-orbit-2.2.1+dfsg/test/test_model.lua000066400000000000000000000027771227340735500201770ustar00rootroot00000000000000#! /usr/bin lua -- Tests the examples from the Orbit reference local orbit = require "orbit" local luasql = require "luasql.sqlite3" module("test_model", package.seeall, orbit.new) mapper.conn = luasql.sqlite3():connect("books.db") mapper.driver = "sqlite3"; mapper.table_prefix = "" mapper.logging = false local books = test_model:model "books" local res = {} local count = books:find_all("", { fields = {"count(*)" } })[1]["count(*)"] print("There are " .. count .. " books in the database.") local example = [[ books:find(2) ]] print("Testing: " .. example) res = books:find(2) assert(res.title == "Gardens for dry climates") print("OK") example = [[ books:find_first("author = ? and year_pub > ?", { "John Doe", 1995, order = "year_pub asc" }) ]] print("Testing: " .. example) res = books:find_first("author = ? and year_pub > ?", { "John Doe", 1995, order = "year_pub asc" }) assert(res.title == "Halfway to nowhere") print("OK") example = [[ books:find_all("author = ? and year_pub > ?", { "John Doe", 1995, order = "year_pub asc", count = 5, fields = {"id", "title" } }) ]] print("Testing: " .. example) res = books:find_all("author = ? and year_pub > ?", { "John Doe", 1995, order = "year_pub asc", count = 5, fields = {"id", "title" } }) assert(#res == 5) print("OK") example = [[ books:find_all_by_author_or_author{ "John Doe", "Jane Doe", order = "year_pub asc" } ]] print("Testing: " .. example) res = books:find_all_by_author_or_author{ "John Doe", "Jane Doe", order = "year_pub asc" } assert(#res == 8) print("OK") lua-orbit-2.2.1+dfsg/test/test_routes.lua000066400000000000000000000106651227340735500204130ustar00rootroot00000000000000 local R = require "orbit.routes" do local r = R('/foo') local t = r:match("/foo") assert(t) assert(r:build() == "/foo") end do local r = R('/foo') local t = r:match("/bar") assert(not t) assert(r:build() == "/foo") end do local r = R('/foo') local t = r:match("/foobar") assert(not t) end do local r = R("/foo/bar/:baz") local t = r:match("/foo/bar/boo") assert(t.baz == "boo") assert(r:build{ baz = "boo"} == "/foo/bar/boo") assert(not pcall(r.build, r)) end do local r = R("/foo/bar/:baz") local t = r:match("/bar/boo") assert(not t) end do local r = R("/foo/bar/:baz") local t = r:match("/foo/bar/boo/bloo") assert(not t) end do local r = R("/say/:msg/to/:to") local t = r:match("/say/hello/to/world") assert(t.msg == "hello") assert(t.to == "world") assert(r:build{ msg = "hello", to = "world" } == "/say/hello/to/world") assert(r:build{ msg = "hello", to = 5 } == "/say/hello/to/5") end do local r = R('/say/*/to/*') local t = r:match('/say/hello/to/world') assert(#t.splat == 2) assert(t.splat[1] == "hello") assert(t.splat[2] == "world") assert(r:build{ splat = { "hello", "world" } } == "/say/hello/to/world") end do local r = R('/download/*.*') local t = r:match('/download/path/to/file.xml') assert(#t.splat == 2) assert(t.splat[1] == "path/to/file") assert(t.splat[2] == "xml") assert(r:build{ splat = { "path/to/file", "xml" } } == "/download/path/to/file.xml") end do local r = R('/*/foo/*/*') local t = r:match('/bar/foo/bling/baz/boom') assert(#t.splat == 3) assert(t.splat[1] == "bar") assert(t.splat[2] == "bling") assert(t.splat[3] == "baz/boom") assert(r:build{ splat = { "bar", "bling", "baz/boom" } } == "/bar/foo/bling/baz/boom") end do local r = R('/*/foo/*') local t = r:match('/bar/foo/bling/baz/boom') assert(#t.splat == 2) assert(t.splat[1] == "bar") assert(t.splat[2] == "bling/baz/boom") assert(r:build{ splat = { "bar", "bling/baz/boom" } } == "/bar/foo/bling/baz/boom") end do local r = R('/*/foo/*') local t = r:match('/bar/foo/') assert(#t.splat == 1) assert(t.splat[1] == "bar") assert(r:build{ splat = { "bar", "bling/baz/boom" } } == "/bar/foo/bling/baz/boom") end do local r = R('/*/foo/*') local t = r:match('/bar/foo') assert(#t.splat == 1) assert(t.splat[1] == "bar") assert(r:build{ splat = { "bar", "bling/baz/boom" } } == "/bar/foo/bling/baz/boom") end do local r = R('/:foo/*') local t = r:match('/foo/bar/baz') assert(#t.splat == 1) assert(t.foo == "foo") assert(t.splat[1] == "bar/baz") assert(r:build{ foo = "foo", splat = { "bar/baz" } } == "/foo/bar/baz") end do local r = R('/:foo/:bar') local t = r:match('/user@example.com/name') assert(t.foo == "user@example.com") assert(t.bar == "name") assert(r:build{ foo = "user@example.com", bar = "name" } == "/user@example.com/name") end do local r = R('/:foo.:bar') local t = r:match('/user@example.com') assert(t.foo == "user@example") assert(t.bar == "com") assert(r:build{ foo = "user@example", bar = "com" } == "/user@example.com") end do local r = R('/*') local t = r:match("/foo/bar/baz") assert(t.splat[1] == "foo/bar/baz") assert(r:build{ splat = { "foo/bar/baz" } } == "/foo/bar/baz") end do local r = R('/*') local t = r:match("/") assert(not t.splat[1]) assert(r:build{ splat = { "foo/bar/baz" } } == "/foo/bar/baz") end do local r = R('/*') local t = r:match("/") assert(not t.splat[1]) assert(r:build{} == "/") end do local r = R('/*') local t = r:match("") assert(not t.splat[1]) assert(r:build{ splat = { "foo/bar/baz" } } == "/foo/bar/baz") end do local r = R('/?:foo?/?:bar?') local t = r:match('/hello/world') assert(t.foo == 'hello') assert(t.bar == 'world') assert(r:build{ foo = "hello", bar = "world" } == "/hello/world") end do local r = R('/?:foo?/?:bar?') local t = r:match('/hello') assert(t.foo == 'hello') assert(not t.bar) assert(r:build{ foo = "hello" } == "/hello") end do local r = R('/?:foo?/?:bar?') local t = r:match('/') assert(not t.foo) assert(not t.bar) assert(r:build() == "/") end do local r = R('/:foo/*') local t = r:match('/hello%20world/how%20are%20you') assert(t.foo == "hello world") assert(t.splat[1] == "how are you") assert(r:build{ foo = "hello world", splat = { "how are you" } } == '/hello+world/how+are+you') end lua-orbit-2.2.1+dfsg/test/test_sql.lua000066400000000000000000000037641227340735500176730ustar00rootroot00000000000000 local model = require "orbit.model" local function build_query(sql, values) return model.condition_parser:match(sql, 1, function (field, op) return field .. op .. values[field] end) end local queries = { { from = [[node_term.term = term.id and term.vocabulary = vocabulary.id and term.name = ? and vocabulary.name = ?]], to = [[node_term.term = term.id and term.vocabulary = vocabulary.id and term.name = visibility and vocabulary.name = home]], values = { ["vocabulary.name"] = "home", ["term.name"] = "visibility" } }, { from = [[node_term.term = term.id and term.vocabulary = vocabulary.id and term.name = ? and vocabulary.name = ? and term.display_name is not null]], to = [[node_term.term = term.id and term.vocabulary = vocabulary.id and term.name = visibility and vocabulary.name = home and term.display_name is not null]], values = { ["vocabulary.name"] = "home", ["term.name"] = "visibility" } }, { from = [[node in ?]], to = [[node in foo]], values = { node = "foo" } }, { from = [[node_term.term!=term and term.vocabulary = vocabulary.id and term.name = ? and vocabulary.name = ? and term.display_name is not null]], to = [[node_term.term!=term and term.vocabulary = vocabulary.id and term.name = visibility and vocabulary.name = home and term.display_name is not null]], values = { ["vocabulary.name"] = "home", ["term.name"] = "visibility" } }, { from = [[node_term.term!=term and term.vocabulary = vocabulary.id and term.name =? and vocabulary.name = ? and term.display_name is not null]], to = [[node_term.term!=term and term.vocabulary = vocabulary.id and term.name =visibility and vocabulary.name = home and term.display_name is not null]], values = { ["vocabulary.name"] = "home", ["term.name"] = "visibility" } }, } for _, q in ipairs(queries) do if not (build_query(q.from, q.values) == q.to) then print(build_query(q.from, q.values)) end end