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