Skip to content

Instantly share code, notes, and snippets.

View werner's full-sized avatar
🏠
Working from home

Werner Echezuría werner

🏠
Working from home
View GitHub Profile
require "./compiler/crystal/**"
while line = gets
compiler = Crystal::Compiler.new
program = Crystal::Program.new
program.target_machine = compiler.target_machine
prelude = program.normalize(Crystal::Require.new("prelude"))
@0x0dea
0x0dea / ova.rb
Created March 23, 2015 20:29
"Real" method overloading in Ruby!
module Ova
# autovivifying map from [class][method][signature] to Method
@@Ova = Hash.new { |h, k| h[k] = Hash.new(&h.default_proc) }
# Wrap #respond_to? for parity with Class#===.
Responder = Struct.new(:method) do
def === obj
obj.respond_to?(method)
end
end
@bsermons
bsermons / gist:ff11bf2fdd2f3a02642d
Last active December 8, 2016 16:11
Elm login example
module Login where
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (on, onClick, targetValue)
import Http
import Json.Encode as Encode exposing (encode)
import Json.Decode as Decode
import String
import Task exposing (Task, andThen, onError)
@bpierre
bpierre / README.md
Last active February 15, 2024 18:40
Switch To Vim For Good

Switch To Vim For Good

NOTE: This guide has moved to https://github.com/bpierre/switch-to-vim-for-good

This guide is coming from an email I used to send to newcomers to Vim. It is not intended to be a complete guide, it is about how I switched myself.

My decision to switch to Vim has been made a long time ago. Coming from TextMate 1, I wanted to learn an editor that is Open Source (so I don’t lose my time learning a tool that can be killed), cross platform (so I can use it everywhere), and powerful enough (so I won’t regret TextMate). For these reasons, Vim has always been the editor I wanted to learn, but it took me several years before I did it in a way that works for me. I tried to switch progressively, using the Janus Vim distribution for a few months, then got back to using TextMate 2 for a time, waiting for the next attempt… here is what finally worked for me.

Original gist with comments: https://gist.github.com/bpierre/0a0025d348b6001394e0

@searls
searls / 1-irb.rb
Created December 3, 2015 14:10
debugging an activeadmin controller method
> Admin::EstimatesController.instance_method(:update).source
" def update(options={}, &block)
object = resource
if update_resource(object, resource_params)
options[:location] ||= smart_resource_url
end
respond_with_dual_blocks(object, options, &block)
end"
@nbouvrette
nbouvrette / inputTypeNumberPolyfill.js
Last active March 28, 2023 11:26
Stand alone JavaScript polyfill allow only numbers on input of type number.
/**
* Stand alone polyfill allow only numbers on input of type number.
*
* While input filtering is already supported by default by some browsers, maximum length has not been implemented by
* any. This script will solve both issue and make sure that only digits can be entered in input elements of type
* number. If the optional attribute `max` is set, it will calculate it's length and mimic the `maxlength` behavior on
* input of type text.
*
* Supports:
*
#!/bin/bash
set -e
GIT_VERSION=2.5.1
LIBEVENT_VERSION=2.0.22
CRYSTAL_VERSION=0.10.2
SHARDS_VERSION=0.5.4
##########################################################
@maxhoffmann
maxhoffmann / Api.elm
Created June 1, 2016 09:23
Effect Manager for token authentication in Elm
-- Api Effect Manager
effect module Api where { command = MyCmd } exposing (request, Response)
import Task exposing (..)
import Http
import Process
import Json.Decode as Json exposing ((:=))
import Native.Api
@dorkrawk
dorkrawk / dijkstras.cr
Created March 27, 2017 05:06
Dijkstra's Algorithm implemented in Crystal
class Node
getter name, edges
def initialize(@name : String)
@edges = {} of Node => Float64
end
def add_edge(node, weight)
@edges[node] = weight
end
@dohomi
dohomi / app.vue
Last active August 21, 2021 19:55
Small file input element based on vuetify
<template>
<file-input v-model="filename" @formData="formData">
<v-btn @click.native="uploadFiles">
</template>
<script>
import fileInput from './file-input.vue'
export default{
components:{fileInput}