class Lens
Attributes
getter[R]
setter[R]
Public Class Methods
identity()
click to toggle source
# File lib/ruby-optics/lens.rb, line 50 def self.identity @_identity ||= Lens.new( -> (obj) { obj }, -> (new_val, _obj) { new_val } ) end
new(getter, setter)
click to toggle source
# File lib/ruby-optics/lens.rb, line 11 def initialize(getter, setter) @getter = getter @setter = setter end
Public Instance Methods
compose_lens(other_lense)
click to toggle source
# File lib/ruby-optics/lens.rb, line 31 def compose_lens(other_lense) Lens.new( -> (obj) { other_lense.getter.(getter.(obj)) }, -> (new_val, obj) { setter.( other_lense.setter.( new_val, getter.(obj) ), obj ) } ) end
each_lens()
click to toggle source
# File lib/ruby-optics/lens.rb, line 46 def each_lens Each.new(outer_focus = self) end
get(obj)
click to toggle source
# File lib/ruby-optics/lens.rb, line 16 def get(obj) getter.(obj) end
modify(obj, &blk)
click to toggle source
# File lib/ruby-optics/lens.rb, line 24 def modify(obj, &blk) setter.( blk.(getter.(obj)), obj ) end
set(new_val, obj)
click to toggle source
# File lib/ruby-optics/lens.rb, line 20 def set(new_val, obj) setter.(new_val, obj) end