Skip to content

Instantly share code, notes, and snippets.

@padde
padde / keybase.md
Created July 19, 2015 13:17
Keybase proof

Keybase proof

I hereby claim:

  • I am padde on github.
  • I am padde (https://keybase.io/padde) on keybase.
  • I have a public key whose fingerprint is 7B8E 3327 8E52 E3E1 8392 92AE CCBB 382F 5F9D 1786

To claim this, I am signing this object:

@padde
padde / regex_interpolation.exs
Last active August 29, 2015 14:22
Elixir Regex Interpolation – do not use in production
defmodule Regex.InterpolationError do
defexception [:message]
end
defmodule Regex.Interpolation do
def wrap(regex = %Regex{opts: modifiers}) do
Regex.source(regex)
|> do_wrap(modifiers)
end
@padde
padde / unicode_pattern_matching.exs
Created June 5, 2015 17:10
Elixir Unicode Pattern Matching
iex> <<first, rest::binary>> = "☺ how dare you, unicode!"
"☺ how dare you, unicode!"
iex> <<first>>
<<226>>
iex> rest
<<152, 186, 32, 104, 111, 119, 32, 100, 97, 114, 101, 32, 121, 111, 117, 44, 32, 117, 110, 105, 99, 111, 100, 101, 33>>
@padde
padde / devise.rb
Last active August 29, 2015 14:22
Rails + Devise + RSpec = ❤️
# spec/support/devise.rb
module DeviseFeatureHelpers
def sign_in(user = nil, scope = :user)
user ||= build_stubbed :user
login_as user, scope: scope
end
end
RSpec.configure do |config|
@padde
padde / mutate.exs
Created March 24, 2015 06:25
Stream.mutate/3
defmodule MyStream do
def mutate(enum, user_acc, user) do
step = fn val, _acc -> {:suspend, val} end
next = &Enumerable.reduce(enum, &1, step)
&do_mutate([], user_acc, user, next, &1, &2)
end
defp do_mutate(values, user_acc, user, next, {:suspend, acc}, fun) do
{:suspended, acc, &do_mutate(values, user_acc, user, next, &1, fun)}
end
@padde
padde / partial_application.rb
Last active August 29, 2015 14:13
Proc#with – Partial Application
require 'forwardable'
class Proc
def with(*arguments, &block)
proc do |*remaining_arguments|
call(*remaining_arguments, *arguments, &block)
end
end
end
@padde
padde / post.rb
Created January 8, 2015 15:05
Post model with pg_search
class Post < ActiveRecord::Base
include PgSearch
pg_search_scope :search,
against: :body,
using: {tsearch: {dictionary: 'german'}}
end
@padde
padde / tsvector_german.sql
Created January 8, 2015 15:04
to_tsvector (german)
SELECT to_tsvector('german', 'Ich würde gerne schwimmen gehen');
------------------------------
'geh':5 'gern':3 'schwimm':4
@padde
padde / tsvector_german_broken.sql
Created January 8, 2015 15:04
to_tsvector (german with english analysis)
SELECT to_tsvector('Ich würde gerne schwimmen gehen');
----------------------------------------------------
'gehen':5 'gern':3 'ich':1 'schwimmen':4 'würde':2
@padde
padde / tsvector.sql
Created January 8, 2015 15:03
to_tsvector
SELECT to_tsvector('I like to go swimming');
--------------------------
'go':4 'like':2 'swim':5