Oliver Steele : Sources

.section {gradient-start-color: #eef; border-radius: 10}
Section:

JavaScript Libraries

Unless otherwise noted, these have been tested in Firefox 1.5, Safari 2.0, and IE 6.

Utilities

Collections-js
JavaScript collection methods. Provides the functionality of the ECMAScript 1.7 Array extensions, and the Prototype collection methods, in a lightweight form that can be used with other frameworks, including OpenLaszlo.
Functional
Functional is a library for functional programming in JavaScript. It defines the standard higher-order functions such as map, filter, and reduce. It defines functions such as curry, rcurry, and partial for partial function application; and compose, guard, and until for function-level programming. It also defines string lambdas, which allow strings such as 'x -> x+1', 'x+1', or '+1' as synonyms for the more verbose function(x) {return x+1}. Source, blog. Demo & docs.

Concurrent JavaScript

Sequentially
Sequentially is a library of temporal and frequency adverbs for JavaScript. It provides methods to queue a function for deferred or periodic execution, and to throttle the rate or number of times that a function can be called. You could think of it as a kind of memoization, where instead of caching the result it modifies when and whether a function is called.
Concurrent
Currently just a partial port of Haskell's MVars, that can each be used to coordinate data flow among periodic functions, and asynchronous callback.

Metaobject Programming

MOP
MOP is a short metaobject programming toolkit. It currently contains functions that temporarily replace the methods on an object or class, or that capture calls to a set of methods and replay them later (for asynchronous AJAX). It also defines a function that defines delegating methods.
Fluently
A construction kit for chained method calls (fluent interfaces), for JavaScript.

jQuery Plugin

jQuery Profile Plugin
Stick this in your page, call $.profile.start() to start profiling calls to $(selector), and then $.profile.done() to stop profiling. It will display statistics for selector calls, by selector. , Source, blog.

Graphics

JavaScript Gradient Roundrects
Draws gradient roundrects without images. Gradients can be applied procedurally or, via the divstyle library, through CSS. This uses the WHATWG canvas element if it's available, and a stack of div elements otherwise. Source, demo, docs.
Bezier Library
Measure and subdivide beziers, and animate points along a path composed of single or multiple beziers. bezier.js, path.js, demo, blog. (This library also works in OpenLaszlo.)
TextCanvas library
TextCanvas is a wrapper for the WHATWG canvas element, that adds a drawString() method for labeling graphs. Source, docs, demo, blog. This shares the API of the OpenLaszlo textdrawview library.)
CFDF-JS
A JavaScript implementation of Chris Coyne's Context Free Design Grammar. This one's in progress; I'm slowly plugging away at it.

Ruby Gems

JavaScript Fu Rails Plugin
JavaScript Fu extends Rails with a few facilities to better integrate JavaScript into Rails development. The notes and statistics rake tasks compass JavaScript files in the public/javascript directory; the call_js RSpec matcher asserts that a string or response contains a script tag, that contains JavaScript that calls the named function or method; and the page.onload page generator method generates code that executes the content of the block upon the completion of page load. Download, blog.
JCON: Ruby Gem for JSON type conformance
JCON (the JavaScript Conformance gem) tests JSON values against ECMAScript 4.0-style type definitions (PDF) such as string?, (int, boolean), or [string, (int, boolean), {x:double, y:double}?]. Download, blog.
OpenLaszlo Ruby Gem
A Ruby interface to the OpenLaszlo compiler. This library allows you to compile OpenLaszlo programs from within Ruby, in order to integrate OpenLaszlo development into Rake or Rails applications.

Rails Plugins

DB Content Plugin
Adds tasks to save and restore database content. Blog and install instructions.
OpenLaszlo Rails Plugin
The OpenLaszlo Rails plugin makes it easy to use OpenLaszlo client-side applications with Rails. It includes generators and scaffolding for creating OpenLaszlo applications, connecting them to Rails REST controllers, and displaying them within Rails views.

Python Libraries

Computational Lexicography

PyWordNet
A Python interface to the WordNet lexical database. (Also see JWordNet for a Java implementation.)
PyFSA
A library for manipulating Finite-State Automata (FSAs). It contains algorithms for constructing, minimizing, and determinizing FSAs, compiling them from regular expressions, and using them as rules in a chart parser.
ChartParser.py (view source)
A simple chart parser (<100 code lines for the parser itself).

OpenLaszlo Libraries

Utilities

Collections-js
JavaScript collection methods. Provides the functionality of the ECMAScript 1.7 Array extensions, and the Prototype collection methods, in a lightweight form that can be used with other frameworks, including OpenLaszlo.
LzOsUtils
Miscellaneous utilities for OpenLaszlo, including jQuery-compatible AJAX functions and a Flash↔JavaScript bridge. Download.
LzTestKit
Extensions to LzUnit (the OpenLaszlo test framework): define mocks, stub, and expectations; run individual test cases; run all the test applets in a directory; test asynchronous functionality within a single test case.

