Skip to content

Instantly share code, notes, and snippets.

View srdjan's full-sized avatar

⊣˚∆˚⊢ srdjan

View GitHub Profile
using SimplR.Resources;
using SimplR.Hypermedia;
using SimplR.Services;
using App.Domain.Users;
namespace App.Resources.Users {
public class UsersResource : Resource<User> {
public override List<User> Get() {...}
public override User Get(int id) {...}
public override User Post(User user) {...}
using Simplr.Middleware;
namespace App.Runner {
internal static class Program {
static void Main() {
var _pipeline = new Pipeline()
.Use(new ResourceResolver())
.Use(new HypermediaValidator())
.Use(new ApiCall())
.Use(new HypermediaUpdater())
using SimplR.Resources;
using SimplR.Hypermedia;
using SimplR.Services;
using App.Domain.Users;
namespace App.Handlers.Users {
public class UsersHandler : IHandler<User> {
public List<User> Query(Expression expr) {...}
public void CreateCommand(User user) {...}
public void UpdateCommand(User user) {...}

Keybase proof

I hereby claim:

  • I am Srdjan on github.
  • I am srdjan (https://keybase.io/srdjan) on keybase.
  • I have a public key whose fingerprint is 2921 E5C1 5268 9C43 CBC2 F09B 2795 2062 AEFD BC91

To claim this, I am signing this object:

@srdjan
srdjan / hamlet-todo-model.coffee
Last active August 29, 2015 14:04
Hamlet: expressive, intuitive templates (http://hamlet.coffee)
//- Model: ----------------------------------------
items = Observable []
completeAll = Observable(false)
completeAll.observe (val) ->
items.forEach (i) ->
i.checked(val)
model =
removeFinished: ->
@srdjan
srdjan / functional-reffactoring.js
Last active August 29, 2015 14:04
Simple functional refactoring
// original code
function printTrace(log) {
for (var i = 0; i < log.length; i++) {
var entry = log[i];
var args = entry.args;
var argstring = "(";
for (var j = 0; j < args.length - 1; j++) {
argstring += args[j].toString() + ",";
}
if (args.length > 0) {
function run(ctx) {
var i;
for(i=0; i<stash.length; i++) {
if(logBefore) {
trace(stash[i], ctx);
}
stash[i](ctx);
if(logAfter) {
trace(stash[i], ctx);
}
var Either = require('data.either');
var log = console.log;
var handlers = [];
function use(f, p, t) {
handlers.push({ func: f, pred: p || false, trace: t || false});
}
// f, ep, m(a) -> m(b)
var service = require('resto.service');
var pipeline = require('resto.pipeline');
var http = require('resto.httpserver');
var authenticator = require('resto.middleware.authn');
var authorizer = require('resto.middleware.authr');
var resolver = require('resto.middleware.resolver');
var invoker = require('resto.middleware.invoker');
var converter = require('resto.middleware.hal');
//- dsl
var withMany = require('resto.realtionships').hasMany;
//-- monad interface
//--
public interface IMonad<T> {
//IMonad<T> From(T @value);//note: implemented as constructor
IMonad<T2> Bind<T2>(Func<T, T2> f) where T2 : class;
// simple access the wrapped value(s), optional but helpfull :)
string Show();
}