Skip to content

Instantly share code, notes, and snippets.

@AaronLasseigne
AaronLasseigne / making_an_mruby_gem.md
Last active April 21, 2020 19:10
Making an mruby gem

Making an mruby gem

Official Doc

mrbgem.rake

spec.dir: The top level directory where the mrbgem.rake file exists.

Dynamic Linking Your Library

class Scrabble
LETTER_VALUES = [
[ 1, 'aeioulnrst'],
[ 2, 'dg'],
[ 3, 'bcmp'],
[ 4, 'fhvwy'],
[ 5, 'k'],
[ 8, 'jx'],
[10, 'qz']
].flat_map { |(score, letters)| letters.chars.product([score]) }.to_h
require 'continuation'
class Clojure
def self.loop(*initial_args, &block)
cont = nil
args = callcc do |c|
class << (cont = c)
alias :recur :call
end

Keybase proof

I hereby claim:

  • I am AaronLasseigne on github.
  • I am aaronlasseigne (https://keybase.io/aaronlasseigne) on keybase.
  • I have a public key whose fingerprint is 374C EE0A E3EE 594A 2F7F 4C61 0BE7 C118 46F3 4279

To claim this, I am signing this object:

module Clojure
def self.repeat(x, n = nil)
[x].cycle(n)
end
def self.repeatedly(n = nil, &block)
i = n || Float::INFINITY
Enumerator.new(n) do |yielder|
while i > 0
yielder << block.call
@AaronLasseigne
AaronLasseigne / identicon.clj
Last active May 18, 2018 14:52
identicon.clj
(ns identicon.core
(:require [digest])
(:require [clojure.string :as str])
(import java.io.File)
(import java.awt.Color)
(import java.awt.image.BufferedImage)
(import javax.imageio.ImageIO))
(def tiles-per-side 6)
(def total-tiles
@AaronLasseigne
AaronLasseigne / roman.exs
Last active August 14, 2019 14:23
Roman Numerals Code Kata in Elixir
defmodule RomanNumeral do
def convert(n) when n >= 1000, do: remove_and_continue(n, "M", 1000)
def convert(n) when n >= 900, do: remove_and_continue(n, "CM", 900)
def convert(n) when n >= 500, do: remove_and_continue(n, "D", 500)
def convert(n) when n >= 400, do: remove_and_continue(n, "CD", 400)
def convert(n) when n >= 100, do: remove_and_continue(n, "C", 100)
def convert(n) when n >= 90, do: remove_and_continue(n, "XC", 90)
def convert(n) when n >= 50, do: remove_and_continue(n, "L", 50)
def convert(n) when n >= 40, do: remove_and_continue(n, "XL", 40)
def convert(n) when n >= 10, do: remove_and_continue(n, "X", 10)