lib/lou.rb in lou-0.0.1 vs lib/lou.rb in lou-0.1.0
- old
+ new
@@ -1,62 +1,36 @@
require 'lou/version'
+require 'lou/transformer'
module Lou
def self.extended(base)
base.class_eval do
@transforms = []
end
end
- def transform(mapping)
- @transforms << mapping
- self
+ def transform
+ Transformer.new.tap do |t|
+ @transforms << t
+ end
end
def apply(input)
output = deep_clone(input)
@transforms.each do |t|
output = t.apply(output)
end
output
end
- def undo(output)
+ def reverse(output)
input = deep_clone(output)
@transforms.reverse_each do |t|
- input = t.undo(input)
+ input = t.reverse(input)
end
input
end
def deep_clone(obj)
Marshal.load(Marshal.dump(obj))
- end
-
- def forward(&block)
- Transformer.new(&block)
- end
-
- class Transformer
- def initialize(&block)
- forward(&block)
- end
-
- def forward(&block)
- @forward = block
- self
- end
-
- def backward(&block)
- @backward = block
- self
- end
-
- def apply(input)
- @forward.nil? ? input : @forward.call(input)
- end
-
- def undo(output)
- @backward.nil? ? output : @backward.call(output)
- end
end
end