Class: RestrictedStruct

Inherits:
Struct
  • Object
show all
Defined in:
lib/restricted_struct/definition.rb

Defined Under Namespace

Modules: Support

Constant Summary collapse

ACCESS_RESTRICTIONS =
{
  :private => lambda { |methods| lambda { |*| private *methods } },
  :protected => lambda { |methods| lambda { |*| protected *methods } }
}
ACCESS_LEVELS =
ACCESS_RESTRICTIONS.keys
VERSION =
"0.2.1"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*values) ⇒ RestrictedStruct

Returns a new instance of RestrictedStruct.



43
44
45
46
47
48
49
50
51
52
# 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

Class Method Details

.defaultsObject



15
16
17
# File 'lib/restricted_struct/definition.rb', line 15

def defaults
  @defaults ||= {}
end

.new(access_level, *properties) ⇒ Object



9
10
11
12
13
# 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