module AutoViewModel::Attributes
Public Class Methods
new(locals)
click to toggle source
# File lib/auto_view_model/attributes.rb, line 32 def initialize(locals) _construct_attributes(locals) end
Public Instance Methods
accepts(parameter, default: nil)
click to toggle source
# File lib/auto_view_model/attributes.rb, line 19 def accepts(parameter, default: nil) _optional_attributes[parameter] = default attr_reader parameter end
inherited(subclass)
click to toggle source
Calls superclass method
# File lib/auto_view_model/attributes.rb, line 25 def inherited(subclass) subclass._optional_attributes = _optional_attributes.dup subclass._required_attributes = _required_attributes.dup super end
requires(parameter)
click to toggle source
# File lib/auto_view_model/attributes.rb, line 13 def requires(parameter) _required_attributes << parameter attr_reader parameter end
Private Instance Methods
_construct_attributes(args)
click to toggle source
# File lib/auto_view_model/attributes.rb, line 38 def _construct_attributes(args) _required_attributes.each do |attr| if !args.has_key?(attr) raise ArgumentError.new("Missing view keyword argument :#{attr}") # Simulate required kwargs end instance_variable_set("@#{attr}", args[attr]) end _optional_attributes.each do |attr, default| if args.has_key?(attr) value = args[attr] instance_variable_set("@#{attr}", value) else value = args[attr] instance_variable_set("@#{attr}", default) end end end