Skip to content

Instantly share code, notes, and snippets.

Carl Smith carlsmith

Block or report user

Report or block carlsmith

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
carlsmith /
Last active Mar 27, 2018
Interleaved 2 of 5, SVG Barcode Generator
def render(digits):
'''This function converts its input, a string of decimal digits, into a
barcode, using the interleaved 2 of 5 format. The input string must not
contain an odd number of digits. The output is an SVG string.
Wikipedia [ITF Format]:
top = '<svg height="58" width="{0}" style="background:white">'
carlsmith /
Last active Aug 29, 2015
Launch one SL4A script from inside another one.
from android import Android
droid = Android()
def launch_script(path, visible=False):
visibilty = 'FORE' if visible else 'BACK'
activity = 'com.googlecode.android_scripting.action.LAUNCH_{0}GROUND_SCRIPT'.format(visibilty)
extras = {'com.googlecode.android_scripting.extra.SCRIPT_PATH': path}
package = 'com.googlecode.android_scripting'
classname = 'com.googlecode.android_scripting.activity.ScriptingLayerServiceLauncher'
carlsmith /
Last active Jan 19, 2017
Main function decorator (for Python 2 and 3).
import inspect
def main(function):
locale = inspect.stack()[1][0].f_locals
module = locale.get("__name__", None)
if module == "__main__":
locale[function.__name__] = function
carlsmith /
Last active Aug 11, 2016
IPython 5 startup file that makes the cursor wrap around lines when editing multiline input.
def set_terminal_keybindings():
"""If IPython is running in the classic terminal mode, this function
is called once, and is not called otherwise. We could have just used
an if-block, but this way also keeps the variables local."""
from prompt_toolkit.keys import Keys
from prompt_toolkit.filters import Filter
class StartOfLine(Filter):
carlsmith /
Last active Feb 5, 2019
A small collection of generic CoffeeScript helper functions.
# shorthand wrapper for `console.log`
put = (args...) -> console.log args...
# initialise undefined vars: `[a, b, c] = init 3`
init = (amount) -> undefined for n in [1..amount]
# decorator for defining constructors (see
factory = (mutator) -> (args...) ->
mutator (self = Object.create null), args...
return self
carlsmith /
Last active Jan 19, 2017
IPython line magic for launching a static fileserver. It uses Ruby as the Python fileserver sucks a bit.
import os
from IPython.core.magic import register_line_magic as line_magic
def fileserver(args):
path, port = args.split(" ") if args else (".", "8080")
os.system('ruby -run -ehttpd "{}" -p{}'.format(path, port))
carlsmith /
Last active Aug 12, 2016
IPython line magic for running a Keyboard Maestro macro by name.
import os
from IPython.core.magic import register_line_magic as line_magic
def maestro(name):
quote = lambda text: '"{}"'.format(text)
command = " osascript -e 'tell application {0} to do script {1}' "
os.system(command.format(quote("Keyboard Maestro Engine"), quote(name)))
carlsmith /
Last active Apr 5, 2017
IPython line magic that adds highlighting to `less` using `pygmentize` - basically a coloured `cat` that scrolls well.
def nyan(path): os.system("pygmentize -g {0} | less -R".format(path))
carlsmith / ipython.jsf
Created Feb 23, 2017
IPython Syntax Highlighting for `ne` (the Nice Editor) and JOE (Joe's Own Editor).
View ipython.jsf
# IPython Highlighting for ne and JOE.
=Comment white
=Docstring green
=DocstringLabel magenta
=DocEscape bold yellow
=StringLiteral green
=Constant magenta
=Escape bold yellow
carlsmith /
Created Apr 5, 2017
A Python function that does multiple string replace ops in a single pass.
import re
def replace(string, substitutions):
substrings = sorted(substitutions, key=len, reverse=True)
regex = re.compile('|'.join(map(re.escape, substrings)))
return regex.sub(lambda match: substitutions[], string)
You can’t perform that action at this time.