Skip to content

Instantly share code, notes, and snippets.

lapis = require "lapis"
db = require "lapis.db"
html = require "lapis.html"
queries = require "queries"
config = require("lapis.config").get!
widgets = require "views.widgets"
import get_redis from require "lapis.redis"
--import cached from require "lapis.cache"
import render_html from require "lapis.html"
import notNil from require "utils"
// ES6 Version with Lodash
/*
titleCase('mcdonald') => McDonald
titleCase('macdonald') => MacDonald
titleCase("o'brien") => O'Brien
*/
var capitalize = (ignore, pre, rest) => _.capitalize(pre) + _.capitalize(rest)
var titleCase = _.flow(
@honewatson
honewatson / extract.nim
Last active May 23, 2016 22:43
Extract or unpack seq to variables
import macros
macro extract(args: varargs[untyped]): typed =
## assumes that the first expression is an expression
## which can take a bracket expression. Let"s call it
## `arr`. The generated AST will then correspond to:
##
## let <second_arg> = arr[0]
## let <third_arg> = arr[1]
## ...
result = newStmtList()
function _filterBodyDOM(dom) {
while (child = dom.firstChild) {
if (!this.isBadTopTag(child)) break;
dom.removeChild(child);
}
while (child = dom.lastChild) {
if (!this.isBadBottomTag(child)) break;
dom.removeChild(child);
}
}
@honewatson
honewatson / access.lua
Created August 13, 2016 21:19 — forked from josegonzalez/access.lua
Simple lua file enabling oauth support for nginx via nginx-lua and access_by_lua.
- certain endpoints are always blocked
if nginx_uri == "/_access_token" or nginx_uri == "/_me" then
ngx.exit(403)
end
-- import requirements
local cjson = require "cjson"
-- setup some app-level vars
local app_id = "APP_ID"
@honewatson
honewatson / peg.py
Created September 16, 2016 00:30 — forked from orlp/peg.py
PEG parser in Python.
from __future__ import unicode_literals
import sys
# We only use unicode in our parser, except for __repr__, which must return str.
if sys.version_info.major == 2:
repr_str = lambda s: s.encode("utf-8")
str = unicode
else:
repr_str = lambda s: s
@honewatson
honewatson / ImmutableDeepMerge.js
Created September 20, 2016 22:21
Immutable Deep Merge
export function isObject(item) {
return (item && typeof item === 'object' && !Array.isArray(item) && item !== null);
}
export default function mergeDeep(target, source) {
let output = Object.assign({}, target);
if (isObject(target) && isObject(source)) {
Object.keys(source).forEach(key => {
if (isObject(source[key])) {
if (!(key in target))
@honewatson
honewatson / SetDepthDot.js
Created September 20, 2016 22:28
Set Object Value from Dot Notation
function setDepth(obj, path, value) {
var tags = path.split("."), len = tags.length - 1;
for (var i = 0; i < len; i++) {
obj = obj[tags[i]];
}
obj[tags[len]] = value;
}
@honewatson
honewatson / json.nim
Created October 3, 2016 00:29
JSON Response Nim AsyncHttpServer
import asynchttpserver, asyncdispatch
import json
import cgi
var server = newAsyncHttpServer()
proc handler(req: Request) {.async.} =
let msg = %* {"message": "hello world"}
await req.respond(Http200, $msg, newHttpHeaders([("Content-Type","application/json")]))
@honewatson
honewatson / app.moon
Created October 7, 2016 22:20
Moonscript Lapis cached widget examle
lapis = require "lapis"
db = require "lapis.db"
html = require "lapis.html"
queries = require "queries"
config = require("lapis.config").get!
widgets = require "views.widgets"
import get_redis from require "lapis.redis"
import render_html from require "lapis.html"
import notNil from require "utils"