Skip to content

Instantly share code, notes, and snippets.

@Cilyan
Cilyan / PKGBUILD
Created Feb 3, 2013
Updated PKGBUILD for PNMixer with fix for automake-1.13 (also removed "|| return 1" as they are no longer needed, makepkg handles this alone)
View PKGBUILD
# Maintainer: Nick Lanham <nick@afternight.org>
pkgname=pnmixer-git
pkgver=20130203
pkgrel=1
pkgdesc="PNMixer is a GTK volume mixer applet that runs in the system tray. \
It is lightweight, works with both pulseaudio and alsa, supports mouse wheel \
volume adjustment.
"
arch=('i686' 'x86_64')
license=('GPL')
@Cilyan
Cilyan / depgraph.py
Created Aug 6, 2015
Simple utility to resolve dependencies between arbitrary (but hashable) objects.
View depgraph.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
class DependencyGraph(object):
"""
Handle a dependency graph. Using :py:meth:`insert`, you add objects
to the graph and connect them with their dependencies, and the
:py:meth:`resolve` function will yield them back so that any object
comes after all its dependencies.
"""
@Cilyan
Cilyan / recursivedescent.py
Last active Aug 29, 2015
Example parser using a stateful lexer and a recursive descent parser. Goal is to parse a C file containing structures, unions and variables (no functions) and some doxygen comments, building an AST. (Originally part of a bigger project.)
View recursivedescent.py
# Nodes for the Abstract Syntax Tree
class Node(object):
def __init__(self):
self.children = []
self.parent = None
for attr in self.__attributes__:
setattr(self, attr, None)
def __repr__(self):
main_attr = self.__attributes__[0]
return "<{class_} {attr_name}={attr_value}".format(
@Cilyan
Cilyan / robot.c
Created Mar 31, 2015
Strange nested construct of structures
View robot.c
#include <stdio.h>
#include <string.h>
/* gcc -Wall -Werror -std=c11 -pedantic -o robotc robot.c */
struct Robot_st {
int pos_x;
int pos_y;
struct BatteryStatus_st {
int capacity;
View count_words.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
import timeit
# http://www.gutenberg.org/cache/epub/1597/pg1597.txt
# Public Domain
text = """
Many years ago, there was an Emperor, who was so excessively fond of
View opti.py
import timeit
import itertools
import operator
import random
import sys
import functools
import pprint
DEBUG = False
@Cilyan
Cilyan / treemodel_unevenrows1.py
Created Mar 15, 2015
This snippet illustrates the creation of a custom GtkTreeModel in PyGTK / Python 2 where column number is different between children and parents.
View treemodel_unevenrows1.py
import pygtk
pygtk.require('2.0')
import gtk
data = [
[('val_a1', 'val_b1', 'val_c1', 'val_d1', 'val_e1'), ('val_x1', 'val_y1', 'val_z1'), ('val_x2', 'val_y2', 'val_z2')],
[('val_a2', 'val_b2', 'val_c2', 'val_d2', 'val_e2'), ('val_x3', 'val_y3', 'val_z3')],
[('val_a3', 'val_b3', 'val_c3', 'val_d3', 'val_e3')],
[('val_a4', 'val_b4', 'val_c4', 'val_d4', 'val_e4'), ('val_x4', 'val_y4', 'val_z4'), ('val_x5', 'val_y5', 'val_z5')],
]
@Cilyan
Cilyan / treemodel_unevenrows_headers.py
Created Mar 15, 2015
This snippet illustrates the creation of a custom GtkTreeModel in PyGTK / Python 2 where column number is different between children and parents, and model generates fake headers in each cell
View treemodel_unevenrows_headers.py
import pygtk
pygtk.require('2.0')
import gtk
data = [
[('val_a1', 'val_b1', 'val_c1', 'val_d1', 'val_e1'), ('val_x1', 'val_y1', 'val_z1'), ('val_x2', 'val_y2', 'val_z2')],
[('val_a2', 'val_b2', 'val_c2', 'val_d2', 'val_e2'), ('val_x3', 'val_y3', 'val_z3')],
[('val_a3', 'val_b3', 'val_c3', 'val_d3', 'val_e3')],
[('val_a4', 'val_b4', 'val_c4', 'val_d4', 'val_e4'), ('val_x4', 'val_y4', 'val_z4'), ('val_x5', 'val_y5', 'val_z5')],
]
@Cilyan
Cilyan / celldatafunc_headers.py
Created Mar 15, 2015
This snippet illustrates how to use a CellDataFunc to add heading to each cells.
View celldatafunc_headers.py
import pygtk
pygtk.require('2.0')
import gtk
data = [
[('val_a1', 'val_b1', 'val_c1', 'val_d1', 'val_e1'), ('', 'val_x1', 'val_y1', 'val_z1', ''), ('', 'val_x2', 'val_y2', 'val_z2', '')],
[('val_a2', 'val_b2', 'val_c2', 'val_d2', 'val_e2'), ('', 'val_x3', 'val_y3', 'val_z3', '')],
[('val_a3', 'val_b3', 'val_c3', 'val_d3', 'val_e3')],
[('val_a4', 'val_b4', 'val_c4', 'val_d4', 'val_e4'), ('', 'val_x4', 'val_y4', 'val_z4', ''), ('', 'val_x5', 'val_y5', 'val_z5', '')],
]
@Cilyan
Cilyan / format.py
Created Mar 15, 2015
A formatter that cleans a text's whitespacing around punctuation, quotes, parenthesis, brackets or curly brackets.
View format.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re # Oh yeah :)
class WhiteFormater:
"""
A formatter that cleans a text's whitespacing around punctuation,
quotes, parenthesis, brackets or curly brackets. There should be no
spaces before a punctuation or a closing delimiter, but at least a space