class RestrictedStruct
Constants
- ACCESS_LEVELS
- ACCESS_RESTRICTIONS
- VERSION
Public Class Methods
defaults()
click to toggle source
# File lib/restricted_struct/definition.rb, line 15 def defaults @defaults ||= {} end
new(access_level, *properties)
click to toggle source
Calls superclass method
# File lib/restricted_struct/definition.rb, line 9 def new(access_level, *properties) properties, defaults = Support.extract_keyword_args(properties) properties.concat(defaults.keys) super(*properties, &access_restriction(access_level, properties)).with_defaults(defaults) end
new(*values)
click to toggle source
Calls superclass method
# File lib/restricted_struct/definition.rb, line 43 def initialize(*values) values, keyword_args = Support.extract_keyword_args(values) members.each_with_index do |name, index| # 1.8 compatibility key = name.to_sym values[index] = self.class.defaults[key] if nil == values[index] values[index] = keyword_args[key] if keyword_args.has_key?(key) end super(*values) end
Protected Class Methods
with_defaults(defaults)
click to toggle source
# File lib/restricted_struct/definition.rb, line 21 def with_defaults(defaults) @defaults = defaults self end
Private Class Methods
access_restriction(access_level, properties)
click to toggle source
# File lib/restricted_struct/definition.rb, line 28 def access_restriction(access_level, properties) builder_strategy(access_level).call(accessor_methods(properties)) end
accessor_methods(properties)
click to toggle source
# File lib/restricted_struct/definition.rb, line 38 def accessor_methods(properties) properties + properties.map { |name| :"#{name}=" } end
builder_strategy(access_level)
click to toggle source
# File lib/restricted_struct/definition.rb, line 32 def builder_strategy(access_level) ACCESS_RESTRICTIONS.fetch(access_level) do raise ArgumentError, "access_level can be only one of #{ACCESS_LEVELS}" end end