class Optics::Lens
Public Class Methods
new(getter, setter)
click to toggle source
# File lib/optics.rb, line 5 def initialize(getter, setter) @getter = getter @setter = setter end
Public Instance Methods
combine(other)
click to toggle source
# File lib/optics.rb, line 18 def combine(other) Lens.new( -> (subject) { other.get(get(subject)) }, -> (subject, value) { set(subject, other.set(get(subject), value)) } ) end
get(subject)
click to toggle source
# File lib/optics.rb, line 14 def get(subject) @getter.(subject) end
set(subject, value)
click to toggle source
# File lib/optics.rb, line 10 def set(subject, value) @setter.(subject, value) end