Skip to content

Instantly share code, notes, and snippets.

@shawnchin
shawnchin / shBrushFortran.js
Created August 10, 2010 14:31
Fortran brush for SyntaxHighlighter
/*
* Fortran brush for SyntaxHighlighter
*
* SyntaxHighlighter by Alex Gorbatchev
* http://alexgorbatchev.com/
*
* Fortran brush by Shawn Chin
* Last update : 16 April 2011
* Homepage : http://shawnchin.github.com
* Brush page : http://gist.github.com/gists/517349
import os
import inspect
import logging
import unittest
from glob import glob
def locate_suites(test_dirname="tests", test_file_prefix="test_"):
"""
Recursively search the test_dirname directory for *.py files that starts
with test_file_prefix and returns all test suites found within them.
import sys, math
p,t,w=map(int,sys.argv[1:]) # read input
grid = [[' ']*(w+1) for i in range(0,w+1)] # prepare grid
def plot(x,y):
"""plots point on grid"""
grid[int(round(x))][int(round(y))]='x'
def line (x0, y0, x1, y1):
"""draw line using bresenham's line algorithm"""
// return data-* attributes of a node as a dict
function getDataAttributes(node) {
var vstr = $().jquery.split(".");
var v0 = parseInt(vstr[0]) || 0,
v1 = parseInt(vstr[1]) || 0,
v2 = parseInt(vstr[2]) || 0;
// jQuery >= 1.4.4 has built in op to do this.
if ( v0 > 1 || (v0 == 1 && v1 > 4) || (v0 == 1 && v1 == 4 && v2 >= 4)) {
@shawnchin
shawnchin / prefixmatch.py
Created December 10, 2010 16:23
a trie-based prefix matching utility
#!/usr/bin/env python
# Description: a trie-based prefix matching utility
# Author: Shawn Chin (http://shawnchin.github.com)
#
# Usage:
# keys = ["BANANA", "APPLE", "DURIAN", "MANGO"]
# m = PrefixMatch(keys)
# m.add_key("ORANGE") # extend list of keys
# m.match("BANANA") # returns True (matches key)
# m.match("ORANGEBOY") # returns True (starts with key)
@shawnchin
shawnchin / ls-svn.py
Created January 12, 2011 12:24
(P.O.C) script to colorise ls output based on svn status
#!/usr/bin/env python
"""
Author: Shawn Chin (http://shawnchin.github.com)
Description: colorise output of `ls` based on svn status
Note:
This is a proof-of-concept implementation and only performs
a basic `ls` call in the current working directory.
"""
@shawnchin
shawnchin / mydatetime.py
Created January 27, 2011 17:39
custom time delta that attempts returns deltas in terms of years, months, days
#!/usr/bin/env python
from datetime import timedelta
def time_delta(d1,d2):
"""
Returns time delta as the following tuple:
("before|after|same", "years", "months", "days")
"""
if d1 == d2:
return ("same",0,0,0)
/* scroll page so obj is visible in current view with
* a _minimum_ bottom margin of "bottom_margin" (default:20).
* -- requires jQuery --
*/
function scroll_to(obj, bottom_margin, speed) {
bottom_margin = bottom_margin || 20;
var target_height = obj.height() + bottom_margin;
var visible_height = $(window).height();
var scroll_top = obj.offset().top;
if (target_height < visible_height) {
#!/usr/bin/env python
import itertools
from dateutil import parser
jumpwords = set(parser.parserinfo.JUMP)
keywords = set(kw.lower() for kw in itertools.chain(
parser.parserinfo.UTCZONE,
parser.parserinfo.PERTAIN,
(x for s in parser.parserinfo.WEEKDAYS for x in s),
(x for s in parser.parserinfo.MONTHS for x in s),
@shawnchin
shawnchin / shmemctypes.py
Created September 16, 2011 15:09
shm_open() version of multiprocessing.sharedctypes.RawArray
#
# Based on multiprocessing.sharedctypes.RawArray
#
# Uses posix_ipc (http://semanchuk.com/philip/posix_ipc/) to allow shared ctypes arrays
# among unrelated processors
#
# Usage Notes:
# * The first two args (typecode_or_type and size_or_initializer) should work the same as with RawArray.
# * The shared array is accessible by any process, as long as tag matches.
# * The shared memory segment is unlinked when the origin array (that returned