lib/hanami/view/exposure.rb in hanami-view-2.0.0.alpha8 vs lib/hanami/view/exposure.rb in hanami-view-2.1.0.beta1

- old
+ new

@@ -28,38 +28,44 @@ def bind(obj) self.class.new(name, proc, obj, **options) end def dependency_names - if proc - proc.parameters.each_with_object([]) { |(type, name), names| - names << name if EXPOSURE_DEPENDENCY_PARAMETER_TYPES.include?(type) - } - else - [] - end + @dependency_names ||= + if proc + proc.parameters.each_with_object([]) { |(type, name), names| + names << name if EXPOSURE_DEPENDENCY_PARAMETER_TYPES.include?(type) + } + else + [] + end end + def dependencies? + !dependency_names.empty? + end + def input_keys - if proc - proc.parameters.each_with_object([]) { |(type, name), keys| - keys << name if INPUT_PARAMETER_TYPES.include?(type) - } - else - [] - end + @input_keys ||= + if proc + proc.parameters.each_with_object([]) { |(type, name), keys| + keys << name if INPUT_PARAMETER_TYPES.include?(type) + } + else + [] + end end def for_layout? - options.fetch(:layout) { false } + options.fetch(:layout, false) end def decorate? - options.fetch(:decorate) { true } + options.fetch(:decorate, true) end def private? - options.fetch(:private) { false } + options.fetch(:private, false) end def default_value options[:default] end