Skip to content

Instantly share code, notes, and snippets.

View weaver's full-sized avatar

Ben Weaver weaver

View GitHub Profile
## An example of using lxml as a namespace-aware, event-based push
## parser.
import urllib2
from contextlib import closing
from lxml import etree
class Target(object):
def start(self, tag, attr):
@weaver
weaver / starttls.py
Created February 3, 2010 07:40
Example of STARTTLS with Tornado
"""starttls -- an example of wrapping a non-blocking socket with TLS.
Example:
> openssl req -new -x509 -days 365 -nodes -out /tmp/cert.crt -keyout /tmp/cert.key
> python /path/to/this-file.py
starting client: 7
starting server: 8
client said: 'hello'.
server said: "YOU SAID: 'hello'".
#!/usr/bin/env python
"""ply-path -- analysis of an path expression using PLY
Example: ply-path.py 'child::para[position()>1]'
"""
import sys
from ply import lex
import sys, socket, select, errno
from tornado import ioloop, iostream
### Main Program
def main(kind=None):
if not kind or kind not in ('Original', 'Modified'):
usage()
@weaver
weaver / tornado-webdav.py
Created February 26, 2010 20:06
Run a wsgidav WebDAV server through Tornado
#!/usr/bin/env python
"""tornado-webdav.py -- run a wsgidav server through tornado
This script requires tornado commit id
1ae186a504224e9f6cf5375b56f8e26e4774e2a0. The easiest way to get this
patch is to clone the git repository and install using setup.py:
git clone git://github.com/facebook/tornado.git
cd tornado
@weaver
weaver / yaml-omap.py
Created February 28, 2010 03:44
Use Python OrderedDict as YAML omap
import yaml
### OrderedDict from <http://pypi.python.org/pypi/ordereddict/1.1>
# Copyright (c) 2009 Raymond Hettinger
#
# 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,
@weaver
weaver / demo-client.py
Created March 1, 2010 16:20
XMPP client/server that use JSON info queries.
#!/usr/bin/env python
"""demo-client.py -- query the demo server
Example:
## In one terminal:
> python demo-server.py
## In another terminal:
> python demo-client.py '*'
@weaver
weaver / setup.js
Created August 4, 2010 15:33
Manage library and external dependency folders in your Node.JS project.
//// setup.js -- add packages to require.paths
///
/// Manage library folders and external dependency folders in your
/// project by including setup.js in your project. Call it from the
/// beginning of your project's entry-point to adjust require.paths.
///
/// For example, if you're making an application structured like this:
///
/// README
/// app.js # main program
@weaver
weaver / viewMiddleware.js
Created August 9, 2010 23:06
Express middleware for adding template bindings #nodejs
// This is rudimentary view-level middleware for Express. When
// ServerResponse.render() is called, any middleware methods are
// invoked in the order they were registered. They are passed the
// request, response, and local template bindings.
//
// For example:
//
// var connect = require('connect'),
// app = require('express').createServer();
//
@weaver
weaver / form.js
Created August 9, 2010 23:24
Express form validation #nodejs
//// form -- form validation
///
/// Represent the structure of a form and use it to validate form
/// data. Here's a Form that describes a create-account form:
///
/// var SignupForm = form.Form('Sign Up')
/// .text('account', 'Account Name', form.required(/[\w-\.]+/))
/// .email('email', 'Email', form.required())
/// .password('password', 'Password', form.required())
/// .password('confirm', 'Confirm', [form.required(), form.equal('password')]);