Skip to content

Instantly share code, notes, and snippets.

View SmilyOrg's full-sized avatar

Miha Lunar SmilyOrg

View GitHub Profile
@SmilyOrg
SmilyOrg / find_closest_sha1.py
Last active June 8, 2016 20:59
Find closest commit in a repo to a working dir without history
#!/usr/bin/env python
import subprocess
import shlex
import sys
import os
import posixpath
import operator
# original by unutbu: http://stackoverflow.com/a/7779979
# revised by Miha Lunar
[asset.protocol] LOG: =====================
[asset.protocol] LOG: = RUNTIME ERROR =
[asset.protocol] LOG: =====================
[asset.protocol] LOG: Error calling loom2d.text.BitmapFont:arrangeChars
[asset.protocol] LOG: Stacktrace:
[asset.protocol] LOG: loom2d.text.BitmapFont.arrangeChars : =[C] : 0
[asset.protocol] LOG: loom2d.text.BitmapFont.createSprite : ./src/loom2d//Text/BitmapFont.ls : 243
[asset.protocol] LOG: loom2d.ui.SimpleLabel.validate : ./src/loom2d//UI/SimpleLabel.ls : 88
[asset.protocol] LOG: loom2d.ui.SimpleLabel.__pset_text : ./src/loom2d//UI/SimpleLabel.ls : 32
[asset.protocol] LOG: ui.GameView.updateScore : .\src\ui\GameView.ls : 146
@SmilyOrg
SmilyOrg / Test.hx
Last active August 29, 2015 13:59
Haxe compiler Array<FunctionArg> @:optional unintuitive typing?
class Test {
static function main() {
var args = [{ name: "abc", type: null }]; // FAILS
//var args = [{ name: "abc", type: null, opt: false, value: null }]; // WORKS
//var args:Array<FunctionArg> = [{ name: "abc", type: null }]; // WORKS
(args:Array<haxe.macro.Expr.FunctionArg>);
/*
@SmilyOrg
SmilyOrg / Reification
Last active August 29, 2015 13:57
An example of what reification (macro <something>) does
// In short, it turns the following code (spoilers!!)
macro { someFunction(lorem, ipsum, dolor); }
// into the following structure (pay no attention to "pos" for now)
{
expr => EBlock([
{
expr => ECall(
{
expr => EConst(CIdent(someFunction)),
@SmilyOrg
SmilyOrg / _output_
Last active August 29, 2015 13:56
cppparser output ast/info and input cpp header file
Test.hx:31: DEFINES
Test.hx:32: {wxLIST_MASK_WIDTH => 0x0020, EVT_LIST_ITEM_ACTIVATED => (id, fn) wx__DECLARE_LISTEVT(ITEM_ACTIVATED, id, fn), wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS => wxEVT_LIST_DELETE_ALL_ITEMS, wxLC_VIRTUAL => 0x0200, wxLIST_HITTEST_TOLEFT => 0x0400, EVT_LIST_COL_RIGHT_CLICK => (id, fn) wx__DECLARE_LISTEVT(COL_RIGHT_CLICK, id, fn), wxLC_AUTOARRANGE => 0x0100, wxLC_MASK_SORT => (wxLC_SORT_ASCENDING | wxLC_SORT_DESCENDING), EVT_LIST_ITEM_SELECTED => (id, fn) wx__DECLARE_LISTEVT(ITEM_SELECTED, id, fn), wxEVT_COMMAND_LIST_END_LABEL_EDIT => wxEVT_LIST_END_LABEL_EDIT, wxEVT_COMMAND_LIST_ITEM_SELECTED => wxEVT_LIST_ITEM_SELECTED, wx__DECLARE_LISTEVT => (evt, id, fn) wx__DECLARE_EVT1(wxEVT_LIST_ ## evt, id, wxListEventHandler(fn)), EVT_LIST_DELETE_ALL_ITEMS => (id, fn) wx__DECLARE_LISTEVT(DELETE_ALL_ITEMS, id, fn), wxEVT_COMMAND_LIST_ITEM_FOCUSED => wxEVT_LIST_ITEM_FOCUSED, wxLIST_HITTEST_ONITEMSTATEICON => 0x0200, wxEVT_COMMAND_LIST_BEGIN_DRAG => wxEVT_LIST_BEGIN_DRAG, wxLIST_STATE_SELECTED => 0