Skip to content

Instantly share code, notes, and snippets.

@nanki
nanki / grepedit.vim
Created September 19, 2011 19:51
vim syntax file for grepedit.
function! s:syntax(name, ext)
let l:separator = "^# ============================================================ "
let l:ext = empty(a:ext) ? "" : "¥¥.".a:ext
let l:cmd = "syntax region GEBlock".a:name
¥." matchgroup=FileLine "
¥."start=/".l:separator.".*¥¥v".l:ext."$/ "
¥."end=/¥¥(".l:separator.".*$¥¥)¥¥@=¥¥|¥¥%$/ "
¥."keepend transparent contains=FileLine"
let l:cmd .= empty(a:name) ? "" : ",@".a:name
@nanki
nanki / ascii_eq.rb
Created September 20, 2011 16:33
ASCII equalizer.
require 'ffi'
module FFI::PortAudio
module API
extend FFI::Library
ffi_lib 'portaudio'
Int16 = 0x8
FramesPerBufferUnspecified = 0
@nanki
nanki / olm.rb
Created October 21, 2011 18:17
One liner music player for Ruby. http://hitode909.appspot.com/one-liner-music/
require 'rubygems'
require 'ffi-portaudio'
def safe
r = nil
Thread.new {
$SAFE = 4
r = yield
}.join
r
@nanki
nanki / ffi-ruby.rb
Created November 3, 2011 13:59
FFI bridge to libruby.
require 'ffi'
module FFI::Ruby
class Value
class << self
extend ::FFI::Library
ffi_lib 'ruby'
attach_function :rb_obj_id, [:pointer], :pointer
attach_function :rb_num2long, [:pointer], :long
@nanki
nanki / findup.rb
Created November 10, 2011 14:06
find a file upward.
#!/usr/bin/env ruby
require 'pathname'
pattern = ARGV.shift
dir = ARGV.shift || Dir.pwd
Pathname(dir).expand_path.ascend{|d| puts Dir.glob(d + pattern)}
@nanki
nanki / mail
Created November 14, 2011 06:11
【お知らせ】関西闇Ruby会議
関西闇Ruby会議の参加者の方へ
3日連続でお疲れ様でした。いま僕はVim勉強会と関西闇Ruby勉強会と関西闇Ruby勉強会公式残業会の全てを終えて帰途についている電車の中でこのメールを書いているところです。
関西闇Ruby会議は家に帰ってブログを書いて投稿するまでが関西闇Ruby会議です。ブログを投稿するだけでなく、ハッシュタグ
#kyami
をつけてtwitterなどにそのURLを投稿すると、後日RubyKaigi Nikkiなどに書かれる予定のまとめ記事からリンクされるので、便利です。
@nanki
nanki / java.hs
Created January 7, 2012 12:00
a parser for java class declaration.
import qualified Text.Parsec as P
import Control.Applicative
import Control.Monad (liftM, liftM2, msum)
data AST =
ClassDeclaration AST AST (Maybe AST) (Maybe AST) (Maybe AST) |
Identifier String |
Keyword String |
Comment String |
ClassModifiers [AST] |
@nanki
nanki / monad_plus.hs
Created January 8, 2012 07:35
Parsec golf.
import qualified Text.Parsec as P
import Control.Applicative
import Control.Monad (msum)
main = do
P.parseTest primitive0 "short"
P.parseTest primitive1 "byte"
P.parseTest primitive2 "char"
primitive0 = do
<!--
java.awt.Color -> System.Drawing.Color
new Color(int,int,int) -> System.Drawing.Color.FromArgb(255, @1, @2, @3)
.black -> .BLACK
.setEnabled(boolean) -> .Enabled = ...
-->
<mapping>
<packages>
<package name="java.awt">
@nanki
nanki / mappingml.rb
Created February 12, 2012 18:06
sugary mappingml.
#!/usr/bin/env ruby
require 'nokogiri'
SEPARATOR = '->'
class ClassInfo
attr_reader :packageName, :name
def initialize(qualified_name)
names = qualified_name.split '.'