lib/dry/view/exposures.rb in dry-view-0.2.2 vs lib/dry/view/exposures.rb in dry-view-0.3.0
- old
+ new
@@ -10,30 +10,34 @@
def initialize(exposures = {})
@exposures = exposures
end
+ def key?(name)
+ exposures.key?(name)
+ end
+
def [](name)
exposures[name]
end
def add(name, proc = nil, **options)
exposures[name] = Exposure.new(name, proc, **options)
end
def bind(obj)
- bound_exposures = Hash[exposures.map { |name, exposure|
- [name, exposure.bind(obj)]
- }]
+ bound_exposures = exposures.each_with_object({}) { |(name, exposure), memo|
+ memo[name] = exposure.bind(obj)
+ }
self.class.new(bound_exposures)
end
def locals(input)
tsort.each_with_object({}) { |name, memo|
memo[name] = self[name].(input, memo) if exposures.key?(name)
}.each_with_object({}) { |(name, val), memo|
- memo[name] = val if self[name].to_view?
+ memo[name] = val unless self[name].private?
}
end
private