Skip to content

Instantly share code, notes, and snippets.

View kana-sama's full-sized avatar
🌚

kana kana-sama

🌚
View GitHub Profile
@kana-sama
kana-sama / source.ex
Last active December 22, 2016 01:27
metaprogramming in elixir
defmodule BaseApp do
def new_conn do
%{}
|> put_status(:ok)
end
def render(%{status: status} = conn) do
IO.puts "Status: #{status}"
conn
end
defmodule BaseApp do
def new_conn do
%{status: 200}
end
def render(%{status: status} = conn) do
IO.puts "Status: #{status}"
conn
end
@statuses [
ok: 200,
bad_request: 400,
not_found: 404
]
def put_status(conn, status) when is_atom(status) do
put_status(conn, @statuses[status])
end
@kana-sama
kana-sama / 3.ex
Last active December 22, 2016 01:38
@statuses [
ok: 200,
bad_request: 400,
not_found: 404
]
def put_status(conn, status) when is_atom(status) and not is_nil(status) do
put_status(conn, @statuses[status])
end
def put_status(conn, :ok) do
put_status(conn, 200)
end
def put_status(conn, :bad_request) do
put_status(conn, 400)
end
def put_status(conn, :not_found) do
put_status(conn, 404)
statuses = [
ok: 200,
bad_request: 400,
not_found: 404
]
for {status, status_code} <- statuses do
def put_status(conn, unquote(status)) do
put_status(conn, unquote(status_code))
end
@kana-sama
kana-sama / 1.rb
Last active December 22, 2016 21:49
name = "andrew"
last_name = "krasnobaev"
long_full_name = "#{name} #{last_name}"
hello
world
var fp = require("./fp")
var foldl = fp.foldl
var keys = fp.keys
var curry = fp.curry
var pipe = fp.pipe
var log = fp.log
var join = fp.join
var map = fp.map
f a b =
let
c = 10
in
a + b + c