Skip to content

Instantly share code, notes, and snippets.

View shdblowers's full-sized avatar
👨‍💻
writing code

Steven Blowers shdblowers

👨‍💻
writing code
View GitHub Profile
@shdblowers
shdblowers / tmux_start.sh
Created December 11, 2019 10:11
Start tmux on shell start
tmux ls && read tmux_session && tmux attach -t ${tmux_session:-default} || tmux new -s ${tmux_session:-default}
JSONPrinter.print(~s/{"hello": "goodbye"}/)
defmodule JSONPrinter do
use FilePrinter
@behaviour FilePrinter
@impl FilePrinter
def parse(str), do: {:ok, "some json " <> str} # ... parse JSON
@impl FilePrinter
def extensions, do: ["json"]
defmodule FilePrinter do
@callback parse(String.t) :: {:ok, term} | {:error, String.t}
@callback extensions() :: [String.t]
defmacro __using__(_opts) do
quote do
def output(parsed_str) do
IO.puts(parsed_str)
end
defmodule Parser do
@callback parse(String.t) :: {:ok, term} | {:error, String.t}
@callback extensions() :: [String.t]
end
defmodule JSONParser do
@behaviour Parser
def parse(str), do: {:ok, "some json " <> str} # ... parse JSON
def extensions, do: ["json"]
defprotocol Size do
@doc "Calculates the size (and not the length!) of a data structure"
def size(data)
end
defimpl Size, for: BitString do
def size(string), do: byte_size(string)
end
defimpl Size, for: Map do
@shdblowers
shdblowers / elixir_ldn_key_takeaways.md
Last active August 25, 2017 10:59
Elixir LDN Key Takeaways

Elixir LDN Key Takeaways

IEx Helpers and Breakpoints

Jose Valim talk about features of Elixir 1.5

Release announcement

  • break!
  • open
defmodule GherkinTests.Contexts.EditUser do
use WhiteBread.Context
alias GherkinTests.State
given_ ~r/^I register a new user called "(?<name>[^"]+)"$/,
fn state, %{name: name} ->
user_details = %{name: name, email: "#{name}@example.com", password: "password123"}
user_id = MyApp.register(user_details)
defmodule GherkinTests.State do
def store(state, key, value), do: Map.put(state, key, value)
def retrieve(state, key), do: Map.get(state, key)
def set_if_not_exists(state, key, value) do
if Map.has_key?(state, key) do
state
else
Feature: Changing user details
Scenario: Changing first name to Bob
Given I register a new user
And I change their "name" to "Brian"
When I change their "name" to "Bob"
Then their "name" should be "Bob"
Scenario: Changing first name to Charlie
Given I register a new user