JSON

JSON for OpenLaszlo
An implementation of JSON for the OpenLaszlo platform.

Rails

OpenLaszlo Ruby Gem
A Ruby interface to the OpenLaszlo compiler. This library allows you to compile OpenLaszlo programs from within Ruby, in order to integrate OpenLaszlo development into Rake or Rails applications.
OpenLaszlo Rails Plugin
The OpenLaszlo Rails plugin makes it easy to use OpenLaszlo client-side applications with Rails. It includes generators and scaffolding for creating OpenLaszlo applications, connecting them to Rails REST controllers, and displaying them within Rails views.

Older Code

This was developed in the OpenLaszlo 3.0 timeframe. Some or all of it might be included in OpenLaszlo 4.0.

Bezier Library
Measure and subdivide beziers, and animate points along a path composed of single or multiple beziers. bezier.js, path.js, demo, blog. (This library also works in DHTML.)
LzDrawView patches
Patches to the OpenLaszlo LzDrawView class to make it (more) compatible with the WHATWG <canvas> element, including cubic beziers and CSS colors. This shares the API of the DHTML TextCanvas library.
Textdrawview
An extension to drawview that adds a drawString method for labeling graphs. Source, demo, demo source, blog.
Simple logging
A simple logging facility. This library defines info, debug, warn, and error functions that are compatible with the logging methods in readable, inline console, and fvlogger. This allows libraries that use these functions to be used in both OpenLaszlo programs and in DHTML.
laszlo-utils
Miscellaneous patches and utilities. Currently defines LzKeys.fromEventCode for converting event codes to string characters.

Obsolete

JavaScript

Readable.js
Readable.js is a JavaScript library for displaying string representations that are useful for debugging. For example, {a: 1} displays as {a: 1} instead of as [object Object]; and [1, null, '', [2, 3]] displays as [1, null, '', [2, 3]] instead of as 1,,,2,3. Source, docs, blog. (This library is pretty old. In particular, it predates the wonderful Firebug. I'm not sure if it's still relevant.)
Inline Console
Inline Console adds a console with an evaluation field to the web page that includes it. Source, docs, demo, blog. (This library is pretty old. In particular, it predates the wonderful Firebug. I'm not sure if it's still relevant.)
DivStyle
DivStyle lets you write CSS inside <div> tags. Why? So that you can use properties that CSS doesn't define. The gradient library, for example, uses this to define gradient-start-color, gradient-end-color, and border-radius properties. Source, docs.

Python

Programmers' Utilities

textlines.py (view source)
A read-on-demand substitute for file.readlines(). Returns a randomly accessible sequence (a lazy array) that reads lines as they're requested. Python 2.2 removes some of the need for this: use for line in open(fname) instead.
textopen.py (view source)
Read lines from a text file that uses non-native line separators. This is unnecessary as of Python 2.3.

Python IDE Patches (MacOS)

CommandHistoryPatch.py (view source)
(1) adds keys (ctl-uparrow and ctl-downarrow) to grab previous console commands (you can type the keys repeatedly to scroll back and forth through the command history); (2) changes Return to execute the entire line no matter where within it the selection is positioned; and (3) makes it so that keystrokes in previous lines copy the line before inserting the key. (Read the module comment in the source code for more details.) Download Joe Strout's PatchUtils.py, , and drop CommandHistoryPatch.py onto PythonInterpreter, in order to install it.
icopen.py (view source)
Patches MacOS Python to use the Internet Config file mappings to select the type and creator for a file. Put it in your Python path, and create a file named {Python}:sitecustomize.py that contains:
	import icopen
(If {Python}:sitecustomize.py already exists, just add the 'import' line to it.) The next time you launch PythonInterpreter or Python IDE, the patch will take effect.
SpaceTranslationPatch.py (view source)
Patches the MacOS Python IDE to convert spaces to tabs when a source file is opened, and back to spaces when it's saved. Version 0.2 uses the PatchUtils mechanism to install itself, and recognizes eight-wide tabstopped files. Download Joe Strout's PatchUtils.py, and drop SpaceTranslationPatch onto PythonInterpreter, in order to install it.
Note: This patch in conjunction with Joe Strout's advanced editor patch can cause an error when some files are opened. It's safe but inconvenient to close the error window and continue.

Japanese

edict.py (view source)
An OO interface to the EDICT Japanese/English dictionary. As-is.
kanjidic.py (view source)
An OO interface to the KANJIDIC kanji dictionary. As-is.
kconv.slb (download source)
A MacPPC compilation of the kconv module for Japanese character conversion. Drop it in your Python plugins directory, and invoke it as documented in its README.

Other Languages

JWordNet
A Java OO interface to the WordNet lexical database.
Lisp packages
Smalltalk; probably obsolete by now