Skip to content

Instantly share code, notes, and snippets.

View monzou's full-sized avatar

Takuro Monji monzou

  • Tokyo
View GitHub Profile
class Parser
def initialize(text)
@tokens = text.scan(/\(|\)|[\w\.\*]+/)
end
def next_token
@tokens.shift
end
@monzou
monzou / gist:1021506
Created June 12, 2011 12:41
lazy proxy
class VirtualAccountProxy
def initialize(&block)
@block = block
end
def deposit(amount)
return subject.deposit(amount)
end
@monzou
monzou / gist:1021483
Created June 12, 2011 12:01
Strategy (lambda)
class Report
attr_accessor :title, :text, :formatter
def initialize(&formatter)
@title = "No Title"
@text = "Not Found"
@formatter = formatter
end
@monzou
monzou / gist:1021492
Created June 12, 2011 12:11
Enumerable
class Account
attr_accessor :name, :balance
def initialize(name, balance)
@name = name
@balance = balance
end
def <=>(other)
@monzou
monzou / gist:1021513
Created June 12, 2011 12:52
decorate w/ Module
class SimpleWriter
def write(text)
puts text
end
end
module TimeStampingWriter
package sandbox;
/**
* 与えられた数値を 2 倍にして返す関数です。
*
* @author monzou
*/
public enum DoubleFunction implements Function<Number, Number>, Predicate<Number> {
/** Integer 型を倍にする関数 */
package sandbox.wait;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
@monzou
monzou / gist:1240553
Created September 25, 2011 12:22
AtomicReference で遊ぶ
/**
*
*/
package sandbox.atomic;
import java.util.List;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.ExecutorService;
package hobby;
/**
* 疑似 Option 型です。
*
* @author monzou
* @param <T> 要素の型
*/
public interface Option<T> {
class RowParser
PATTERN = /^\s*([0-9]+)(\s*)(.*)\(cr=(\d+) r=(\d+) w=(\d+) time=(\d+)/
KEYS = [ :ROW, :INDENT, :OPERATION, :CR, :R, :W, :TIME ]
def parse(line)
tokens = line.scan(PATTERN)[0]
format(Hash[*([ KEYS, tokens ].transpose).flatten]) unless tokens.nil?
end